Wieso?
-
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
-
flenders schrieb:
1ntrud0r schrieb:
hmm warum zu alt ???
Weil es $_GET erst ab PHP >= 4.1.0 gibt!
das ist mir eigentlich klar ...
flenders schrieb:
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ürdewelche Standardwerte .. ?? wenns existiert hats nen wert .. wenns nicht existiert wirds neu erstellt mit nem fixen wert ..
flenders schrieb:
1ntrud0r 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)
hatte mal den Eindruck bzw weiss es sicher das das auch mal ohne register globals ging .. Das Sicherheitsriskio seh ich allerdings net .. weil jede url var eh noch mindestens 3 mal überprüft wird das keine möglichkeit existiert arbitary code einzubauen ..
-
1ntrud0r schrieb:
flenders schrieb:
1ntrud0r schrieb:
hmm warum zu alt ???
Weil es $_GET erst ab PHP >= 4.1.0 gibt!
das ist mir eigentlich klar ...
Dann verstehe ich deine Frage nicht Wenn er eine ältere PHP Version laufen hat darf er natürlich nicht das $_GET-Array verwenden
1ntrud0r schrieb:
flenders schrieb:
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ürdewelche Standardwerte .. ?? wenns existiert hats nen wert .. wenns nicht existiert wirds neu erstellt mit nem fixen wert ..
Wenn er mit if(!isset($_GET['...'])) $_GET['...'] = '... default ...'; arbeitet wird immer der Default-Wert gesetzt, da die Elemente im $_GET-Array bei alten Versionen (s.o.) ja gar nie gesetzt sind
1ntrud0r schrieb:
flenders schrieb:
1ntrud0r 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)
hatte mal den Eindruck bzw weiss es sicher das das auch mal ohne register globals ging .. Das Sicherheitsriskio seh ich allerdings net .. weil jede url var eh noch mindestens 3 mal überprüft wird das keine möglichkeit existiert arbitary code einzubauen ..
Also wenn register_globals nicht auf on ist kannst du nicht direkt (ala $action) auf die URL vars zugreifen. Deswegen sollte man am besten gleich $HTTP_GET_VARS['action'] verwenden (falls $_GET noch nicht vorhanden ist)
Wenn du immer schön vor der Verwendung von Variablen diese auf einen festen Startwert setzt ist dies kein Problem, wenn du dir aber die Schreibarbeit gescheut hast und nicht alles sauber initialisierst (siehe Code) kann der User ggf. Sachen sehen, die er eigentlich gar nicht sehen darf.<?php // Beispiel für ein Login, wie man es nicht machen sollte, da $login nicht initialisiert wurde // bzw. nicht generell einen Wert zugewiesen bekommt if(($username == 'Hans') && ($passwort == 'Wurst')) $logged_in = true; // so wäre dies kein Problem: // $logged_in = (($username == 'Hans') && ($passwort == 'Wurst')); if($logged_in) { echo 'Erfolgreich eingelogged!'; } else { echo 'Login-Formular'; } ?>
Wird nun das Script nicht wie von dir geplant aufgerufen (mit Übergabe von Username und Passwort), sondern mit ?logged_in=true so wird fälschlicherweise angenommen, dass der User korrekt eingelogged sei
-
got it
-
flenders schrieb:
<?php // Beispiel für ein Login, wie man es nicht machen sollte, da $login nicht initialisiert wurde // bzw. nicht generell einen Wert zugewiesen bekommt if(($username == 'Hans') && ($passwort == 'Wurst')) $logged_in = true; // so wäre dies kein Problem: // $logged_in = (($username == 'Hans') && ($passwort == 'Wurst')); if($logged_in) { echo 'Erfolgreich eingelogged!'; } else { echo 'Login-Formular'; } ?>
sowas skriptet man so oder so nicht