random link probleem
ik heb op mijn website 3 reclame tabellen. Het is de bedoeling dat de reclame bij het openen van de pagina elke keer verandered.
Ik gebruik hiervoor een simpel random script dat op zich prima werkt:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
$query = "SELECT * FROM reclame ORDER BY RAND() LIMIT 0,1";
$res = mysql_query($query) or trigger_error(mysql_error());
while ($row = mysql_fetch_array($res))
{
?>
$query = "SELECT * FROM reclame ORDER BY RAND() LIMIT 0,1";
$res = mysql_query($query) or trigger_error(mysql_error());
while ($row = mysql_fetch_array($res))
{
?>
Wat het script nu doet is de reclames uit de database halen en deze random in de tabellen zet. Op zich is dit ook de bedoeling, maar hij laat nu in alle 3 de reclame tabellen dezelfde reclames zien.
het is de bedoeling dat in elke reclame tabel dus andere reclame komt te staan.
Heeft iemand enig idee hoe ik ervoor kan zorgen dat een bepaalde reclame niet dubbel weergegeven kan worden en er dus in elke tabel iets anders komt te staan ?
bvd
Robin
Je haalt maar 1 record op, zie de LIMIT. Dat je deze dan 3x op het scherm zet, mag je zelf weten... Misschien de LIMIT aanpassen?
Hij liet dan ineens de tabellen 20 keer zien op de site.
is het niet mogelijk om dit in het echo gedeelte aan te passen of moet dit echt in het query gedeelte ?
en uiteraard heb ik ook geprobeerd om de limit op 3 te zetten maar ook dan maakt hij 3 extra tabellen aan...
De while-loop wordt dan 3 x doorlopen (je hebt tenslotte 3 resultaten, test dit ook even in PHPmyAdmin). Ga dan eens in de rest van je code kijken waarom het daar mis gaat.
Edit: Waar is de rest van je code dan? Er wordt hier helemaal nergens een tabel aangemaakt.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
bvd
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
$query = "SELECT * FROM reclame ORDER BY RAND() LIMIT 0,1";
$res = mysql_query($query) or trigger_error(mysql_error());
while ($row = mysql_fetch_array($res))
{
?>
$query = "SELECT * FROM reclame ORDER BY RAND() LIMIT 0,1";
$res = mysql_query($query) or trigger_error(mysql_error());
while ($row = mysql_fetch_array($res))
{
?>
----- begin div/tabel 1 -----
----- eind div/tabel 1 -----
----- begin div/tabel 2 -----
----- eind div/tabel 2 -----
----- begin div/tabel 3 -----
----- eind div/tabel 3 -----
nog steeds heeft het aanpassen van de limit geen effect.
hij haalt nu nog steeds random de reclames uit de database en deze veranderen ook bij elke refresh van de pagina.
met de echo haal ik in alle 3 de tabellen met dezelfde code de resultaten op.
naar mijn mening zijn er dan 2 mogelijk oplossingen:
- de echo aanpassen zodat er 3 verschillende reclames geprint worden
- de query aanpassen zodat er geen dubbel reclames kunnen worden weergegeven.
ik heb alleen geen idee hoe ik dit kan doen en of er andere oplossingen zijn..
ben zelf uiteraard ook al aan het googlen en het eea aan het proberen maar het wil me gewoon niet lukken
als output. Wat zou er dan gebeuren? Ik verwacht dat je dan 3x dezelfde output in verschillende div's op het scherm krijgt.
Echter, om dat de while-lus x-keer wordt doorlopen, zullen er ook x-aantal div-jes over elkaar heen staan. Kijk maar eens in je html-broncode.
Je moet in je lus slechts 1 x zetten en een variabele aanmaken voor het beschrijven van de div. Laat een tellertje meelopen o.i.d.
Iedere keer dat jij de while-lus doorloopt, zet je 3x een Echter, om dat de while-lus x-keer wordt doorlopen, zullen er ook x-aantal div-jes over elkaar heen staan. Kijk maar eens in je html-broncode.
Je moet in je lus slechts 1 x zetten en een variabele aanmaken voor het beschrijven van de div. Laat een tellertje meelopen o.i.d.
nogmaals bedankt
$query = "SELECT * FROM tips,reclame ORDER BY RAND() LIMIT 0,4";
$res = mysql_query($query) or trigger_error(mysql_error());
if ($res == 0)
{
echo "fout";
}
else {
?>
en dan het volgende als echo voor reclame 1 :
reclame 2 :
etc etc.
toch bedankt voor de reacties