Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP variablen Übergabe für MySQL Abfrage

Einklappen

Neue Werbung 2019

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

  • PHP variablen Übergabe für MySQL Abfrage

    Hallo,

    bin noch eher ein Grünschnabel in dem Gebiet Webprogrammierung, daher bitte ich um mich nicht zu steinigen

    Für ein Schulprojekt, soll ein Film-ausleih-Shop gestaltet werden.

    Also zu meinem Problem:
    In der Navigationsleiste der index.php wird über den Punkt "Filme A-Z" eine Seite (abisz.php) in den DIV-Container der index.php geladen. Die abis.php sieht so aus:

    Wählen Sie die Filme nach dem Anfangsbuchstaben aus:
    A | B | C | ....

    Auszug aus abisz.php:
    Code:
    <a href="index.php?$var=A">A</a><a> | </a>
    Auszug as index.php:
    Code:
    $db=mysql_connect("server","db","");
     if ($db==false) {
       echo "Keine Verbindung möglich!";
       exit;
    }
    mysql_select_db("db",$db) or exit ("Datenbank kann nicht geöffnet werden");
    $sql = "SELECT title FROM filme where title like '$var%' LIMIT 0, 20";
    $erg = mysql_query ($sql,$db)
    or die ("Fehlermeldung=". mysql_error());
    $anz = mysql_num_rows($erg);
    
    echo "<table id=tab>";
    echo "<tr><td>Filme</td></tr>";
    
    for ($i=0; $i<$anz;$i=$i+1)
    {
      $a=mysql_result($erg, $i, "title");
    echo "<tr><td>$a</td></tr>";
    }
    echo "</table>";
    ?>
    Wenn also der Benutzer auf den Buchstaben A klicken soll, soll der Variable $var der Wert "A" an die index.php übergeben werden. Daraufhin soll die Datenbankverbindung hergestellt werden und die Abfrage mit Einbezug der $var durchgeführt werden
    Leider funktioniert das vorhaben nicht so recht. Die Abfrage berücksichtigt nicht den Wert "A".

    Ich habe bereits mit echo $var geprüft ob die variable übergeben wird und dort gibt er mir den Wert "A" aus.

    Könnte mir jemand einen Denkanstoß geben bzw. mich korrigieren, wenn das nicht der richtige Weg ist?

    Danke schonmal im vorraus.

    Gruß

  • #2
    Warum so umständlich mit einer for-Schleife und mysql_result auslesen?

    while ($row=mysql_fetch_assoc($erg))
    echo $row['titel'];

    Was wird genau ausgelesen?
    Normalerweise werden Variablen aus der URL mit $_GET['varname'] entgegengenommen.

    Kommentar


    • #3
      Der an das Script übergebene Wert steht nicht in $var, sondern in $_GET['var'].

      Es gibt eine Servereinstellung register_globals=on, bei der du $var sofort zur Verfügung hättest. Viele hoffnungslos veraltete Tutorials oder Bücher lehren dies noch so.
      [PHP]if ($var != 0) {
      $var = 0;
      }[/PHP]

      Kommentar


      • #4
        Zitat von Wolla Beitrag anzeigen
        Der an das Script übergebene Wert steht nicht in $var, sondern in $_GET['var'].

        Es gibt eine Servereinstellung register_globals=on, bei der du $var sofort zur Verfügung hättest. Viele hoffnungslos veraltete Tutorials oder Bücher lehren dies noch so.
        Erstmal danke für eure schnellen Antworten.
        @Hexe: Das mit der Ausgabe in der FOR Schleife funktioniert zwar Grundsätzlich aber dein Lösungsansatz hört sich weniger umständlich an. Werde ich später testen.

        @Wolla: Habe dies in meinem Code geändert, bekomme aber daraufhin eine Fehlermeldung:

        Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\htdocs\filmforum_Linden\content\index.php on line 196

        Habe diese Zeile bearbeitet:
        Code:
        $sql = "SELECT title FROM filme where title like '$_GET['var']%' LIMIT 0, 20";

        Kommentar


        • #5
          PHP-Code:
          $sql "SELECT title FROM filme 
          where title like '"
          .mysql_real_escape_string($_GET['var'])."%' LIMIT 0, 20"
          Variablen aus der URL oder Formularen niemals einfach so in SQL-Anweisungen verwenden!

          Kommentar


          • #6
            ok werde es mal versuchen.

            Kommentar


            • #7
              Die Fehlermeldung ist zwar jetzt weg, aber leider wird weiterhin noch keine Daten ausgegeben.

              Kommentar


              • #8
                Hast du dir $sql mal per echo ausgeben lassen?
                Was steht in $anz ?

                Kommentar


                • #9
                  Zitat von Hexe Beitrag anzeigen
                  Hast du dir $sql mal per echo ausgeben lassen?
                  Was steht in $anz ?
                  $sql = SELECT title FROM filme where title like '%' LIMIT 0, 20
                  $anz = 20

                  Also nimmt er scheinbar nicht den Wert aus der $var...

                  Kommentar


                  • #10
                    So habe es hinbekommen auch wenn es nicht wirklich einen Sinn ergibt, warum es funktioniert.
                    Habe in der "abis.php" den Wert folgendermaßen übergeben:

                    Code:
                    <a href="index.php?id=A">A</a>
                    Zuvor hatte ich es mit "$var=A" übergeben. Anscheinend kam er mit Bezeichnung durcheinander.

                    In meiner "index.php" habe ich dann den Wert aus $_GET['id'] ausgegeben.

                    Code:
                    $sql = "SELECT title FROM filme where title like '".mysql_real_escape_string($_GET['id'])."%'  LIMIT 0, 20";
                    Danke für die bisherige Hilfe.

                    Gruß

                    Kommentar


                    • #11
                      Vorher hattest du
                      <a href="index.php?$var=A">A</a>
                      Da war das $ falsch.

                      Kommentar

                      Lädt...
                      X