Beste mensen,

Ik wil de resultaten van een sql-query in aparte dynamisch gegenereerde div's zetten en deze een teller meegeven van 1 tot 3. Dus als ik 7 resultaten uit de query krijg 7 dynamisch gegenereerde div's als volgt:

<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
<div id="div1"></div>

Het lukt me wel om de id's van de dynamisch gecreëerde div's steeds met 1 op te laten hogen, maar het lukt me niet om de id van de 4e dynamisch gegenereerde div weer bij 1 te laten beginnen.

Wat ik nu heb:

<code>

<?php

$i=0;

mysql_select_db($blabla, $blabla);

$query_Items = "SELECT titel
FROM `tbl_Items`";

$result = mysql_query($query_Items);

if (!$result) {
echo "Could not successfully run query ($query_Items) from DB: " . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}

while ($row = mysql_fetch_assoc($result)){

$i++;

echo '
<div id="div'.$i.'">
<p> '.$row["titel"]. ' </p>
</div>
'
;}

mysql_free_result($result);

?>

</code>

Weet iemand hoe ik dat kan doen?

[size=xsmall]Toevoeging op 25/10/2014 09:17:45:[/size]

PS: Misschien i.p.v. een while-lus in een for-lus?

for ( $i = 1; $row = mysql_fetch_assoc($result); $i++ ) {
}

Maar dan weet ik nog steeds niet hoe ik de "i" na 3 weer bij 1 laat beginnen.
Als ik het goed heb moet een id uniek zijn.

Je kunt in de while-lus $i toch weer op 1 zetten als $i 3 is?
Dat is eigenlijk mijn vraag: hoe zet je in een while-lus de $i weer op 1 als de $i 3 is en met 1 wordt opgehoogd?
Inderdaad twee tips:

- ga de div's niet ophogen maar geef ze in plaats daarvan het id mee van de overeenkomstige record in je tabel.
(SELECT titel FROM tbl_Items zal dus moeten worden: SELECT titel, id FROM tbl_Items)

- overweeg het data-id attribuut te gebruiken.

<div class="div" data-id="<?php echo $row['id']; ?>">blablabla</div>


Mocht je om wat voor reden dan ook toch willen ophogen dan kan dat ook met een data-... attribuut..

<?php
$i = 1;
while($row = mysqli_fetch_assoc($result))
{
echo 'div class="div" data-rank="'.$i.'">blablabla</div>';
$i++;
}
?>

Ik wil het toch graag ophogen, maar dan wel zo dat de waarde van $i als die 3 is en wordt opgehoogd weer 1 wordt, enzovoorts.



[size=xsmall]Toevoeging op 25/10/2014 11:23:11:[/size]

PS: Voor div mag je ook class lezen.

De vraag wordt dan: Ik wil de resultaten van een sql-query in dynamisch gegenereerde div's zetten met een class die oploopt van 1 tot 3 en na 3 weer bij 1 begint.

Dus bij 7 resultaten uit de query:
<div class="class1"></div>
<div class="class2"></div>
<div class="class3"></div>
<div class="class1"></div>
<div class="class2"></div>
<div class="class3"></div>
<div class="class1"></div>

[size=xsmall]Toevoeging op 25/10/2014 11:43:20:[/size]

Ok, het is me gelukt.

<code>

<?php

$i++;
if($i > 3)
{
$i = 1;
}
else
{
$i = $i++;
}

?>

</code>

Bedankt Obelix en Idefix. Je opmerking heeft me op het goede spoor gebracht.

Reageren