12. maj 2003 - 19:22Der er
18 kommentarer og 1 løsning
While loop i en while loop - lidt trikey
Ok læs spørgsmålet godt igennem for det kan være lidt trickey at forstå... jeg har et kalender script hvor den laver et skema over de 7 dage. Det vil sige max 7 datoer i hver <td>. Så for en måned vil der være 5 rækker. Ok her kommer scriptet (Altså while loopen):
Nu er det sådan at jeg gerne vil lave en fetch_array som en while loop så hvis en dato er = med en i en database så skal den gøre noget. Men man kan ikke lave 2 while loops oven i hinanden og hvis jeg laver denne:
Så kører den kun array'en 5 gange for så er den 1. statement jo klaret. Den kører jo kun 5 gange så hvis jeg har mere end 5 datoer som jeg har skrevet noget til så dør den. :| Hvordan fanden er det lige man løser sådan et problem?
Efter ti år i London, Madrid, Paris og Utrecht kommer Sabios AI-fokuserede program af arrangementer om kundeoplevelser, ‘Disrupt’, for første gang til Danmark.
Selve kalenderen arbejder uafhængigt af en database.... jeg bruger databasen til at specificere nogle datoer hvor der så skal være link på eller noget lignende... Så hvis det er det DU mener så forklar yderligere :P
jo altså hvis jeg har fanget det rigtigt, så putter du datoen in i DB hvis der sker noget den dato?, hvis du så putter datoerne i databasen i et array ved SQL udtræk og så sammenligner den valgte dato med arrayet ved brug af in_array,
uha det lyder smart vidste ikke man kunne gøre det sådan... well... in_array() hvordan skal den bruges (ved jeg kunne smutte forbi php.net men jeg er så skide doven :P)
ok se på denne stump: $os = array ("Mac", "NT", "Irix", "Linux"); //her er vores array/liste over operativsystemer if (in_array ("Irix", $os)) { //HVIS "Irix" indgår i arrayet/listen så skriv det! print "HURRA - Irix findes i listen"; }
Prøv at kopiere det over i en php fil og leg lidt med det - det svarer bare til at man tjekker om onget står på en liste eller ej
hmm nu er det jo lige at der er flere kriterier der skal være i array for at det er sandt så kan jeg gøre sådan her: $os = array ("Mac", "NT", "Irix", "Linux"); //her er vores array/liste over operativsystemer if (in_array ("test && test && test", $os)) { //HVIS "Irix" indgår i arrayet/listen så skriv det! print "HURRA - Irix findes i listen"; }
Jeg kan simpelthen ikke få det til at virke :| Har prøvet og lege med det som du siger og brugt midtarray men det ser sq ikke ud til at gemme en skid :|
$query = mysql_query("select * from kalender") or die(mysql_error());
Derudover vil du også skrive tekster, når de matcher ...
Mit forslag ville være at opbygge et tre-dimensionelt array:
xx x0 x1 x2 x3 x4 x5 x6 y0 z0 -- -- -- 01 02 03 04 y0 z1 -- -- -- Pe -- Ha --
altså sådan, at array $tekst[0][0][0]="--" $tekst[0][0][1]="--"
$tekst[0][1][0]="--" $tekst[0][1][1]="--"
$tekst[0][2][0]="--" $tekst[0][2][1]="--"
$tekst[0][3][0]="01" $tekst[0][3][1]="Pe"
$tekst[0][4][0]="02" $tekst[0][4][1]="--"
$tekst[0][5][0]="03" $tekst[0][5][1]="Ha"
$tekst[0][6][0]="04" $tekst[0][6][1]="--"
$tekst[1][0][0]="05" $tekst[1][0][1]="--"
Så kan du starte med at opbygge de tomme fra starten -- du kan jo finde weekday og dem mellem mandag og weekday for den 1. skal være tomme, så skal din grundlæggende løkke bare finde ud af, at x-index skal skifte til 0 efter 6 samtidig med at y-index skal skifte til en mere ...
Bagefter kan du så løbe igennem og checke for matches i z-index 0, som kan befolke evt. sammenfald i z-index 1
Hver af disse celler indeholder en dato (eller evt. ingen dato i første og sidste linje).
Din kalender indeholder nogle forskellige events, så ved hjælp af datoen kan du checke om specielle attributter (baggrunde og links) skal placeres der ved at sammenligne med de forskellige kalender-entries -- in_array er sikkert udmærket, men jeg kender overhovedet ikke PHP, så det ved jeg ikke ...
Hvis du først lavet et grid (som to-dimensional array) som skitseret ovenfor -- og overser den tredje dimension --, kan du:
<table> <? for ($y=0;$y<5;$y++){ ?> <tr> <? for ($x=0;$x<7;$x++){ ?> <td> <? if ($tekst[$y][$x]=="")){ ?> //baggrund vise ingen dag og ikke udskrive dato til tabellen <? } elseif (in_array($tekst[$y][$x],$match_days)){ ?> //Baggrund vise kampdag-farve, link omkring datoen og en tekst som tooltip (title i linket) <? } elseif (in_array($tekst[$y][$x],$nomatch_days)){ ?> //Baggrund vise 'kan ikke spille'-farve samt dato <? } elseif (in_array($tekst[$y][$x],$possiblematch_days)){ ?> //Baggrund vise 'måske kampdag'-farve, link omkring datoen og en tekst som tooltip (title i linket) <? } ?> </td> <? } ?> </tr> <? } ?> </table>
Er begyndt fra bunden og har lidt problemer med in_array som kommer i et nyt spørgsmål
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.