Mathiasman Skrevet 14. april 2007 Del Skrevet 14. april 2007 Jeg skal lage noe som en bursdagskalender. Jeg skal ha en oversikt over fem neste bursdager på forsiden av hjemmesiden min. Så skal disse datoene og navnene bli hentet frem av et annet dokument. Hvordan kan jeg kode dette? Lenke til kommentar
Ståle Skrevet 14. april 2007 Del Skrevet 14. april 2007 Lagre datoene og navnene i en database. Så, hvis du vil gjøre det vanskelig, lager du en funksjon i en egen PHP-fil som du inkluderer der du vil ha datoene. Og så skriver du bursdag('Janne'); feks Eller du bare kan ha hele koden der du vil vise datoene, hvis du heller har lyst til det. Eller du kan bruke en tekstfil. Hvis du velger, så skal jeg lage funksjonen Lenke til kommentar
Mathiasman Skrevet 14. april 2007 Forfatter Del Skrevet 14. april 2007 Er ikke helt sikker på hvordan jeg skal gjøre det her. Er bare sikker på hvordan jeg vil ha det. På siden blir det da noe som dette: Neste fem bursdager: 25.4.07 Janne 1.5.07 Tobias Og så videre. Så etter 25.4.07 kommer Tobias' bursdag øverst. Og Jannes forsvinner. Dessuten hadde det vært fint at den 25.4.07 for eksempel, så hadde det stått "Gratulerer med dagen, Janne!" Er dette mulig? Lenke til kommentar
Ståle Skrevet 14. april 2007 Del Skrevet 14. april 2007 (endret) Yes. Holder på å kode nå. Redigerer denne posten når jeg er ferdig. <?php // DATABASE //____________________________________________________________________________________________ $server = 'localhost'; // MySQL hostname $username = 'test'; // MySQL username $password = 'test'; // MySQL password $dbname = 'test'; // MySQL db name $db = mysql_connect("$server", "$username", "$password") or die(mysql_error()); mysql_select_db($dbname) or die(mysql_error()); ?> <?php $dato_i_dag = date("Y-m-d"); $q = mysql_query("SELECT navn, dato, day(dato) AS dag, month(dato) AS maned FROM bursdager WHERE dato>='$dato_i_dag' ORDER BY dato ASC LIMIT 5"); while($r=mysql_fetch_assoc($q)) { if($dato_i_dag==$r['dato']) { echo 'Gratulerer med dagen, '.$r['navn']."!<br />\n"; } else { echo $r['navn'].' ('.$dag.'.'$r['maned'].")<br />\n"; } } ?> Fikset litt på den nå.. tror den skal virke. Endret 15. april 2007 av Ståle Lenke til kommentar
Ståle Skrevet 14. april 2007 Del Skrevet 14. april 2007 Så det du må gjøre, er å: #lage en tabell med navnet "bursdager" #to rader: navn og dato #dato må være i formatet: m.d (måned.dato) fordi ellers blir det trøbbel med sorteringen Datoen blir gjort om til d.m når den outputtes. Lenke til kommentar
Mathiasman Skrevet 14. april 2007 Forfatter Del Skrevet 14. april 2007 (endret) Okei. Er det uvesentlig i dokumentet jeg gjør det? F.eks. <table> <tr> <td>Janne</td> <td>25.04.07</td> </tr> <tr> <td>Tobias</td> <td>01.04.07</td> </tr> </table> Slik? Endret 14. april 2007 av Mathias89 Lenke til kommentar
Ståle Skrevet 14. april 2007 Del Skrevet 14. april 2007 Nei... det kan ikke du gjøre.. Du må ha det i en database, det bør du også ha når du lager den tabellen der også. Og år er vel uvensentlig når du snakker om bursdager (siden de skjer hvert år) Lenke til kommentar
Ståle Skrevet 14. april 2007 Del Skrevet 14. april 2007 (endret) Her er en simpel PHP generet kalender jeg laget nå nettop. Den kan styles masse med CSS. <?php // DATABASE // ____________________________________________________________________________________________ $server = 'localhost'; // MySQL hostname $username = 'test'; // MySQL username $password = 'test'; // MySQL password $dbname = 'test'; // MySQL db name $db = mysql_connect("$server", "$username", "$password") or die(mysql_error()); mysql_select_db($dbname) or die(mysql_error()); ?> <table id="kalender"> <?php echo '<h2>'.date("F").'</h2>'; $dato = date("d"); $maned = date("m").'.'; $bursdager = array(); $r = mysql_fetch_assoc(mysql_query("SELECT navn, dato FROM bursdager WHERE dato LIKE '$maned%'")); print_r($r); echo substr($r['dato'], 3, 4); $dager = 0; $i = 1; while($i <= date("t")) { echo "<tr>\n"; while($dager < 7) { echo "\t<td>"; if ($i<=date("t")) { echo $i; if ($i == substr($r['dato'], 3, 4)) echo '<br />'. $r['navn']; } echo "</td>\n"; $dager++; $i++; } echo "</tr>\n"; $dager = 0; } ?> </table> Endret 14. april 2007 av Ståle Lenke til kommentar
grimjoey Skrevet 14. april 2007 Del Skrevet 14. april 2007 (endret) her ligger grunnen til at du får bare en rad. $r = mysql_fetch_assoc(mysql_query("SELECT navn, dato FROM bursdager WHERE dato LIKE '$maned%'")); du bør heller legge resultatet av mysql_query(..) til en variabel (inneholder alle radene) og loope med mysql_fetch_assoc(..) (henter kun en rad om gangen) for hver rad. edit: $query = "SELECT navn, dato FROM bursdager WHERE dato LIKE '$maned%'"; $result = mysql_query($query); while($row = mysql_fetch_assoc($result)) { kode som gjøres for hver rad $row['kolonne'] } Endret 14. april 2007 av grimjoey Lenke til kommentar
Gjest Slettet+142 Skrevet 14. april 2007 Del Skrevet 14. april 2007 (endret) vel.. jeg har modifisert litt jeg. kanskje dette virker? <?php // DATABASE // __________________________________________________________________________________________ __ $server = 'localhost'; // MySQL hostname $username = 'test'; // MySQL username $password = 'test'; // MySQL password $dbname = 'test'; // MySQL db name $db = mysql_connect("$server", "$username", "$password") or die(mysql_error()); mysql_select_db($dbname) or die(mysql_error()); ?> <table id="kalender"> <?php echo '<h2>'.date("F").'</h2>'; $dato = date("d"); $maned = date("m").'.'; $bursdager = array(); $q = mysql_query("SELECT navn, day(dato) AS dag FROM bursdager WHERE month(dato)=month(now())"); while($r = mysql_fetch_assoc($q)){ $bursdager[ 0 + $r["dag"] ][] = $r["navn"]; } $dager = 0; $i = 1; while($i <= date("t")) { echo "<tr>\n"; while($dager < 7) { echo "\t<td>"; if ($i<=date("t")) { echo '<b>'.$i.'</b>'; if(is_array($bursdager[$i])){ foreach($bursdager[$i] as $navn){ echo '<br />'. $navn; } } } echo "</td>\n"; $dager++; $i++; } echo "</tr>\n"; $dager = 0; } ?> </table> Endret 14. april 2007 av Slettet+142 Lenke til kommentar
Ståle Skrevet 14. april 2007 Del Skrevet 14. april 2007 Yey. da virker kalenderen Her har du hva du må importere i Phpmyadmin. -- Table structure for table `bursdager` -- CREATE TABLE `bursdager` ( `navn` varchar(20) collate latin1_general_ci NOT NULL, `dato` date NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; -- -- Dumping data for table `bursdager` -- INSERT INTO `bursdager` VALUES ('Ståle', '1989-12-12'); og her er hvordan .css filen kan se ut table#kalender td { width: 60px; height: 60px; border: 1px #000 solid; vertical-align: top; } Lenke til kommentar
grimjoey Skrevet 14. april 2007 Del Skrevet 14. april 2007 Jeg skal lage noe som en bursdagskalender. Jeg skal ha en oversikt over fem neste bursdager på forsiden av hjemmesiden min. Så skal disse datoene og navnene bli hentet frem av et annet dokument. Hvordan kan jeg kode dette? 8380922[/snapback] du trenger ikke bruke database som alle svarene hittil sier. kalender.csv(comma separated values): "Bjørn","120379" "Harald","070184" "Hanne","270591" "Kåre","080981" "Ståle","121289" kalender.php: <html> <body> <?php if(!$kalenderfil = fopen('kalender.csv','r')) die('Finner ikke fil kalender.csv'); while($csvarray = fgetcsv($kalenderfil)) { $kalender[$csvarray[0]] = $csvarray[1]; $sortering[$csvarray[0]] = substr($csvarray[1],2,2).substr($csvarray[1],0,2); } asort($sortering); $dagsdato = date('md'); echo('<table id=\'kalender\'>'); $i = 0; foreach($sortering as $navn => $dato) { echo $i; if ($dato >= $dagsdato) { echo('<tr><td>'.$navn.'<td>'.$kalender[$navn].'<td>'); if ($dato == $dagsdato) echo('Gratulerer med dagen!'); echo('</tr>'); $i += 1; } if ($i == 5) break; } echo('</table>'); ?> </body> </html> Lenke til kommentar
Gjest Slettet+142 Skrevet 14. april 2007 Del Skrevet 14. april 2007 du trenger ikke bruke database som alle svarene hittil sier. 8383341[/snapback] sant det ja, men med database er det jo om ikke enklere, men iallefall mer oversiktlig. Samtidig som med database er de forskjellige mulighetene gjort mye enklere Lenke til kommentar
grimjoey Skrevet 15. april 2007 Del Skrevet 15. april 2007 (endret) I første posten spesifiserer Mathias89 at han ønsker å hente data fra et annet dokument. Jeg ville bare gi et svar som tok hensyn til hele spørsmålet. Det er ikke sikkert Mathias89 har tilgang til en mysql server eller kanskje han har andre grunner til å velge å bruke fil. Database er mer å sette seg inn i. Og til en slik liten sak er det ikke mye å tjene på oversikt, databehandling og plassbesparing. Men til et større projekt er selvfølgelig database mye enklere å forholde seg til og gir bedre ytelse. Endret 15. april 2007 av grimjoey Lenke til kommentar
Gjest Slettet+142 Skrevet 15. april 2007 Del Skrevet 15. april 2007 jeje.. I surrender men anyway. jeg har oppdaget en liten feil i koden til meg og Ståle. Vår kode skriver ut alle bursdagene for hele måneden, ikke de 5 neste dagene =/ hvis Mathias89 har tilgang til database og syntes at det er viktig med at bare de 5 neste dagene skrives ut, kan jeg/Ståle sikkert fikse dette Men lengter etter tilbakemelding ifra Mathias89 her... Lenke til kommentar
Ståle Skrevet 15. april 2007 Del Skrevet 15. april 2007 Han ville ha de 5 neste bursdagene på forsiden. Det gjør mitt første script. Så ville han ha en bursdagskalender. Lenke til kommentar
Mathiasman Skrevet 15. april 2007 Forfatter Del Skrevet 15. april 2007 grimjoey: Hvis jeg ikke trenger database tar jeg heller det. Beklager sent svar, men har ikke hatt PC tilgjengelig siden i går kveld. Lenke til kommentar
grimjoey Skrevet 15. april 2007 Del Skrevet 15. april 2007 (endret) koden jeg la frem skriver ut en tabell ut i fra informasjonen i kalender.csv de 5 neste bursdagene skrives og dersom en dato matcher dagens dato skrives gratulerer med dagen i tillegg cut'n'paste fra <?php til ?> til der du vil ha tabellen på siden din. tenkte å lage med databasestøtte... (har ikke testet med database): <html> <body> <?php $bruk_database = null; #sett denne til en 'verdi' for å bruke database. $dbhost = 'localhost'; #ipadresse eller hostname til database $dbuser = 'brukernavn'; #brukernavn for database $dbpass = 'passord'; #passord for database (bør legges i og importeres fra en annen fil som ikke er visbar av webserver) $databasenavn = 'mydb'; #navn på database $tabellnavn = 'kalender'; #navn på tabell $tabelldef = '(id INT(3) NOT NULL PRIMARY KEY auto_increment, navn VARCHAR(50), bursdag DATE)'; #tabell definisjon if($bruk_database) { if(!$link = mysql_connect($dbhost,$dbuser,$dbpass)) die(mysql_error()); #koble til database if(!mysql_select_db($databasenavn)) #velg database om den eksisterer { if(!mysql_query('CREATE DATABASE '.$databasenavn.';')) die(mysql_error()); #lag database om den ikke eksisterte if(!mysql_select_db($database_navn)) die(mysql_error()); #velg nylaget database } if(!$resultat = mysql_query('SELECT navn,bursdag FROM '.$tabellnavn.';')) #hent data fra tabell om tabell eksisterer { if(!mysql_query('CREATE TABLE '.$tabellnavn.' '.$tabelldef.;')) die(mysql_error()); #lag tabell om den ikke eksisterte if(!mysql_query('SELECT navn,bursdag FROM '.$tabellnavn.';')) die(mysql_error()); #hent data fra nylaget tabell (ingen data men bekrefter at tabell finnes) } else { while($kalender = $mysql_fetch_assoc($result)) { $kalender['bursdag'] = substr($kalender['bursdag'],8,2).$substr($kalender['bursdag'],5,2).$substr($kalender['bursdag'],2,2); $sortering[$kalender['navn']] = $substr($kalender['bursdag'],5,2).substr($kalender['bursdag'],8,2); } } } else { if(!$kalenderfil = fopen('kalender.csv','r')) die('Finner ikke fil kalender.csv'); while($cvsarray = fgetcsv($kalenderfil)) { $kalender[$csvarray[0]] = $csvarray[1]; $sortering[$csvarray[0]] = substr($csvarray[1],2,2).substr($csvarray[1],0,2); } } asort($sortering); $dagsdato = date('md'); echo('<table id=\'kalender\'>'); $i = 0; foreach($sortering as $navn => $dato) { echo $i; if ($dato >= $dagsdato) { echo('<tr><td>'.$navn.'<td>'.$kalender[$navn].'<td>'); if ($dato == $dagsdato) echo('Gratulerer med dagen!'); echo('</tr>'); $i += 1; } if ($i == 5) break; } echo('</table>'); ?> </body> </html> Endret 15. april 2007 av grimjoey Lenke til kommentar
Mathiasman Skrevet 16. april 2007 Forfatter Del Skrevet 16. april 2007 (endret) Går det ann at dette ikke forekommer: Bursdager01234 Per 2904 Åge 0806 Kåre 0809 Stig 2210 Ståle 1212 Kildekode: <table id='kalender'>0<tr><td>Per<td>2904<td></tr>1<tr><td>Åge<td>0806<td></tr>2<tr><td>Kåre<td>0809<td></tr>3<tr><td>Stig<td>2210<td></tr>4<tr><td>Ståle<td>1212<td></tr></table> Endret 16. april 2007 av Mathias89 Lenke til kommentar
grimjoey Skrevet 16. april 2007 Del Skrevet 16. april 2007 <html> <body> <?php if(!$kalenderfil = fopen('kalender.csv','r')) die('Finner ikke fil kalender.csv'); while($csvarray = fgetcsv($kalenderfil)) { $kalender[$csvarray[0]] = $csvarray[1]; $sortering[$csvarray[0]] = substr($csvarray[1],2,2).substr($csvarray[1],0,2); } asort($sortering); $dagsdato = date('md'); echo('<table id=\'kalender\'>'); $i = 0; foreach($sortering as $navn => $dato) { if ($dato >= $dagsdato) { echo('<tr><td>'.$navn.'<td>'.$kalender[$navn].'<td>'); if ($dato == $dagsdato) echo('Gratulerer med dagen!'); echo('</tr>'); $i += 1; } if ($i == 5) break; } echo('</table>'); ?> </body> </html> bare fjernet echo $i; etter foreach.. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå