PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP & MySQL] das verflixte "ORDER BY"


Blocki
2006-10-11, 10:04:28
moin moin,
ich habe folgendes problemchen...

ich lese die tabelle "gastbuch" aus. und zwar alle eintraege, die in der spalte "auth" eine 1 haben. das ganze limitier ich, da ich nur eine bestimmte anzahl von eintraegen auf der seite haben will. das ganze soll aber nach der "ID" absteigend sortiert werden. und da ist das problem. egal wo ich "ORDER BY ID DESC" in der mysql abfrage einbaue, bekomme ich folgende warnung, lasse ich es weg, gibt er mir die eintraege aufsteigend aus:


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/kunden/webs/skarma/gaestebuch/a_gastbuch.php on line 22



hier der code:

<?
include("connect.php");
$seite = $_GET["seite"];
$eintraege_pro_seite = 5;
$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;


$abfrage_gastbuch = "SELECT * from gastbuch WHERE auth = 1 LIMIT $start, $eintraege_pro_seite ORDER BY ID DESC";
$ergebnis_gastbuch = mysql_query($abfrage_gastbuch, $link);

while($row4=mysql_fetch_array($ergebnis_gastbuch)){
$id=$row4['ID'];
$name=$row4['Name'];
$eintrag=$row4['Text'];
$mail=$row4['Email'];
$time=$row4['Uhrzeit'];
$auth2=$row4['auth'];
$Textausgabe = wordwrap($eintrag,50,"\n",1);

?>

//ausgabe in tabellenform


jemand ne idee, wie ich es hinbekomme, dass er mir die absteigend sortiert? ;(

Gast
2006-10-11, 10:28:51
Ich kann mich dunkel daran erinnern, dass LIMIT im Zusammenhang mit ORDER BY nicht erwartungsgemäß funktioniert.
Was passiert, wenn du HAVING statt LIMIT benutzt?

Blocki
2006-10-11, 11:02:28
wie genau muesste ich denn having da einsetzen? wenn ich einfach LIMIT mit HAVING tausche, bekomme ich auch den obrigen fehler.

Gast
2006-10-11, 11:18:21
Müsste ich auch erst mal nachschauen. Was passiert denn, wenn du LIMIT weglässt? Wenn das geht, wissen wir schon mal, dass es daran liegt.

Blocki
2006-10-11, 11:27:16
Müsste ich auch erst mal nachschauen. Was passiert denn, wenn du LIMIT weglässt? Wenn das geht, wissen wir schon mal, dass es daran liegt.
ja gut... wenn ich das limit weglasse (das hatte ich erst gestern eingebaut), funzt es auch. also vertraegt sich das ORDER BY mit dem LIMIT nicht. ich brauche aber beide bzw. deren funktion :usad:.

Gast
2006-10-11, 11:53:08
OK! Das ist ja schon mal ein Hinweis.

Stell mal den Select um:

SELECT * from gastbuch WHERE auth = 1 ORDER BY ID DESC LIMIT $start, $eintraege_pro_seite

Blocki
2006-10-11, 12:07:33
OK! Das ist ja schon mal ein Hinweis.

Stell mal den Select um:

SELECT * from gastbuch WHERE auth = 1 ORDER BY ID DESC LIMIT $start, $eintraege_pro_seite

krass :uconf:. gestern hat es ueberhaupt nicht gefunzt. egal, wo und wie ich ORDER BY ID DESC eingesetzt habe.

aber ich habe zu danken und das tue ich hiermit auch mal: danke lieber gast =).

Al-CAlifAX
2006-10-11, 12:51:00
Der LIMIT Befehl kommt immer NACH dem ORDER Befehl.

Ausserdem solltest dir angeöhnen sauberen MySQL Code zu schreiben.

Spalten und Tabellen setzt man in ``.

Inhalte setzt man in ''.

Der LIMIT befehlt begrenzt Deine Ausgabe und net nur in der Anzahl, sondern auch den Begin.


Deine Abfrage würde also so lauten:

SELECT * FROM `gastbuch` WHERE `auth` = '1' ORDER BY `ID` DESC LIMIT $start, $eintraege_pro_seite

Bei längerem MySQL Code über mehrere Zeilen empfiehlt es sich mit ; zu enden.