stclem Skrevet 29. august 2007 Del Skrevet 29. august 2007 (endret) Hvis jeg lager følgende script så får jeg opp det som står i databasen under hverandre, men ønsker å få de lagt inn i en tabell med syv kolonner. Når jeg har over syv "poster" i tabellen vil jeg at det skal fylles ut på rad 2 osv. do { printf("<a href=\"%s?id=%s\">%s %s</a><br>\n", $PHP_SELF, $myrow["id"], $myrow["first"], $myrow["last"]); } while ($myrow = mysql_fetch_array($result)); noen forslag? Endret 29. august 2007 av stclem Lenke til kommentar
kakkle Skrevet 29. august 2007 Del Skrevet 29. august 2007 Tror jeg mener hva du forstår... Skal prøve å forklare dette, uten å gi deg koden for det direkte. Før løkken, så må du jo opprette en tabell (<table><tr>) som avsluttes etter løkken (</tr></table>) Ved utskrift av hver post, må du sette inn en celle ("<td>det som skal i cellen</td>"). Dette regner jeg med er greit. Etter hver 7. post, så vil du sette inn "</tr><tr>" For å vite når du har 7 poster, kan du dele en teller med 7, og se hva du får i rest. For å finne ut hva som er i rest når du deler, bruker du modulus operatøren (%). Da får du resten som svar. Eksempel: 0 % 7 = 0 1 % 7 = 1 2 % 7 = 2 3 % 7 = 3 4 % 7 = 4 5 % 7 = 5 6 % 7 = 6 7 % 7 = 0 8 % 7 = 1 9 % 7 = 2 ... 14 % 7 = 0 Så du kan da teste på når $teller%7==0, så skal du sette inn "</tr><tr>" verdien av $teller må settes før løkken, økes med 1 på slutten av løkken. Håper du skjønte litt av det. Var ikke så lett å forklare, fant jeg ut. Lenke til kommentar
stclem Skrevet 29. august 2007 Forfatter Del Skrevet 29. august 2007 Tror jeg mener hva du forstår... Skal prøve å forklare dette, uten å gi deg koden for det direkte. Før løkken, så må du jo opprette en tabell (<table><tr>) som avsluttes etter løkken (</tr></table>) Ved utskrift av hver post, må du sette inn en celle ("<td>det som skal i cellen</td>"). Dette regner jeg med er greit. Etter hver 7. post, så vil du sette inn "</tr><tr>" alt frem til hit er riktig. Men det under skjønte jeg ikke akkurat. Begynner å lure på om dette er for vanskelig for meg. Holder på å lære, og trudde dette skulle være en smal sak.... For å vite når du har 7 poster, kan du dele en teller med 7, og se hva du får i rest. For å finne ut hva som er i rest når du deler, bruker du modulus operatøren (%). Da får du resten som svar. Eksempel: 0 % 7 = 0 1 % 7 = 1 2 % 7 = 2 3 % 7 = 3 4 % 7 = 4 5 % 7 = 5 6 % 7 = 6 7 % 7 = 0 8 % 7 = 1 9 % 7 = 2 ... 14 % 7 = 0 Så du kan da teste på når $teller%7==0, så skal du sette inn "</tr><tr>" verdien av $teller må settes før løkken, økes med 1 på slutten av løkken. Håper du skjønte litt av det. Var ikke så lett å forklare, fant jeg ut. 9386048[/snapback] Lenke til kommentar
Crowly Skrevet 29. august 2007 Del Skrevet 29. august 2007 Du legger inn en if så det blir noe slikt PHP <?php// inn i løkken if ($teller%7==0) echo '</tr><tr>'; ++$teller; ?> Som du ser av listen over så vil if'en kun være sann for hver 7. forekomst, altså ved verdi 0, 7, 14, 21 ... så da vil det avsluttes og startes en ny rad for hver 7. forekomst/post. Hvis du vil ha kun 5 kolonner, så bruker du if ($teller%5==0) osv. Lenke til kommentar
stclem Skrevet 29. august 2007 Forfatter Del Skrevet 29. august 2007 verdien av $teller må settes før løkken, økes med 1 på slutten av løkken. 9386048[/snapback] Denne skjønner jeg ikke helt, hvordan setter jeg verdien? Lenke til kommentar
kakkle Skrevet 29. august 2007 Del Skrevet 29. august 2007 (endret) Se den lille koden til crowly, så ser du det greit. pseudo: <table> <tr> sett verdien av $teller til 1 løkke { <td>innhold i celle</td> Hvis resten av $teller delt på 7 er lik 0 { ( if($teller%7==0) ) </tr><tr> } Øk $teller med 1 } </tr> </table> Det bør vøre en grei oppgave å overføre denne pseudo koden til php. Hvis du skjønte det bedre. Selv foretrekker jeg å bruke modulus. EDIT: Brukte modulus i pseudo istedet, kom på at det kanskje bare vil forvirre å komme med et annet kode eksempel nå Endret 29. august 2007 av kakkle Lenke til kommentar
stclem Skrevet 29. august 2007 Forfatter Del Skrevet 29. august 2007 Så langt har jeg kommet, men som dere ser så er noe klart feil. $result = mysql_query("SELECT * FROM employees ",$db); $teller==1; echo "<table border=\"1\"><tr>"; do { printf("<td>%s %s<td>\n", $myrow["first"], $myrow["last"]); if ($teller%4==0) echo '</tr><tr>'; } while ($myrow = mysql_fetch_array($result)); echo "</tr></table>"; Lenke til kommentar
kakkle Skrevet 29. august 2007 Del Skrevet 29. august 2007 nå er du veldig nærme mål 5or å gi en variabel en verdizl så skal du bare bruke ett likhetstegn, ikke to... Lenke til kommentar
stclem Skrevet 29. august 2007 Forfatter Del Skrevet 29. august 2007 prøvde begge deler, ikke noe forskjell. problemet er at den skriver </tr><tr> etter hver linje, og ikke bare hver fjerde. Lenke til kommentar
kakkle Skrevet 29. august 2007 Del Skrevet 29. august 2007 (endret) Du må huske å øke $teller med 1 inni løkken, etter if setningen EDIT: Grunnen til at den kom med </tr><tr> etter hver post, var nok at du satte $teller==1; Da er ikke $teller satt til noenting, mao ingenting, Svaret blir da 0. Siden du ikke økte telleren, så var den 0 hver gang... Endret 29. august 2007 av kakkle Lenke til kommentar
stclem Skrevet 29. august 2007 Forfatter Del Skrevet 29. august 2007 funket faktisk når man økte teller ja, glemte den. Eneste problemet, som ikke er noe problem for meg, er at første "rute" i tabellen blir tom, siden det kommer </tr><tr> forran 0 også. Men siden jeg skal ha de tre første tom så er det ikke noe problem for meg, bare en post mindre og sette inn som blank. Lenke til kommentar
Runar0 Skrevet 29. august 2007 Del Skrevet 29. august 2007 PHP <?php $result = mysql_query("SELECT * FROM employees ",$db); $teller==1; echo "<table border="1"><tr>"; while ($myrow = mysql_fetch_array($result)) { printf("<td>%s %s<td>", $myrow["first"], $myrow["last"]); if ($teller%4==0) echo '</tr><tr>'; } ; echo "</tr></table>" ?> Ei do-while løkke utfører koden først ein gang og så evaluerer den koden i while(..) dermed er ikkje $myrow satt før andre runde. While er løkka du er ute etter. Lenke til kommentar
Runar0 Skrevet 29. august 2007 Del Skrevet 29. august 2007 Funker ikkje å redigere poster med [ php] tagger :/ Det skal ikkje vere ; etter } på tredje siste linja Lenke til kommentar
stclem Skrevet 29. august 2007 Forfatter Del Skrevet 29. august 2007 Takk for all hjelp. Endte opp med følgende kode til slutt, og det funker glimrende. $result = mysql_query("SELECT * FROM employees ",$db); $teller=1; echo "<center><table border=\"1\" cellspacing=\"0\" cellpadding=\"0\"><tr>"; while ($myrow = mysql_fetch_array($result)) { printf("<td align=\"center\" valign=\"top\" width=\"100\">%s %s</td> ", $myrow["first"], $myrow["last"]); if ($teller%7==0) echo '</tr><tr>'; ++$teller; } echo "</tr></table>"; ?> 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å