Avatar billede bente_fiber Nybegynder
11. januar 2007 - 22:36 Der er 6 kommentarer og
1 løsning

Det burde være en let en - hjælp!

Hej Eksperter!

Nu må jeg have løst gåden som længe har undret mig.
Selvom jeg efterhånden er skrap til PHP, Visual Basic, JavaScript og blandt andet står bag store sider som www.jegergrim.com - har jeg ALDRIG fundet ud af én simpel ting:

- HVORDAN SATAN JEG ET MYSQL UDTAG, HVOR DEN LAVER <tr> EFTER F.EKS UDTAG NR 4? -

Se for eksempel det her billede, hvor hver table har skiftende farve, og ikke nok med det, laver den et break efter hver 4 table der er vist.

http://peecee.dk/?id=21748

Hjælp mig venner..

Med venlig hilsen
Simon
Avatar billede 3xm Nybegynder
11. januar 2007 - 22:56 #1
Du skal have fat i det der hedder modulus: http://en.wikipedia.org/wiki/Modulo_operation
PHP's sparsomme dokumentation: http://dk2.php.net/manual/en/language.operators.arithmetic.php

Kort sagt, det den gør er at give dig det der er tilbage når du dividerer to tal med hinanden og kun vil regne med heltal.

Dvs. 5 modulus 2 giver 1, 6 modulus 4 giver 2 og 23 modulus 5 giver 3.

I PHP er modulus-operatoren et procenttegn: %

Så det du formodentligt gerne vil opnå er - lettere forsimplet:

while (et-eller-andet)
{
  if ($nummer % 4 = 0) // altså at du nu er nået til et element hvis nummer går op i 4
  {
    // ny række i din HTML-tabel
  }
}



Jeg håber det giver mening. Det er en ret nyttig operator.

=)
Avatar billede bente_fiber Nybegynder
11. januar 2007 - 23:15 #2
Mange mange MANGE tak ;)

Kendte ikke lige den funktion.
Det irrirterer mig virkelig ved PHP, at der er så mange funktioner, at det ikke er til at finde rundt i - men godt der er nogle der har styr på det!

Tusind tak, vil prøve mig frem, skal nok fange dig hvis jeg støder ind i problemer min ven ;)

Svar så du kan få dine velfortjente point
Avatar billede bente_fiber Nybegynder
11. januar 2007 - 23:26 #3
Kan sku ikke få det til at virke, når jeg f.eks bruger

$i = 1;
while ($i <= 10) {
  "min tabel";
  if ($i % 4 = 0) // altså at du nu er nået til et element hvis nummer går op i 4
  {
  echo "brake";

    // ny række i din HTML-tabel
  }
}
Avatar billede bente_fiber Nybegynder
11. januar 2007 - 23:28 #4
Skal man bruge nogen addons, og virker det med alle versioner af php?
Avatar billede bente_fiber Nybegynder
11. januar 2007 - 23:45 #5
Ok nevermind, det er min træthed blandet med en enkelt smutter i din kode som gjorde mig forvirret. Lavet følgende:


$y = 1;
while ($y < 10) {
  echo "Tallet er $y.<br />";
 
    if ($y % 4 == 0) // altså at du nu er nået til et element hvis nummer går op i 4
  {
   
    echo "<br>brake<br><br>";
   
  }
 
  $y++;
}

http://jegergrim.com/test.php

Så det virker, mange tak :)
Avatar billede 3xm Nybegynder
11. januar 2007 - 23:52 #6
hehe... ja, man skal huske at lægge en til når man laver den slags løkker =)
Avatar billede hmortensen Nybegynder
12. januar 2007 - 00:09 #7
Her er noget gammelt kode jeg lige fandt frem. Det tar højde for at antallet ikke passer, så der indsættes tomme celler til sidst, så der ikke er html fejl.

$kolonner  = 4;
$tablewidth = 800;
$cellwidth  = (int)($tablewidth / $kolonner);

$query = mysql_query("SELECT * FROM table") or die(mysql_error());
$antal = mysql_num_rows($query);

$tmp = "<table width=$tablewidth>\n\t<tr>\n";

for($i = 0; $i < $antal; $i++)
{
  if(!($i % $kolonner) && $i > 0 && $i < $antal)
  {
    $tmp .= "\t</tr>\n\t<tr>\n";
  }

  $row = mysql_fetch_row($query);
  $tmp .= "\t\t<td width=\"$cellwidth\">{$row['data']}</td>\n";
}

for($i = 0; $antal % $kolonner && $i < $kolonner - ($antal % $kolonner); $i++)
{
  $tmp .= "\t\t<td width=\"$cellwidth\">&nbsp;</td>\n";
}

$tmp .= "\t</tr>\n</table>";
echo $tmp;
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