Problem mit Datenbankabfrage

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit Datenbankabfrage

    Guten Tag,

    ich versuche mich auf meine alten Tage nochmal ein wenig mit PHP und MySQL auseinander zu setzen. Ich habe Verbindung zur Datenbank hergestellt und hab dort die Tabelle "Daten" mit den Feldern "Von" "Nach" "Datum" und "Kosten".

    Wie ihr seht habe Ich in der Datei "ausgabe.php" nun oben eine Abfrage in der ich Von, Nach und Datum abfrage und nun soll er mir alle Einträge ausspucken die er unter den angegebenen Bedienungen in der Tabelle findet. Ich hoffe es kann mir jemand helfen ich bin wirklich am verzweifeln.

    PHP Code:
    <html>
    <head><title>Ausgabe</title></head>
    <body>
    <h3>Datenbankabfrage</h3>
    <hr>
    <form action="ausgabe.php" method="post">
    <br>
    <table>
    <tr>
    <td>Von:
    <br>
    <select name="Start">
    <option value="Berlin">Berlin</option>
    <option value="Hamburg">Hamburg</option>
    <option value="München">München</option>
    <option value="Nürnberg">Nürnberg</option>
    </select>
    </form>
    </td>
    </tr>

    <tr>
    <td>
    <br>
    Nach:<br>
    <select name="Ziel">
    <option value="Berlin">Berlin</option>
    <option value="Hamburg">Hamburg</option>
    <option value="München">München</option>
    <option value="Nürnberg">Nürnberg</option>
    </select>
    <br>
    Am:<br>
    <input name="Datum" type="text" size="10" maxsize="10" value="<?php
    $timeget 
    time();
    $datum date("d.m.Y",$timeget);
    echo 
    $datum;
    ?>" >
    <br>

    <input type="submit" value="Abfrage">
    <input type="reset"  value="Zurücksetzen">
    </form>
    </td>
    </tr>
    </table>

    <hr>
    <h3>Suchergebnis</h3>
    <hr>




    <?php

    //aufbau der datenbankverbindung
    $host 'localhost';
    $user '****';
    $password '****';
    $db '*****';
    $start $_POST['Start'];
    $ziel $_POST['Ziel'];
    $datum $_POST['Datum'];

    //verbindung zur db herstellen
    mysql_connect($host$user$password);
    mysql_select_db($db);

    $anfrage="SELECT * FROM Daten Where FELD_NAME 1 = '$start' AND FELD_NAME 2 = '$ziel' AND FELD_NAME 3 = '$datum'";
    $ergebnis="mysql_query($anfrage)";
     echo 
    $ergebnis;
    ?>
    Alles was er mir anzeigt ist:

    PHP Code:
    Suchergebnis

          mysql_query
    (SELECT FROM Daten Where FELD_NAME 1 'Berlin' AND FELD_NAME 2 'Hamburg' AND FELD_NAME 3 '20.05.2013'

  • #2
    Wenn Du erst beginnst, dann beginne gleich mit MySQLi, drum nur ein Beispiel, dass Du erst einmal eine Ausgabe erhältst bzw. eine Vorstellung davon. Habe ich jetzt nicht extra getestet.

    PHP Code:
    $anfrage  "SELECT * FROM Daten Where FELD_NAME_1 = '".$start."' AND FELD_NAME_2 = '".$ziel."' AND FELD_NAME_3 = '".$datum."'";
    $ergebnis mysql_query($anfrage);

    if (!
    $ergebnis) { exit("Fehler bei Ergebnis!");
    }

    $row mysql_fetch_assoc($ergebnis);

    $feldname_1 htmlspecialchars($row["FELD_NAME_1"], ENT_QUOTES);
    $feldname_2 htmlspecialchars($row["FELD_NAME_2"], ENT_QUOTES);        
    $feldname_3 htmlspecialchars($row["FELD_NAME_3"], ENT_QUOTES);

    echo 
    $feldname_1." - ".$feldname_2." - ".$feldname_3."\n"
    Wenn mehr als ein Datensatz ausgeben werden soll, so kannst Du gleich das erste Beispiel übernehmen:

    PHP: mysql_fetch_assoc - Manual
    Last edited by Melewo; 05-05-2013, 19:44.

    Comment


    • #3
      Danke für Ihre Hilfe aber weder Ihr Code noch das Beispiel hat funktioniert ich bin echt am verzweifeln Ich denke das ist einfach zu hoch auf meine alten Tage!

      Comment


      • #4
        Anführungszeichen

        Hallo,

        man kann Fehler doch auch nutzen, um daraus zu lernen. Probieren Sie's doch mal mit

        $ergebnis=mysql_query($anfrage);

        in der vorletzten Zeile. Weitere Einzelheiten:

        PHP: mysql_query - Manual

        Comment


        • #5
          Originally posted by Westdesign88 View Post
          ...und hab dort die Tabelle "Daten" mit den Feldern "Von" "Nach" "Datum" und "Kosten".
          Ich weiß ja nicht, was Du da machst, doch wenn ein Feld "Von" und ein anderes "Nach" benannt wurde, dann musst Du die Feldnamen auch benutzen.

          PHP Code:
          $anfrage  "SELECT * FROM Daten Where Von = '".$start."' AND Nach = '".$ziel."'";
          $ergebnis mysql_query($anfrage);

          if (!
          $ergebnis) { exit("Fehler bei Ergebnis!");
          }

          $row mysql_fetch_assoc($ergebnis);

          $feldname_1 htmlspecialchars($row["Von"], ENT_QUOTES);
          $feldname_2 htmlspecialchars($row["Nach"], ENT_QUOTES);        
          $feldname_3 htmlspecialchars($row["Datum"], ENT_QUOTES);

          echo 
          $feldname_1." - ".$feldname_2." - ".$feldname_3."\n"
          Wenn es daran nicht liegt, so halt die Fehler, wie in den einzelnen Beispielen beschrieben, suchen.

          Comment


          • #6
            Hallo Westdesign88,

            es ist nie zu spät um zu lernen!
            Aber wenn man lernt, dann auch gleich richtig ;-)
            Beim Verarbeiten der Variablen $start, $ziel und $datum wäre es noch besser, bevor diese Werte in der Query an die Datenbank gegeben werden, die Funktion mysql_real_escape_string() anzuwenden.
            Siehe: PHP: mysql_real_escape_string - Manual
            Da der Inhalt der Variablen über $_POST an das Skript gegeben wird, könnte jemand diese Werte manipulieren und so versuchen die Datenbank zu hacken. Um sich dagegen zu schützen ist es immer besser die Variablen über mysql_real_escape_string() zu "reinigen".

            [COLOR=#000000][COLOR=#0000CC]$start [/COLOR][COLOR=#006600]= mysql_real_escape_string([/COLOR][COLOR=#0000CC]$_POST[/COLOR][COLOR=#006600][[/COLOR][COLOR=#CC0000]'Start'[/COLOR][COLOR=#006600]]);
            [/COLOR][COLOR=#0000CC]$ziel [/COLOR][COLOR=#006600]= [/COLOR][/COLOR][COLOR=#000000][COLOR=#006600][COLOR=#000000][COLOR=#006600]mysql_real_escape_string([/COLOR][/COLOR][/COLOR][COLOR=#0000CC]$_POST[/COLOR][COLOR=#006600][[/COLOR][COLOR=#CC0000]'Ziel'[/COLOR][COLOR=#006600]]);
            [/COLOR][COLOR=#0000CC]$datum [/COLOR][COLOR=#006600]= [/COLOR][/COLOR][COLOR=#000000][COLOR=#0000CC][COLOR=#000000][COLOR=#006600]mysql_real_escape_string([/COLOR][/COLOR]$_POST[/COLOR][COLOR=#006600][[/COLOR][COLOR=#CC0000]'Datum'[/COLOR][COLOR=#006600]]);

            [/COLOR][/COLOR]Wenn Sie darüber mehr erfahren möchten, könnten Sie mal nach "SQL Injection" googeln oder z.B. dies lesen: SQL Injection verhindern – Angriffe vermeiden - howto-co.de

            Viele Grüße und Erfolg,
            ArthurDent42

            Comment

            Working...
            X