Wieso?
-
Hallo!
Ich habe einen Code der zum Teil auch noch von Flenders stammt.
Allerdings zeigt er mir keine inhalte, sondern nur "Es sind keine Einträge vorhanden". Ich habe aber extra 6 neue Einträge gemacht.
HILFE!<html> <head> <title>Neue Seite 2</title> </head> <body bgcolor="#AECADB" link="#FFFFFF" vlink="#EAEAEA" alink="#F5F5F5"><? error_reporting(E_ALL); include("config.php"); $Connection_DB=mysql_connect(DB_HOST, DB_USER, DB_PASS) OR die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error()); mysql_select_db(DB_DATABASE) OR die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error()); if(!isset($_GET['offset'])) $_GET['offset'] = 0; $result = mysql_query("SELECT * from tmnews WHERE cat = '".$_GET['section']."' ORDER BY tmdatum DESC LIMIT ".$_GET['offset'].",5"); if($result && mysql_num_rows($result)) { while($row = mysql_fetch_assoc($result)) { echo "<p> </p> <p><b><img src=\"teaser/teaser1.jpg\" width=\"150\" height=\"100\" align=\"left\" border=\"1\" hspace=\"10\" vspace=\"5\"><span class=\"zagol\">• </span></b><span class=\"zagol\"><b>.$row['tmtitel'].</b></span><br> <br> <b><span class=\"content\">[.$row['tmdatum'].] </span></b></p> <p> <span class=\"content\"> <b><a href=\"mailto:.$row['tmmail'].\" class=\"link\">(.$row['tmuser'].)</a></b> .$row['tminhalt']. <br> <br> <a href=\".$row['tmlink'].\" class=\"link\"><b>• .$row['tmlinkname'].</b></a></span></p>\n"; } $res = mysql_query("SELECT COUNT(*) FROM tmnews"); $data = mysql_fetch_row($res); $num = ($data) ? $data[0] : 0; $rowsPerPage = 5; $offset = 0; while($offset < $num) { echo "<a href='list.php?section=".$_GET['section']."&offset=$offset'>[".(1+($offset/$rowsPerPage))."]</a> "; $offset += $rowsPerPage; } } else { echo "Es sind keine Einträge vorhanden!"; } ?> </body> </html>
-
ich würd spontan sagen das hier der fehler liegt :
if($result && mysql_num_rows($result))
bin mir aber nicht ganz sicher
-
ok und ein Verbesserungsvorschlag?
-
if(($result)&&(mysql_num_rows($result)>0))
-
er zeigt immernoch an, dass angeblich keine einträge vo0rhanden sind.
-
Ich denke, dass der Fehler irgendwo in der Abfrage steckt, also hier:
_GET['section']."' ORDER BY tmdatum DESC LIMIT ".$_GET['offset'].",5");
Hast du dir schon mal $_GET['section'] ausgeben lassen?
MfGTobsen
-
oder den sql mal in ne variable packen
_GET['section']."' ORDER etc etc ... und dann einfach mal mit echo schaun, was da eigentlich sache ist.
-
stimmt schon wenn er jetzt noch .. nen fehler macht ist der sql string syntaktisch falsch weil $result = false ..
gibt ja nur 2 möglichkeiten ..
1.entweder es gibt das feld .. tmdatum net / oder falsch geschrieben
2. das was elise gesagt hat ..
-
LIMIT , 5 ist falsch
Nach LIMIT kommt kein Beistrich
-
Unix-Tom schrieb:
LIMIT , 5 ist falsch
Nach LIMIT kommt kein Beistrich
es heisst aber LIMIT 0,5
ref:
The LIMIT clause can be used to constrain the number of rows returned by the SELECT statement. LIMIT takes one or two numeric arguments, which must be integer constants. With one argument, the value specifies the number of rows to return from the beginning of the result set. With two arguments, the first specifies the offset of the first row to return, the second specifies the maximum number of rows to return. The offset of the initial row is 0 (not 1): To be compatible with PostgreSQL MySQL also supports the syntax: LIMIT row_count OFFSET offset.
mysql> SELECT * FROM table LIMIT 5,10; # Retrieve rows 6-15
-
ich würd mal eine Abfrage beim Entwickeln immer so in der Art machen, das hilft sehr viel beim debuggen und 90% aller Probleme findet man dann selber in ein paar Minuten:
$query = "SELECT * from tmnews WHERE cat = '".$_GET['section']."' ORDER BY tmdatum DESC LIMIT ".$_GET['offset'].",5"; $result = mysql_query($query); echo "Abfrage: ".$query."\r\n"; echo mysql_error();
-
dreaddy schrieb:
ich würd mal eine Abfrage beim Entwickeln immer so in der Art machen, das hilft sehr viel beim debuggen und 90% aller Probleme findet man dann selber in ein paar Minuten:
$query = "SELECT * from tmnews WHERE cat = '".$_GET['section']."' ORDER BY tmdatum DESC LIMIT ".$_GET['offset'].",5"; $result = mysql_query($query); echo "Abfrage: ".$query."\r\n"; echo mysql_error();
wenn man die oberen 3 posts von Tobsen,Elise und mir gelesen hat sollte deine Lösungsmethode nich mehr nötig sein.
-
Habe die 2te LIMIT-Einstellung übersehen.
-
Ich hab mir mal $_GET['section'] in nem echo ausgeben lassen:
Notice: Undefined index: 'section' in *******/list.php on line 15
Es sind keine Einträge vorhanden!Bei $result kam nichts
-
Übergibst du denn eine section per URL? Wenn ja ist deine PHP Version zu alt
-
ja ich mache .php?section=news
-
flenders schrieb:
Übergibst du denn eine section per URL? Wenn ja ist deine PHP Version zu alt
hmm warum zu alt ???
sollte er die section wie das offset testen ... und wenn nötig setzen ...
edit auf url vars kann man direkt zugreifen. ( z.B. in deinem fall $section )
-
1ntrud0r schrieb:
hmm warum zu alt ???
Weil es $_GET erst ab PHP >= 4.1.0 gibt!
1ntrud0r schrieb:
sollte er die section wie das offset testen ... und wenn nötig setzen ...
Das ist allgemein sicher sinnvoll, da der User sicher irgendwann mal an den Parametern "rumspielt"
Hier würde dies aber nichts bringen, da die Elemente aus $_GET nie gesetzt wären und immer der Standard-Wert verwendet würde1ntrud0r schrieb:
edit auf url vars kann man direkt zugreifen. ( z.B. in deinem fall $section )
Dazu muss aber register_globals auf on stehen, was bei neueren Versionen defaultmäßig aber schon nicht mehr der Fall ist (da Sicherheitsrisiko)
Besser wäre es statt $_GET bei alten Versionen $HTTP_GET_VARS zu verwenden (allerding nicht Superglobal - sprich: muss in Funktionen erst global gemacht werden um darauf zugreifen zu können
-
also ich wäre auch einfach zu frieden wenn ihr mir nen funktionell überarbeiteten source geben würdet
-
Ich sagte doch schon: Überall anstelle von $_GET $HTTP_GET_VARS verwenden
Ein bisschen wirst du doch wohl hoffentlich auch noch selber machen können