Avatar billede DonTorro Nybegynder
21. april 2010 - 22:44 Der er 6 kommentarer og
2 løsninger

PHP placerings problem

Hej.

Jeg ønsker at udskrive min data ved hjælp at tabel på følgende måde:
1 2 3
4 5 6
7 8 9

har prøvet for-løkke uden held :/

kode:
$sql = "SELECT * FROM table order by navn";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
    echo "<tr><td><input type='checkbox' name='checkbox[]' value='".$row['navn']."'>".$row['navn']."</td></tr>";
}

Nogen der har en ide til hvad jeg kan gøre ?
Avatar billede The_Buzz Novice
22. april 2010 - 06:39 #1
$sql = "SELECT * FROM table order by navn";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
$i =  $i+1;
if ($i % 3 == 0) echo "</tr><tr>";

    echo "<td><input type='checkbox' name='checkbox[]' value='".$row['navn']."'>".$row['navn']."</td>";
}

Du tæller en værdi $i op med 1 for hver gennemløb.
if ($i % 3 == 0) echo "</tr><tr>";[/b]
indsætter et </tr><tr> hvis værdien $i er delbart med 3 uden rest.

Husk <TR> i start og </TR> i bund efter det fulde run
22. april 2010 - 07:13 #2
Det er ikke helt tydeligt hvad du mener med
123
456
789

Jeg testede din kode med en tabel der indeholdt tre navne, navn1, navn2, og navn3.  Outputtet jeg fik (jeg erstatter checkboxen med *) var saaledes:
*navn1*navn2*navn3

Hvis det du er ude efter er saadan noget:
*navn1
*navn2
*navn3
saa indsaet <tabel> foer og </tabel> efter din while loekke.  Altsaa:

$sql = "SELECT * FROM table order by navn";
$result = mysql_query($sql);
echo "<table>";
while ($row = mysql_fetch_array($result)) {
    echo "<tr><td><input type='checkbox' name='checkbox[]' value='".$row['navn']."'>".$row['navn']."</td></tr>";
}
echo "</table>";
22. april 2010 - 07:18 #3
The_buzz's indlaeg kom mens jeg arbejdede med mit.  Det gaar ud fra en anden opfattelse af hvad meningen er med 1 til 9.
Avatar billede The_Buzz Novice
22. april 2010 - 10:53 #4
Hvis han vil have det stillet op som
1 2 3
4 5 6
7 8 9

i en tabel er mit det rigtige forslag skulle jeg mene :) @#1
22. april 2010 - 11:27 #5
The_Buzz, jeg er ikke uenig med princippet i dit forslag hvis spoergeren vil have tre check bokse paa hver linie.  Og det har du vel forstaaet korrekt (DonTorro?) men jeg havde ikke fattet det.

Men testede du din kode?  Naar jeg afproevede din kode paa mit system fik jeg to problemer:

(a) Jeg faar alle checkboxene paa en linie.  Det kan jeg afhjaelpe ved at placere while loekken indenfor <table></table> (som jeg foreslog i mit svar).

(b) Naar det er paa plads saa faar jeg i den foerste raekke kun to checkboxe.  Det afhjaelper jeg ved at aendre "if ($i % 3 == 0)" til "if ($i % 3 == 1)".  Den tredje tekstbox, med $i%3==0 skal jo blive staaende og det er foerst den fjerde textbox, som har $i%3==1, der skal staa i en ny raekke.

Saa hvis din opfattelse af behovet er korrekt vil jeg foreslaa at aendre din foreslaaede kode til dette:

$sql = "SELECT * FROM table order by navn";
$result = mysql_query($sql);
echo "<table>";
while ($row = mysql_fetch_array($result)) {
$i =  $i+1;
if ($i % 3 == 1) echo "</tr><tr>";
    echo "<td><input type='checkbox' name='checkbox[]' value='".$row['navn']."'>".$row['navn']."</td>";
}
echo "</table>";

Er vi enige, eller er der noget jeg har overset?
Avatar billede DonTorro Nybegynder
22. april 2010 - 13:23 #6
undskyld for den dårlige formulering :)
Men ja , jeg mente 3 på hver linje ligesom the_buzz's forslag.

Da jeg testede det fik jeg de samme fejl som Christian_Belgien, og rettede ($i % 3 == 0)
Men det er lidt underligt, har 3 sql forespørgsler i samme tabel og alle skal have hver deres if($i % 3 == 0)

Det underlige er at:
Nr1 skal det være 3 == 1, og
Nr2 skal det være 3 == 2, og
Nr3 skal det være 3 == 0..
Kan godt være det ikke er underligt, men det virker .. skide godt :D

Synes i begge skal smide svar =)
Avatar billede DonTorro Nybegynder
22. april 2010 - 13:24 #7
Kan man ikke give flere points så i får 60 hver?
22. april 2010 - 14:44 #8
Vi har begge smidt et svar, de indlaeg der er markeret med gult.  Du lukker traaden ved at acceptere et eller begge svar ved flueben i den lille firkant i svaret/svarene og derefter i den nye box der fremkommer for at acceptere svar og afgive points.

Du kan ikke I DENNE TRAAD afgive mere end 60 points.  De muligheder du har, hvis du vil fordele points ligeligt, er at give os hver 30 points eller at give en af os de 60 points og saa oprette et nyt spoergsmaal "Points til (den der ikke fik under denne traad.)  Jeg vedlaegger dette udsnit af FAQ:

"Hvordan giver jeg en anden bruger flere point?

Først skal vi have på plads at du ikke må udlove mere end 200 point for et spørgsmål, heller ikke fordelt over flere spørgsmål.

Metoden er forholdsvis simpel. Opret et nyt spørgsmål i samme kategori som det oprindelige spørgsmål og kald det "Point til [brugernavn]" hvor du erstatter [brugernavn] med navnet på den bruger du ønsker skal have point. Husk at skrive et link til spørgsmålet hvor du normalt skriver en længere beskrivelse af dit problem.

"
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester