[PHP] Suchfunktion Datenbank

Dieses Thema im Forum "Webentwicklung" wurde erstellt von erz, 1. September 2012 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 1. September 2012
    Suchfunktion Datenbank

    Hallo,
    bin dabei mich mit PHP vertraut zu machen. Speziell mit Datenbanken.
    Als Anfänger hab ich es bis jetzt nur folgendes zustande gebracht:
    -Datenbank anlegen
    -Datenbank mit Daten füllen
    -Datenbank abfragen

    Nun versuche ich vergeblich eine Suchfunktion hinzubekommen.
    Meine Tabbelle sieht so aus:
    ID Datum Liter Kosten
    1 01.08.2012 30 10,00
    2 02.08.2012 50 20,00
    3 03.08.2012 80 30,00

    Eine Abfrage mit diesem Script gibt mir auch diese Daten aus.
    PHP:
    $Datumsuche  $_GET [ "Datum" ]; 

    $abfrage  "Select datum FROM oel WHERE datum LIKE '%" . mysql_real_escape_string ( $datumsuche ). "%'" ;
    $ergebnis  mysql_query ( $abfrage ); 

    if (!
    $ergebnis
    {
    die (
    'Es konnten keine Suchergebnisse gefunden werden' );
    }
    else
    {
    echo 
    'folgende Datum wurden gefunden:<br />' ;
    }
    $i  0 ;
    WHILE (
    $row [ $i ] =  mysql_fetch_array ( $ergebnis ))
    {
       echo 
    $row [ $i ][ 'datum' ] .  "<br />" ;
       
    $i ++;
    }
    ?>  
    Ich möchte aber über ein Eingabefeld, in das ich ein bestimmtes Datum schreibe,
    erreichen, das alle Werte die in dieser Zeile stehen, angezeigt werden.
    Zum Bsp.: Eingabe: 02.08.2012
    Ausgabe: 02.08.2012 50 20,00

    Kann man sowas hinbekommen????

    Danke Bernd
     
  2. 2. September 2012
    AW: Suchfunktion Datenbank

    Query verändern. In deiner Query fragst du nur die Daten aus der Spalte "Datum" ab, in der das eingegebene Datum steht.

    ändern zu

    * = Wildcard. Diese Query gibt dir dann alle Spalten aus der Zeile mit dem Datum = $datumsuche.

    Du kannst dann in deiner Schleife mithilfe von $row[$i]['liter'] und $row[$i]['kosten'] darauf zugreifen.

    MfG
     
  3. 2. September 2012
    Zuletzt bearbeitet: 2. September 2012
    AW: Suchfunktion Datenbank

    Bitte gleich richtig lernen!
    Das Wildcard nicht verwenden, wenn man nicht absolut weiß "warum" man es benutzt.
    Die Nachteile eines Wildcards überwiegen dem "Vorteil" sich Schreibarbeit zu sparen.
    Wenn du die genauen Gründe wissen willst warum "*" nicht verwendet werden sollte, eine Suchmaschine zu Rate ziehen.
    Also einfach alle Spalten aufzählen die benötigt werden.

    Der nächste Fehler ist das du nicht den richtigen Datentyp für das Feld verwendest. Jedes Datenbanksystem hat einen eigenen Typ für Datumsformate. In den meisten fällen heist dies "date".[1] Mit "like" lassen sich Strings vergleichen, was du offensichtlich nicht willst. Also hier das Handbuch zum Datenbanksystem heranziehen und die gewünschten "Datums-Methoden" benutzen.[2]

    [1]http://dev.mysql.com/doc/refman/5.5/en/date-and-time-types.html
    [2]http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
     
  4. 2. September 2012
    AW: Suchfunktion Datenbank

    Erstmal danke für eure Antworten.
    Hab versucht eure Tipps zu verwenden. Für das Datum nehm ich jetzt "DATE" als Dateityp.
    Meine Code hab ich so geändert:
    PHP:
    $Datumsuche  $_GET [ "Datum" ]; 

    $abfrage  "SELECT datum, liter, kosten FROM `oel` WHERE `datum` LIKE '%" . $datum . "%' AND `liter` LIKE '%" . $liter . "%' AND `kosten` LIKE '%" . $kosten . "%'" ;
    $ergebnis  mysql_query ( $abfrage ); 

    if (!
    $ergebnis
    {
    die (
    'Es konnten keine Suchergebnisse gefunden werden' );
    }
    else
    {
    echo 
    'folgende Datum wurden gefunden:<br />' ;
    }
    $i  0 ;
    WHILE (
    $row [ $i ] =  mysql_fetch_array ( $ergebnis ))
    {
       echo 
    $row [ $i ][ 'datum' ], $row [ $i ][ 'liter' ], $row [ $i ][ 'kosten' ] .  "<br />" ;
       
    $i ++;
    }
    Das bringt bei der Abfrage:
    2012-08-02511,30 €
    2012-08-031015,50 €
    2012-08-042015,00 €
    2012-08-053030,00 €

    Ich möchte aber nur die Werte ( Liter u. Kosten) ausgeben, die zu den gesuchten Datum gehören.
    Zum Bsp.: Eingabe: 02.08.2012
    Ausgabe: 02.08.2012 5 11,30 €

    Ich hab mir auch die beiden Links von nosferatu angeschaut. Das Problem ist nur, daß
    mein Englisch mehr als spärlich ist. Bin jetzt 57 und in der DDR war Englisch nicht
    so präsent, die standen mehr auf Russich.
     
  5. 2. September 2012
    AW: Suchfunktion Datenbank

    Das ganze gibts auch in deutsch. Ist meist nicht ganz aktuell aber auch ok. Hättest Du aber danach gesucht wäre dir das aufgefallen.
    http://dev.mysql.com/doc/refman/5.1/de/index.html

    Like ist immernoch falsch.
    Wenn du nur Liter und kosten ausgeben willst nimm einfach das Datum aus den SELECT...


    PHP:
    SELECT  ` liter `, ` kosten FROM  ` oel WHERE  ` datum `=  mysql_real_escape_string ( $datum )
     
  6. 2. September 2012
    AW: Suchfunktion Datenbank

    Ich weiß ich stell mich blöd an, aber wenn ich das so ändere kommt dann:
    "Es konnten keine Suchergebnisse gefunden werden"
    PHP:
    $Datumsuche  $_GET [ "Datum" ]; 

    $abfrage  "SELECT `datum`,`liter`, `kosten` FROM `oel` WHERE `datum`= mysql_real_escape_string( $datum )  " ;
    $ergebnis  mysql_query ( $abfrage ); 

    if (!
    $ergebnis
    {
    die (
    'Es konnten keine Suchergebnisse gefunden werden' );
    }
    else
    {
    echo 
    'folgende Datum wurden gefunden:<br />' ;
    }
    $i  0 ;
    WHILE (
    $row [ $i ] =  mysql_fetch_array ( $ergebnis ))
    {
       echo 
    $row [ $i ][ 'datum' ], $row [ $i ][ 'liter' ], $row [ $i ][ 'kosten' ] .  "<br />" ;
       
    $i ++;
    }
     
  7. 2. September 2012
    AW: Suchfunktion Datenbank

    Du musst auch die Variable benutzen die du oben setzt

    PHP:

    $Datumsuche 
    $_GET [ "Datum" ];  

    $abfrage  "SELECT `datum`,`liter`, `kosten` FROM `oel` WHERE `datum`= '" mysql_real_escape_string ( $Datumsuche ) . "'  "
    $ergebnis  mysql_query ( $abfrage );  


    // ignorieren, php-code bereich vergrößerer :)
     
  8. 2. September 2012
    AW: Suchfunktion Datenbank

    Nicht einfach abschreiben - Mitdenken!

    Ich bin hier raus, null Eigeninitiative.

    Lerne Grundlagen - Quellensammlung
     
  9. 2. September 2012
    AW: Suchfunktion Datenbank

    ich werd noch blöd. Hab das geändert, kommt jetzt:
    "folgende Datum wurden gefunden:"
    zeigt mir aber nichts an.
    Du schreibst (Du musst auch die Variable benutzen die du oben setzt).
    Wenn ich jetzt ein Datum reinschreibe in
    PHP:
    $Datumsuche  $_GET [ "2012-08-02" ]; 
    zeigt es mir aber auch nichts an.
    Ich kann es schon verstehen was Nosferatu schreibt, aber versuchen tu ich es schon.
     
  10. 2. September 2012
    AW: Suchfunktion Datenbank

    Dein Code Beispiel ist jetzt auch falsch! Schau dir mal Post/get über Google an. Du solltest den Name benutzen und nicht das, was du in der variablen speichern willst!
    In deinem Fall ist $Datumsuche nämlich leer
     
  11. 2. September 2012
    AW: Suchfunktion Datenbank

    Vielen Dank an alle die mir versucht haben zu helfen.
    Ich werd es mal lieber lassen. ist zu hoch für mich.
    Trotzdem Danke
     
  12. 3. September 2012
    Zuletzt bearbeitet: 3. September 2012
    AW: Suchfunktion Datenbank

    hey,

    so schnell gibst du auf.
    eigeninitiative ist sicher sehr wichtig um eine scriptsprache zu lernen.
    aber wenn man null ahnung hat, kann man sich durchaus auf den richtigen weg schupsen lassen,
    oder auch herrn google fragen.

    PHP:
    // das kommt von deiner adresse h***://domain.com?Datum=2012-08-02
    $_GET [ "Datum" ] =  '2012-08-02' ;
    $Datumsuche  $_GET [ "Datum" ];  

    $abfrage  "SELECT `datum`,`liter`, `kosten` FROM `oel` WHERE `datum`= '" mysql_real_escape_string ( $Datumsuche ) . "'  "
    $ergebnis  mysql_query ( $abfrage );  
    viel erfolge beim lernen.

    // edit
    wenn etwas nicht klappt versuche ich den grund zu finden.
    dabei hilft
    PHP:
    //das hängst du mal unter deinem query.
    if ( mysql_error ()){
      die(
    mysql_error ());
    }
    wenn in deiner abfrage also ein fehler ist,
    erhälst du damit anhaltspunkte.
     
  13. 3. September 2012
    AW: Suchfunktion Datenbank

    Hallo Onip,

    und wie es klappt. Alles andere bekomme ich sicher selbst hin

    Vielen Dank und schönen Abend noch.
     
  14. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.