Problem mit Datenbankabfrage

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

  • 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
    Zuletzt geändert von Melewo; 05.05.2013, 19:44.

    Kommentar


    • #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!

      Kommentar


      • #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

        Kommentar


        • #5
          Zitat von Westdesign88 Beitrag anzeigen
          ...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.

          Kommentar


          • #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

            Kommentar

            Lädt...
            X