Christian Naggert: Nächsten Datensatz auf Inhalt eines Feldes überprüfen

Beitrag lesen

Hi Christian,

$new="SELECT * FROM angebote WHERE id > '$currentid'
AND anzeigen = 1 ORDER BY id LIMIT 1";

Nicht ganz das, was Du willst, aber schon nicht schlecht.

Verstehe ich nicht ganz, warum es nicht das sein soll, was ich möchte, denn ich möchte doch eine Liste der Datensätze, die a) eine größere ID als die aktuelle haben (id > '$currentid') und b) im Feld anzeigen eine 1 stehen haben. Aus der Liste möchte ich dann den ersten Datensatz haben (LIMIT 1). Ich lasse mir ja auf der Seite immer ein Feld ($zeile_eins) aus dem "gefundenen" Datensatz anzeigen und das ist immer der zweite Datensatz meiner Gesamttabelle, nicht aber der von mir ausgeführten Abfrage. Klappt vielleicht das mit $currentid nicht?

Mein gesamter Code sieht mittlerweile so aus:

<? include("class.mysql.inc");
 $connect=new mySQLDB;
 $connect->connect();

$tmp="SELECT * FROM angebote WHERE id = '$id'";
 $connect->do_query($tmp);
 $connect->getrow();

$objektnr=$connect->field("objektnr");
 $id=$connect->field("id");
 $zeile1=$connect->field("zeile_eins");

$new="SELECT * FROM angebote WHERE id > '$currentID' AND anzeigen = 1 LIMIT 1";
 $connect->do_query($new);
 $connect->getrow();

$objektnr=$connect->field("objektnr");
 $id_new=$connect->field("id");
 $zeile_new=$connect->field("zeile_eins");
?>

Schau Dir die Limit-Klausel noch mal genau an. Die kann mehr, als Du bisher nutzt - und das wird Dein Problem lösen. (Dafür wird dann Deine WHERE-Klausel kürzer.)

Das mit der LIMIT Klausel habe ich mir angeschaut, sehe aber nicht ganz den Vorteil, einer weiteren Angabe, da ich doch nur wirklich eine Zeile (Datensatz) benötige, nämlich den ersten mit einer größeren ID als der aktuellen. Ich weiss dementsprechend nicht, wie ich weitere Parameter geschickt einsetzen sollte. Das müsste doch mit LIMIT 1 machbar sein, da, wenn ich das richtig verstanden habe, dann die erste Zeile der Abfrageliste angezeigt wird.

Der entscheidende Hinweis war schon in der vorherigen Mail, nämlich:

Du kannst also dadurch blättern, daß Du jedesmal _alle_ in Frage
kommenden Datensätze aus der Datenbank abfragst, von diesen aber
nur den <n>-ten Datensatz wirklich abgreifst (LIMIT-Klausel).

Ich habe auch mal LIMIT n ausprobiert, dann zeigt er mir aber wieder nix oder habe ich da was nicht kapiert?

Ich weiss, ich bin ein schwerer Fall, aber ich lerne eifrig und hoffe, dass ich es noch schaffe :-)

Viele Grüße
Christian