MySQL: Rand() & Limit; geeft niet gewenste resultaat
Ik heb een script gemaakt voor een aantal projecten van mij (kunnen fotoshoots zijn, websites, huisstijlen enz) en overal heb ik thumbs van.
Nu heb ik er een soort menu balk voor gemaakt waar hij dit laat zien. Ik echo de thumbnaam uit de database en die word klikbaar als link. Ik wil 3 verschillende thumbs laten zien (heb ruimte voor 3 gemaakt) Maar nu zit ik met het volgende:
Op de manier zoals ik het heb gedaan, laat hij dus elke keer 3 dezelfde thumbs zien, ververs ik de pagina, laat hij een andere afbeelding 3 keer zien.
Wat ik dus wil bereiken, is elke keer dat je ververst, dat je 3 andere thumbs op die posities krijgt.
Dit stukje code gebruik ik:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$sql = "SELECT * FROM projecten ORDER BY RAND() LIMIT 3";
$result =mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
?>
$sql = "SELECT * FROM projecten ORDER BY RAND() LIMIT 3";
$result =mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
?>
<div id="projectenoverzicht1"></div>
<div id="project-een"><img src="gfx/project_thumb/" /></div>
<div id="project-twee"><img src="gfx/project_thumb/" /></div>
<div id="projectenoverzicht2"></div>
<div id="project-drie"><img src="gfx/project_thumb/" /></div>
Die echo $row['thumb']; gebruik ik dus op 3 plaatsen, maar hij laat me nu op die 3 plaatsen elke keer 3 dezelfde plaatjes zien. Het moeten dus 3 verschillenden zijn :)
Opzich is het logisch dat hij nu 3 dezelfde thumbs laat zien, maar ik moet dus in elke div een andere thumb hebben.
Wie o wie geeft me het antwoord wat me verder helpt, hoe dit te doen.
- Alles kunnen selecteren
- In een array douwe
- Array door elkaar gooie
- 'eerste 3' weergeven
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
// Alles selecteren
$query = mysql_query("SELECT thumb FROM projecten");
// In een array douwe
$thumb = array();
while($row = mysql_fetch_assoc($query))
{
$thumb[] = $row['thumb'];
}
// Array doorelkaar gooie
shuffle($thumb);
// Eerste 3 weergeven
echo "
<img src=\"".$thumb[0]."\" alt=\"\" /><br />
<img src=\"".$thumb[1]."\" alt=\"\" /><br />
<img src=\"".$thumb[2]."\" alt=\"\" /><br />";
?>
// Alles selecteren
$query = mysql_query("SELECT thumb FROM projecten");
// In een array douwe
$thumb = array();
while($row = mysql_fetch_assoc($query))
{
$thumb[] = $row['thumb'];
}
// Array doorelkaar gooie
shuffle($thumb);
// Eerste 3 weergeven
echo "
<img src=\"".$thumb[0]."\" alt=\"\" /><br />
<img src=\"".$thumb[1]."\" alt=\"\" /><br />
<img src=\"".$thumb[2]."\" alt=\"\" /><br />";
?>
Het is niet helemaal wat jij wilt <_<
Gewijzigd op 01/01/1970 01:00:00 door Jelle -
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
$sql = "SELECT * FROM projecten ORDER BY RAND() LIMIT 3";
$result =mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
$thumb[] = $row['thumb'];
}
echo "
<img src=\"$thumb[0]\" alt=\"\" /><br />
<img src=\"$thumb[1]\" alt=\"\" /><br />
<img src=\"$thumb[2]\" alt=\"\" /><br />";
$result =mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
$thumb[] = $row['thumb'];
}
echo "
<img src=\"$thumb[0]\" alt=\"\" /><br />
<img src=\"$thumb[1]\" alt=\"\" /><br />
<img src=\"$thumb[2]\" alt=\"\" /><br />";
Plaatje word een link --> ik echo het id van de rij waar het plaatje instaat en op de projectpagina laat ik de info van de rij met dat id weergeven. Zet dus projectinformatie in de database.
Nu het wisselen van de thumbs is opgelost, is het weer een stuk leuker om verder te gaan :)
handige functie RAND() btw.
die wist ik nog niet :-)
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$sql = "SELECT * FROM projecten ORDER BY RAND() LIMIT 3";
$result = mysql_query($sql);
// foutafhandeling inbouwen! Vroeg of laat gaat de query fout...
while ($row = mysql_fetch_array($result)) {
echo '<img src="'.$row['thumb'].'" alt="" /><br />';
}
?>
$sql = "SELECT * FROM projecten ORDER BY RAND() LIMIT 3";
$result = mysql_query($sql);
// foutafhandeling inbouwen! Vroeg of laat gaat de query fout...
while ($row = mysql_fetch_array($result)) {
echo '<img src="'.$row['thumb'].'" alt="" /><br />';
}
?>
@Frank: wat jij post, zoiets had ik ook, maar door mijn divs werkt dat niet (of ik doe iets gigantisch verkeerd).
Frank:
Waarom zet je 3x een $thumb, al dan niet met sleutel, in je code? Je gebruikt juist een while-loop om php zelfstandig alle data op het scherm te zetten. Stel dat jij de query aanpast naar 4 resultaten, loopt de rest van het script in de soep. Laat php het lekker zelf uitzoeken...
De reden waarom je het in een variable zet is omdat je het dan overal op de pagina kan neerzetten. (ook ver van elkaar dus) Dit gaat een beetje moeilijk worden als je het in een while lus zet ;-)
en als je 4 plaatjes ophaalt, dan laat hij de 4e nooit zien, en komt er ook geen fout. dit omdat $thumb[3] dan wel aangemaakt wordt. maar nooit wordt opgeroepen.