Avatar billede zeno Nybegynder
12. juli 2003 - 21:24 Der er 16 kommentarer og
1 løsning

Bannerscript vil ikke vælge random fra databasen

Hejsa
jeg står med et script der gerne skulle vælge et random banner fra databasen men den viser konstant det samme
nogen der har lyst til at hjælpe med det ?

Koden jeg bruger følger her :
<?
mysql_connect("localhost", "bruger", "password");
mysql_select_db("database");
$res = mysql_query("select * from bannere140 where laas='1' ORDER BY RAND() limit 1");
$number = mysql_num_rows($res);
if ($number == 0) {
$res = mysql_query("select * from bannere140 ORDER BY RAND() limit 1");
}
$row = mysql_fetch_array($res);
print "$row[kode]";
mysql_query("update bannere140 set visninger=visninger+1 where id = '$row[id]'");
?>

Hilsen Zeno
Avatar billede ahv Nybegynder
12. juli 2003 - 21:29 #1
Du skulle vel ikke gøres med MySQL version -> 3.23.54 el. 3.23.55 ?

Der kan nemlig være problemer med rand i disse versioner.
Avatar billede ahv Nybegynder
12. juli 2003 - 21:29 #2
Avatar billede Slettet bruger
12. juli 2003 - 21:31 #3
rand() <--- virker ikke skide godt i mysql...

Prøv med:
$key = true;
$res = mysql_query("select count(*) from bannere140 where laas='1'");
$rows = mysql_result($res,0);
if($rows == 0)
{
    res = mysql_query("select count(*) from bannere140 where 1");
    $rows = mysql_result($res,0);
    $key = false;
}
$start = rand(0,($rows-1));
$sql = "SELECT * FROM bannere140 where ";
if($key)
{
    $sql .= "laas='1';
}
else
{
    $sql .= " 1 ";
}
$sql = " limit $start,1";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
print "$row[kode]";
mysql_query("update bannere140 set visninger=visninger+1 where id = '$row[id]'");


//Heldigvis er count(*) lyn hurtig ved simple queries!
Avatar billede Slettet bruger
12. juli 2003 - 21:32 #4
*Rettelse*
if($key)
{
    $sql .= "laas='1'";
}
else
{
    $sql .= " 1 ";
}
Avatar billede zeno Nybegynder
12. juli 2003 - 21:35 #5
Hej Regin

den giver en parse error i linie 9

Zeno
Avatar billede Slettet bruger
12. juli 2003 - 21:38 #6
Nu er det lidt svært for mig at se hvilken linie der er nummer ni!?!? og jeg kan ikke se det lige umiddelbart... smid lige hele din kode!?
Avatar billede zeno Nybegynder
12. juli 2003 - 21:38 #7
Den fulde kode burde altså se sådan ud ?
Zeno
<?
mysql_connect("localhost", "bruger", "password");
mysql_select_db("database");
$key = true;
$res = mysql_query("select count(*) from bannere140 where laas='1'");
$rows = mysql_result($res,0);
if($rows == 0)
{
    res = mysql_query("select count(*) from bannere140 where 1");
    $rows = mysql_result($res,0);
    $key = false;
}
$start = rand(0,($rows-1));
$sql = "SELECT * FROM bannere140 where ";
if($key)
{
    $sql .= "laas='1'";
}
else
{
    $sql .= " 1 ";
}
$sql = " limit $start,1";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
print "$row[kode]";
mysql_query("update bannere140 set visninger=visninger+1 where id = '$row[id]'");
?>
Avatar billede Slettet bruger
12. juli 2003 - 21:41 #8
if($rows == 0)
{
    $res = mysql_query("select count(*) from bannere140 where 1");
    $rows = mysql_result($res,0);
    $key = false;
}

....
der manglede et $ foran res - $res :P
Avatar billede zeno Nybegynder
12. juli 2003 - 21:45 #9
Hej Regin

Ups ja det kan jeg da godt se
men det gik også galt i linie 25
Zeno
Avatar billede ahv Nybegynder
12. juli 2003 - 21:48 #10
Der manglede vist også et punktom ?

<?
mysql_connect("localhost", "bruger", "password");
mysql_select_db("database");
$key = true;
$res = mysql_query("select count(*) from bannere140 where laas='1'");
$rows = mysql_result($res,0);
if($rows == 0)
{
    $res = mysql_query("select count(*) from bannere140 where 1");
    $rows = mysql_result($res,0);
    $key = false;
}
$start = rand(0,($rows-1));
$sql = "SELECT * FROM bannere140 where ";
if($key)
{
    $sql .= "laas='1'";
}
else
{
    $sql .= " 1 ";
}
$sql .= " limit $start,1";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
print "$row[kode]";
mysql_query("update bannere140 set visninger=visninger+1 where id = '$row[id]'");
?>
Avatar billede Slettet bruger
12. juli 2003 - 21:49 #11
Hvilken fejl får du der... noget med ikke gyldigt mysql resultat?!?!?
Så prøv lige at lav en
echo $sql;
og fortæl mig hvad du får!
Avatar billede ahv Nybegynder
12. juli 2003 - 21:50 #12
regin -> Du manglede et punktom i $sql .= " limit $start,1"; din linie var ->
$sql = " limit $start,1";
Avatar billede Slettet bruger
12. juli 2003 - 21:51 #13
ahv>>Jeps kunne godt se det... sådan går det når man ikke har mulighed for at teste db-kaldene! :(
Avatar billede zeno Nybegynder
12. juli 2003 - 21:58 #14
Hej Regin

Tak du er en knag
Nu køre det som i smør
Kan du ikke lige komme med et svar så du kan få dine points.

Hej Ahv
Jeg må nok erkende at problemet ligger i min sql version
men i det her tilfælde bliver det regin der for sine points for en særdeles
hjælpsom betjening
Men tak til begge
Hilsen
Zeno
Avatar billede Slettet bruger
12. juli 2003 - 21:59 #15
anytime!
ahv>>Har du forresten et link til et sted hvor der står noget konkret om den rettelse i MySQL 4.0 eller sårn!?
Avatar billede ahv Nybegynder
12. juli 2003 - 22:00 #16
Nope, kunne bare huske der var problemer med de versaioner fra det spm. jeg linkede til.
Avatar billede zeno Nybegynder
12. juli 2003 - 22:08 #17
Regin

Jamen så følger de her
Tak
Zeno
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