Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] LIMIT-Problem

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gast-Avatar
    Ein Gast erstellte das Thema [Erledigt] LIMIT-Problem.

    [Erledigt] LIMIT-Problem

    Hallo,

    ich habe eine Seitennavi geschrieben. D.h., daß ich pro Seite nur 10 Einträge anzeigen lasse, um die Seite übersichtlich zu halten.

    Hier mal die ganze Seitennavi:

    PHP-Code:
    <?php
    //Seitennavigation erstellen
    $eps 10;//Einträge pro Seite ausgeben
    $seiten ceil($zeilen_autor1/$eps); //ergibt x Seiten
    if ($seiten 1$seiten 1;
    if (
    $seiten 3){
    $verweis['verweis'] .= " <a class=seitenzahlen href=\"11.php?autor=".$array_autor1['Autor']."&&seite=1\"><img border=0 src=\"../grafiken/erste.gif\" alt=\"\"></a> ";}
    else {
    $verweis['verweis'] .= "";
    }
    //Seiten-Verweis berechnen
    for ($f = ($seite-5); $f <= $seite$f++){
    if (
    $f <= 0) {$verweis['verweis'] .= "";}
    else {
    if (
    $seite == $f) {$verweis['verweis'] .= "<span class=aktuelle_seitenzahl>[b]".$f."[/b]</span>";}
    else {
    $verweis['verweis'] .= " <a class=seitenzahlen href=\"11.php?autor=".$array_autor1['Autor']."&&seite=".$f."\">".$f."</a> ";}
    if (
    $seite == $f) {$verweis['verweis'] .= "";}
    $anfang = ($seite-1)*$eps;
    }
    }
    for (
    $f = ($seite+1); $f <= ($seite+5); $f++){
    if (
    $f $seiten){$verweis['verweis'] .= "";}
    else {
    $verweis['verweis'] .= " <a class=seitenzahlen href=\"11.php?autor=".$array_autor1['Autor']."&&seite=".$f."\">".$f."</a> ";}
    }
    if (
    $seiten 3){
    $verweis['verweis'] .= " <a class=seitenzahlen href=\"11.php?autor=".$array_autor1['Autor']."&&seite=".$seiten."\"><img border=0 src=\"../grafiken/letzte.gif\" alt=\"\"></a> ";}
    else {
    $verweis['verweis'] .= "";
    }

    ?>
    Hier die Abfrage dazu:

    PHP-Code:
    <?php
    mysql_query
    ("SELECT * FROM Buecher WHERE Autor='".$array_autor1['Autor']."' ORDER BY Titel ASC LIMIT $anfang,$eps");
    ?>
    $anfang ist natürlich definiert. Ich wende diese Verfahrensweise auf mehreren Seiten an. Auf einer funktioniert es komischerweise nicht. Wenn ich $anfang beispielsweise durch "0" ersetze funktioniert es. Das ist deshalb komisch, weil es auf anderen Seiten keine Probleme gibt.

    Hat jemand eine Idee, warum es nicht funktioniert?

  • derHund
    antwortet
    und - verdammt nochmal - error_reporting auf E_ALL setzen!

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von FF
    Hab ich ja schon. Er gibt mir:

    1064: 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 '10' at line 1

    Ich kann damit aber nix anfangen. In Zeile 1 steht "<?php"! Weit und breit keine 10.
    Der Mysql Server kennt das PHP Skript nicht. Zeilenangaben in MYSQL Fehlertexten beziehen sich auf das jeweilige SQL Statement. Da das Statement nicht formatiert ist, befindet sich alles davon in Zeile 1

    sondern Fehlermeldung und tatsächliches SQL Statement ausgeben lassen.
    Es war extra unterstrichen und bezog sich auf
    or die(mysql_error().' : '.$sql);
    Wirklich anschauen, wie das SQL Statement beim MYSQL Server ankommt/ankommen wird - nicht rumraten, wie es sein könnte oder gedacht war.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Ja, richtig. Ist geändert. Hab das dort reingeschrieben, weil es mir an der Stelle eingefallen war. Jetzt funktioniert auf jeden Fall alles.

    Gruß
    Frank

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Hi,

    Wieso steht
    Code:
    $anfang = ($seite-1)*$eps;
    eigentlich irgendwo in einer Schleife in einem else-Zweig? Tu es dorthin, wo es hingehört, ganz nach oben zu den Initlisierungen. Dann wird auch $anfang gleich mit dem richtigen Wert - auf Seite 1 eben mit einer 0 - belegt.

    Zitat von Dein MySQL-Server
    1064: 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 '10' at line 1
    Die Message kommt vom MySQL-Server und somit hat "at line 1" nichts mit dem PHP-Code zu tun, sondern mit Deiner MySQL-Syntax. Und wenn da steht (deshalb solltes Du es ja auch ausgeben) "LIMIT ,10" dann gibts Mecker!

    Gruß
    MarkusHausB

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Alles klar. Das Problem hat sich erledigt. Um $anfang zu berechnen braucht er $seite. Die ist am Anfang aber nicht definiert. Das habe ich jetzt mit

    if (!isset($seite))$seite = 1;

    gemacht und es funktioniert.

    Danke für die Hilfen.
    Frank

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Das hat wohl auch nichts mit der Syntax als solcher zu tun. Bei echo oder print $anfang ist die Ausgabe leer. Darum wird es nicht funktionieren. Weil er ja auf einen Wert wartet.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Hab ich ja schon. Er gibt mir:

    1064: 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 '10' at line 1

    Ich kann damit aber nix anfangen. In Zeile 1 steht "<?php"! Weit und breit keine 10.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Es muß aber ja wohl so sein. Ich finde den Fehler nur nicht. Ich kann da noch Tausend mal drüber lesen.
    Nicht rumraten, sondern Fehlermeldung und tatsächliches SQL Statement ausgeben lassen.
    PHP-Code:
    <?php
    $sql 
    "SELECT * FROM Buecher WHERE Autor='".$array_autor1['Autor']."' ORDER BY Titel ASC LIMIT $anfang,$eps";
    mysql_query($sql) or die(mysql_error().' : '.$sql); 
    ?>

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Er sagt mir, daß etwas mit der Syntax nicht stimmen würde. Das kann aber nicht sein, weil es auf einer anderen Seite funktioniert. Es muß aber ja wohl so sein. Ich finde den Fehler nur nicht. Ich kann da noch Tausend mal drüber lesen.

    $angang ist die aktuelle Seite - 1 mal die Anzahl der anzuzeigenden Artikel pro Seite.

    Also $anfang = ($seite-1)*$eps;

    In der Abfrage steht nun ... LIMIT $anfang,$eps...

    Wenn ich für $anfang einen beliebigen Startwert setze funktioniert es. Das ist aber auch blöd zu erklären.

    Einen Kommentar schreiben:


  • derHund
    antwortet
    nicht funktioniert?
    das heißt?

    wie sieht die query aus, wenn es nicht funktioniert?

    Einen Kommentar schreiben:

Lädt...
X