div's dynamisch genereren en de id's hiervan ophogen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jo Immanuel

Jo Immanuel

25/10/2014 08:50:53
Quote Anchor link
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>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?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?

Toevoeging op 25/10/2014 09:17:45:

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.
Gewijzigd op 25/10/2014 10:13:04 door Jo Immanuel
 
PHP hulp

PHP hulp

29/03/2024 12:55:29
 
Obelix Idefix

Obelix Idefix

25/10/2014 10:16:49
Quote Anchor link
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?
 
Jo Immanuel

Jo Immanuel

25/10/2014 10:23:19
Quote Anchor link
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?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

25/10/2014 10:27:38
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<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..

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$i
= 1;
while($row = mysqli_fetch_assoc($result))
{

    echo 'div class="div" data-rank="'.$i.'">blablabla</div>';
    $i++;
}

?>
Gewijzigd op 25/10/2014 10:33:44 door Frank Nietbelangrijk
 
Jo Immanuel

Jo Immanuel

25/10/2014 10:54:10
Quote Anchor link
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.



Toevoeging op 25/10/2014 11:23:11:

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>

Toevoeging op 25/10/2014 11:43:20:

Ok, het is me gelukt.

<code>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

$i
++;
if($i > 3)
{

$i = 1;
}

else
{
$i = $i++;
}


?>


</code>

Bedankt Obelix en Idefix. Je opmerking heeft me op het goede spoor gebracht.
Gewijzigd op 25/10/2014 11:44:54 door Jo Immanuel
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.