Avatar billede locura Novice
15. maj 2008 - 18:24 Der er 11 kommentarer og
2 løsninger

Fejl i kode som har virket før.

Hej,

Jeg har en kode som lige pludselig er holdt op med at fungere. Jeg har intet ændret!

Koden er som følgende:

<?
$data = mysql_query("select * from dvdliste order by titel");
$antal = mysql_num_rows($data);

$antal_pr_raekke = $antal/2+1;

$raekke1 = mysql_query("select * from dvdliste order by titel limit 0,$antal_pr_raekke");

$raekke2 = mysql_query("select * from dvdliste order by titel limit $antal_pr_raekke,$antal");
   
while ($row_raekke1 = mysql_fetch_assoc($raekke1)) {

echo $row_raekke1['titel'];
echo "<br>";
}
   
while ($row_raekke2 = mysql_fetch_assoc($raekke2)) {

echo $row_raekke2['titel'];
echo "<br>";
}
?>


Der gives følgende fejlmeddelelse:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in ....
Avatar billede jakobdo Ekspert
15. maj 2008 - 18:27 #1
Ret disse 2 linjer:
$raekke1 = mysql_query("select * from dvdliste order by titel limit 0,$antal_pr_raekke");

$raekke2 = mysql_query("select * from dvdliste order by titel limit $antal_pr_raekke,$antal");

til:

$raekke1 = mysql_query("select * from dvdliste order by titel limit 0,$antal_pr_raekke") or die('SQL1: ' . mysql_error());

$raekke2 = mysql_query("select * from dvdliste order by titel limit $antal_pr_raekke,$antal") or die('SQL2: ' . mysql_error());
Avatar billede locura Novice
15. maj 2008 - 18:33 #2
Så giver den en blank side med denne meddelelse:

SQL1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '143.5' at line 1
Avatar billede nielle Nybegynder
15. maj 2008 - 18:43 #3
Lyder som om at der nu er et ulige antal rækker i din dvdliste-tabel. Dermed bliver $antal_pr_raekke til et komatal, og det høre ikke hjemme i en LIMIT.

Sørg for at runde den af til et heltal.
Avatar billede locura Novice
15. maj 2008 - 18:47 #4
Ja.. Du kan meget vel have ret, har du lige en hurtig kode for at runde op? ;)
Avatar billede nielle Nybegynder
15. maj 2008 - 18:48 #5
Avatar billede jakobdo Ekspert
15. maj 2008 - 18:50 #6
Runder op: http://dk.php.net/ceil
Runder ned: http://dk.php.net/floor
Runder op/ned som vi kender med penge: http://dk.php.net/round (<- 0,4 bliver til 0 og 0,5 -> bliver til 1)
Avatar billede locura Novice
15. maj 2008 - 18:58 #7
OK! Har gjort følgende:

$antal_pr_raekke1 = $antal/2+1;
$antal_pr_raekke = ceil($antal_pr_raekke1);

Nu melder den så kun fejl i den ene række:

while ($row_raekke1 = mysql_fetch_assoc($raekke1)) {

echo $row_raekke1['titel'];
echo "<br>";
}

Fejlmeddelelse:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in ...
Avatar billede nielle Nybegynder
15. maj 2008 - 19:09 #8
Prøv at udskrive den pågældende SQL sætning.

Et spørgsmål: Hvorfor delere du i øvrigt din kode op over 2 sql-kald?
Avatar billede locura Novice
15. maj 2008 - 19:16 #9
fordi den skal dele alle udtræk fra samme tabel i databasen i 2 separate kolonner på en side!

$antal_pr_raekke1 = $antal/2+1;
$antal_pr_raekke = ceil($antal_pr_raekke1);


$raekke1 = mysql_query("select * from dvdliste order by titel limit 0,'$antal_pr_raekke'");
$raekke2 = mysql_query("select * from dvdliste order by titel limit $antal_pr_raekke,$antal");
Avatar billede locura Novice
15. maj 2008 - 19:18 #10
ups.. glemte at fjerne '' omkring $antal_pr_raekke.. nu virker det!

Tak for hjælpen nielle, smid et svar ;)
Avatar billede nielle Nybegynder
15. maj 2008 - 19:48 #11
Bør være en deler med jakobdo - brugen af die() kommandoen er vigtig at kunne.
Avatar billede jakobdo Ekspert
15. maj 2008 - 20:25 #12
Tak Nielle! :o)
Avatar billede jakobdo Ekspert
16. maj 2008 - 18:31 #13
Takker for point.
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