Richie: $_GET()

if ($_GET('anfang')) $anfang=$_GET('anfang')*$anzahl;

$sql = mysql_db_query("db","SELECT user, nachricht, zeit, id FROM Guestbook ORDER BY id desc LIMIT ".$anfang.",".$anzahl."");

Warum funktioniert das nicht und was muss ich machen damit es funktioniert??

mfg Richie

  1. Hallo,

    lass mich mit einer Belehrung anfangen:
    (1) Die Beantwortung der Frage ist leichter, wenn man nicht raten muss was du eigentlich vor hast.
    (2) Es ist ein EXTREMES Sicherheitsrisiko, Daten die vom Nutzer abgeschickt wurden ohne weitere Prüfung einfach zu übernehmen, du solltest also vorher prüfen, ob Anfang einen sinnvollen Wert enthält, eh du die Datenbank damit befeuerst.

    if ($_GET('anfang')) $anfang=$_GET('anfang')*$anzahl;

    $_GET ist ein Array, d.h. die Adressierung erfolgt nicht über ( ) sondern über [ ]. Wenn ein Wert anfang über die URL übergeben wurde, steht der also in  $_GET['anfang'].

    MfG
    Rouven

    --
    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
  2. Hi,

    WAS funktioniert denn nicht?
    Rouven hat recht, liegt wahrscheinlich an den '()'. Aber nochwas:
    verwende besser

    if ((isset($_GET['anfang'])) AND ($_GET['anfang'] != "")) { $anfang=$_GET('anfang')*$anzahl; }

    Der Grund: Die if-Bdingung ist dann auch erfuellt, wenn der Anfang bei 0 liegt.

    Gruesse,

    Lynky

    1. echo $begrüßung;

      Der Grund: Die if-Bdingung ist dann auch erfuellt, wenn der Anfang bei 0 liegt.

      Nein, denn 0, 0.0, '' und '0' ergibt alles false. [http://de2.php.net/manual/en/language.types.boolean.php]

      echo "$verabschiedung $name";

      1. Hi,

        Nein, denn 0, 0.0, '' und '0' ergibt alles false.

        hmmm... true :)
        weiss auch nicht, was mich da geritten hat,

        Lynky

  3. Hi,

    if ($_GET('anfang')) $anfang=$_GET('anfang')*$anzahl;
    $sql = mysql_db_query("db","SELECT user, nachricht, zeit, id FROM Guestbook ORDER BY id desc LIMIT ".$anfang.",".$anzahl."");
    Warum funktioniert das nicht und was muss ich machen damit es funktioniert??

    weil du die grußformel vergessen hast *SCNR*

    probiers doch mal so:

      
    if(isset($_GET['anfang']) && is_numeric($_GET['anfang']))  
    {  
      $anfang=$_GET('anfang')*$anzahl;  
    }  
    else  
    {  
      $anfang=1;  
    }  
    
    

    MfG

  4. echo $begrüßung;

    if ($_GET('anfang')) $anfang=$_GET('anfang')*$anzahl;

    Die []-Klammern wurden ja schon angesprochen. Aber: Wo kommt $anzahl her? Was würde in $anfang stehen, wenn die (korrigierte) Bedingung nicht erfüllt ist?

    $sql = mysql_db_query("db","SELECT user, nachricht, zeit, id FROM Guestbook ORDER BY id desc LIMIT ".$anfang.",".$anzahl."");

    Wenn du einen String in "" einschließt musst du ihn wegen einfacher Variablen nicht verlassen, nur bei Funktionen und berechnenden Ausdrücken ist das nötig. Das Anhängen eines Leerstrings ("") hintendran ist auch nicht sinnvoll.

    Ebenfalls angesprochen wurde die Anfälligkeit des Codeschnipsels gegenüber falschen Eingaben. Bei LIMIT ist das nicht weiter schlimm, da es "nur" zu einem Syntax-Fehler führt

    Warum funktioniert das nicht und was muss ich machen damit es funktioniert??

    Was funktioniert nicht?

    mysql_db_query ist deprecated (die Verwendung ist nicht mehr erwünscht). Nimm mysql_select_db() und mysql_query() statt dessen.
    Es wäre zu Fehlersuchzwecken sinnvoll, den MySQL-Befehl erstmal in einer Variable zu generieren, damit du diese anzeigen lassen kannst, um zu sehen, was denn nun wirklich zur DB gesendet wird.

    Weiterhin solltest du testen, ob die Funktionen false zurückliefern und in dem Fall die Fehlermeldung von MySQL mit mysql_error() abfragen. Vielleicht machst du das ja auch schon, dann betrachte diesen Absatz als gegenstandslos.

    echo "$verabschiedung $name";