Mads-b Skrevet 9. august 2005 Del Skrevet 9. august 2005 (endret) Nå sitter jeg her og tuller med PHP igjen. Så kom den interresante problemstillingen opp: 1. Kan denne kodesnutten fungere? $i = '0'; foreach ($File as $num => $line) { $infoblock = explode(";", $line) entry[$i] = $infoblock; $i++ } Hva vil jeg da få ut av denne loopen? 2. Tanken med koden over var å få ut flere $infoblock[n] enn en, dvs. å unngå at denne ble overskrevet hver gang loopen fulførte en runde og heller lagre resultatene i $entry[n]. La oss no si at koden fungerte slik som jeg ønsket. Hvordan kan jeg benytte loops for å plukke ut alle $infoblock[2] bitene i $entry[n] som inneholder la oss si 7? Håper dette var forståelig.. Hvis ikke må jeg reformulere meg. EDIT: lefi Endret 9. august 2005 av MBaardsgaard Lenke til kommentar
???????? Skrevet 9. august 2005 Del Skrevet 9. august 2005 Hva er substring problemet som du skrev i overskriften? 1. Problemet med den koden er at du skriver: entry[... det skal være $entry. Videre er $array[] = 1; $array[] = 2; det samme som: $array[0] = 1; $array[1] = 2; som da blir det samme som: $i = 0; $array[$i] = 1; $i++; $array[$i] = 2; $i = '0'; foreach ($File as $num => $line) { $infoblock = explode(";", $line) entry[$i] = $infoblock; $i++ Skriver du da slik: foreach ($File as $num => $line) { $infoblock = explode(";", $line) entry[] = $infoblock; Videre så bruker du ikke $num så det holder med foreach($File as $line). 2. Siden du allerede bruker foreach så kan du fortsette med det. F.eks. foreach($entry as $var) echo $var[7]; Lenke til kommentar
Mads-b Skrevet 9. august 2005 Forfatter Del Skrevet 9. august 2005 (endret) Jeg får parse error. Koden jeg satte inn hvis jeg forstår deg rett..? $manedidag = explode(',', date(m,F,Y,t)); $dagerimaned = date('t'); $File = file('data.dat'); foreach ($File as $line) { $infoblock = explode(";", $line); entry[] = $infoblock; \\Denne linjen får parse error.. foreach($entry as $var){ echo $var[8]; } } Vet ikke om du misforsto, men tanken er å trekke ut alle entry[] blokkene som inneholder $infoblock[2] = '7'; Endret 9. august 2005 av MBaardsgaard Lenke til kommentar
Slaughter Skrevet 9. august 2005 Del Skrevet 9. august 2005 (endret) Skjønnar ikkje heilt kva du meiner med søket du beskriv i fyrste post, men feilen er at du ikkje har $ før entry[] test.php <? $File = file('data.dat'); foreach ($File as $line) { $infoblock = explode(";", $line); $entry[] = $infoblock; foreach($entry as $var){ echo $var[0]." | ".$var[1]; echo"<br />"; } echo"<br />"; } ?> data.dat Ein;1 To;2 Tri;3 Fire;4 Resultat: Ein | 1 Ein | 1 To | 2 Ein | 1 To | 2 Tri | 3 Ein | 1 To | 2 Tri | 3 Fire | 4 Håpar det hjalp litt. Endret 9. august 2005 av Slaughter Lenke til kommentar
Mads-b Skrevet 9. august 2005 Forfatter Del Skrevet 9. august 2005 (endret) EDIT: Hurra! jeg fikk det til alene! Nå er kanlenderen min komplett! Hvis noen er interessert, har jeg koden under: <?php function datasplit ($input) { $array = explode(".", $input); $output['dag'] = trim($array[0]); $output['maned'] = trim($array[1]); $output['ar'] = trim($array[2]); $output['data'] = trim($array[3]); return $output; } $dagidag = date('j'); $manedidag = date('m'); $bmanedidag = date('F'); $aridag = date('Y'); $dagerimaned = date('t'); if ($dagerimaned == '28') { $day = array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28); } if ($dagerimaned == '30') { $day = array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30); } if ($dagerimaned == '31') { $day = array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31); } $File = file('data.dat'); foreach ($File as $num => $line) { $infoblock[$num] = datasplit($line); if ($infoblock[$num]['maned'] == $manedidag AND $infoblock[$num]['ar'] == $aridag) { $curday = $infoblock[$num]['dag']; $daydata = $infoblock[$num]['data']; $day[$curday] = "<acronym title=\"$daydata\">$curday</acronym>"; if ($curday == $dagidag) { $day[$curday] = "<strong><acronym title=\"$daydata\">$curday</acronym></strong>"; } } } echo " <p>$bmanedidag, $aridag</p> <table> <tr><td>M</td><td>T</td><td>O</td><td>T</td><td>F</td><td>L</td><td>S</td></tr> <tr><td>$day[1]</td><td>$day[2]</td><td>$day[3]</td><td>$day[4]</td><td>$day[5]</td><td>$day[6]</td><td>$day[7]</td></tr> <tr><td>$day[8]</td><td>$day[9]</td><td>$day[10]</td><td>$day[11]</td><td>$day[12]</td><td>$day[13]</td><td>$day[14]</td></tr> <tr><td>$day[15]</td><td>$day[16]</td><td>$day[17]</td><td>$day[18]</td><td>$day[19]</td><td>$day[20]</td<td>$day[21]</td></tr> <tr><td>$day[22]</td><td>$day[23]</td><td>$day[24]</td><td>$day[25]</td><td>$day[26]</td><td>$day[27]</td><td>$day[28]</td></tr> <tr><td>$day[29]</td><td>$day[30]</td><td>$day[31]</td></tr> </table>"; ?> Jeg har også en testversjon på nett..Link Jeg har problemer med en praktisk måte å Lage $day arrayen og endte omm med tre store if setninger. Hvis noen har en bedre måte å generere dagene på, hadde det vært fint. Endret 10. august 2005 av MBaardsgaard Lenke til kommentar
magikern Skrevet 10. august 2005 Del Skrevet 10. august 2005 (endret) veldig knotete måte å legge opp html! prøv noe som dette: ps: skriver ikke hele koden din på nytt bare fra der hvor du skriver "echo"tabeller her... $day[1]...$day[2]osv osv osv"; $content = "<tr>"; $i = 1; foreach($day as $dag){ $content .= "\n\t<td>$dag</td>"; $content .= ($i%7) ? "\n</tr><tr>\n\t" : ""; $i++; } $content .= "</tr>"; ikke helt sikker på om det fungerer da jeg ikke har tid før senere i dag til å teste, men kort fortalt printer den ut alle datoene og hopper til ny rad etter hver 7 dag, men er en stund siden jeg gjorde dette så kan tenkes at det ble litt feil... hvis du får den til å fungere kan du også legge alle ukedagene i ett array og printe de ut på samma måten så du slipper å skrive <td>man</td><td>tir</td> osv osv Endret 10. august 2005 av magikern Lenke til kommentar
Lokaltog Skrevet 10. august 2005 Del Skrevet 10. august 2005 Uff, for en rotekode. Holder meg til Keith Devens' kalenderscript jeg, tror jeg (langt bedre HTML-kode og fleksibilitet, og det ser faktisk omtrent like stort ut som ditt). Lenke til kommentar
Mads-b Skrevet 10. august 2005 Forfatter Del Skrevet 10. august 2005 (endret) Koden din fungerte ikke.. Jaja.. da får jeg mekke videre selv. *pønske ut alternativer til tabeller* EDIT: Jeg gidder ikke å stresse med kode jeg ikke skjønner.. $content .= "<table>\n\t<tr>"; $i = 0; foreach($day as $dag){ $content .= "<td>$dag</td>\n\t"; if ($i == 7) { $i = 0; $content .= "</tr>\n<tr>\n\t"; } $i++; } $content .= "</tr>\n\t</table>"; $content = str_replace("<td>0</td>", "", $content); echo $content; Sånn Endret 10. august 2005 av MBaardsgaard 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å