[PHP] MySQL/PHP Suchen im Formular klappt nicht

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Dw4rf, 3. November 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 3. November 2008
    MySQL/PHP Suchen im Formular klappt nicht

    Hallo zusammen,

    ich versuche mir gerade an einem kleinen Formular, welches mir via Suche Maske die benötigten Felder aus der Datenbank ausgibt.

    Leider will es nicht so ganz, also es werden keine Werte Ausgegeben.
    Hoffe mir kann jemand Helfen:

    PHP:
    <form action="<?php  echo  $_SERVER [ 'PHP_SELF' ];  ?>" method="get">
        <b>Quest Name:</b> <input type="text" name="titel" value="" />
        <input type="submit" value="Suchen" />
    </form>
     
    <?php  if ( $_REQUEST [ 'titel' ]) {

         
    $abfrage  "SELECT * FROM ` Quests` WHERE `titel`  LIKE '%"  $_REQUEST [ 'titel' ].  "'" ;
        
    $result  mysql_query ( $abfrage $db );  // Führt die Abfrage aus
        
    $row  mysql_fetch_array ( $result );  // Macht aus dem Ergebniss was brauchbares
       //print_r($_REQUEST);
       
    echo  mysql_errno () .  ": "  mysql_error () .  "\n" ;
        
        echo 
    '<form action="quests.php" method="get">' ;
        echo 
    '<input type="hidden" name="qid" value="' . $row [ 'qid' ]. '">' ;
        echo 
    '<table width="100%">' ;
        echo 
    '<tr><td><b>Quest:</b></td><td>'  $row [ 'titel' ] .  '</td></tr>' ;
        echo 
    '<tr><td><b>Beschreibung:</b></td><td>'  $row [ 'beschreibung' ] .  '</td><td><b>Quest Abgeben:</b></td><td>'  $row [ 'npc_abgeben' ] .  '</td></tr>' ;
        echo 
    '<tr><td><b>Questgeber:</b></td><td>'  $row [ 'npc_nehmen' ] .  '</td><td><b>Belohnung:</b></td><td>'  $row [ 'gold' ] .  '</td></tr>' ;
        echo 
    '</td></tr>' ;    
        echo 
    '</table>' ;
        

        
    }
    ?>
    So sieht die Datenbank schonmal aus:
    {bild-down: http://2892.all2host.de/datenbank.jpg}


    Vielen Dank schonmal im vorraus

    //Dw4rf
     
  2. 3. November 2008
    AW: MySQL/PHP Suchen im Formular klappt nicht

    Dein momentaner Code lautet
    PHP:
    $abfrage  "SELECT * FROM ` Quests` WHERE `titel`  LIKE '%"  $_REQUEST [ 'titel' ].  "'" ;
    D.h. wenn der Titel "hallo" ist findet er z.B. "xyzhallo", "ichhallo", "newshallo" o.Ä.. Es fehlt ein % nach der titel Variablen. Dann das Script noch vor SQL-Injections schützen:
    PHP:
    $abfrage  "SELECT * FROM ` Quests` WHERE `titel`  LIKE '%"  . mysql_real_escape_string ( $_REQUEST [ 'titel' ]).  "%'" ;
    EDIT:// Achja, wenn du dein Script von mysql_query(...); auf mysql_query(...) or die(mysql_error()); änderst hilft es, sollte es wirklich ein MySQL Fehler sein
     
  3. 3. November 2008
    AW: MySQL/PHP Suchen im Formular klappt nicht

    Hi,

    komisch, wenn alles nur leer bleibt.
    Normal sollte es eine Fehlermeldung geben.

    Aber ich tippe mal stark auf das $db im Query^^
    Kick das mal aus, dann sollte es gehen.
    Zumal ich nicht wüsste, warum im Query der Datenbankname auftauchen sollte oO
    Naja, möglicherweise die Verbindungskennung, aber das auch nur optional -> MySQL-Doku

    Sn0wm4n
     
  4. 3. November 2008
    AW: MySQL/PHP Suchen im Formular klappt nicht

    Ok, hab den "ersten" Teil geschafft.
    Habe das SELECT * mal zu SELECT titel, beschreibung FROM... gemacht.

    Wenn ich darunter nun echo $abfrage; mache, wird es korrekt vom echo ausgegeben.

    Allerdings, unten in dem Teil, wo er zeigen soll, wird nichts ausgegeben.

    Danke schonmal für Eure Hilfe, BW is schonmal raus.
     
  5. 3. November 2008
    AW: MySQL/PHP Suchen im Formular klappt nicht

    Was wird dir bei [echo($abfrage); ausgegeben? Poste mal bitte.

    Und bau dieses or die(mysql_error()); ein und sollte dort ein Fehler kommen auch bitte posten
     
  6. 3. November 2008
    AW: MySQL/PHP Suchen im Formular klappt nicht

    Bei dem echo kommt der SQL Befehl:

    PHP:
    SELECT titel beschreibung npc_abgeben npcid_nehmen gold FROM  ` Quests WHERE  ` titel LIKE  '%Hilfe für den Weißbard%'
    Mehr nich....also das ist korrekt.

    Nur soll er mir die gefundenen Sachen ja hier anzeigen:

    PHP:
      echo  '<form action="quests.php" method="get">' ;
        echo 
    '<input type="hidden" name="titel" value="' . $row [ 'titel' ]. '">' ;
        echo 
    '<table width="100%">' ;
        echo 
    '<tr><td><b>Quest:</b></td><td>'  $row [ 'titel' ] .  '</td></tr>' ;
        echo 
    '<tr><td><b>Beschreibung:</b></td><td>'  $row [ 'beschreibung' ] .  '</td><td><b>Quest Abgeben:</b></td><td>'  $row [ 'npc_abgeben' ] .  '</td></tr>' ;
        echo 
    '<tr><td><b>Questgeber:</b></td><td>'  $row [ 'npcid_nehmen' ] .  '</td><td><b>Belohnung:</b></td><td>'  $row [ 'gold' ] .  '</td></tr>' ;
        echo 
    '</td></tr>' ;    
        echo 
    '</table>'
     
  7. 3. November 2008
    AW: MySQL/PHP Suchen im Formular klappt nicht

    Und wenn du z.B. nur "Hilfe" eingibst? Kann sein, dass es Probleme beim interpretieren von dem ß kommen kann.

    Achja, was ich gerade sehe - dein Script weißt noch ein Manko auf.
    Momentan steht die $row-Abfrage einfach so im Raum - normalerweise verpackt man diese allerdings in eine while()-Schleife, da nach Möglichkeit ja mehr als ein Ergebnis geliefert werden soll. php.net ist dein Freund =)
     
  8. 3. November 2008
    AW: MySQL/PHP Suchen im Formular klappt nicht

    Ahhh....dann geht es....es liegt an den Leerzeichen
    Wie kann ich das Problem denn noch fixen?
    Und die Umlaute werden als ? angezeigt. Die DB steht auf utf8 und die File auch.

    Solltest Du aus Hamburg kommen, haste nen Bier sicher
     
  9. 3. November 2008
    AW: MySQL/PHP Suchen im Formular klappt nicht

    Also mit den Datenbanken kenne ich mich ehrlich gesagt auch nicht so aus ... Was mir einfallen würde, dass du einfach dein String in HTML-Form (sprich für ein ß &szlig;, für ä &auml; usw.) speicherst.

    Danke für das Angebot, aber wohne weder in Hamburg, noch trinke ich Bier =D
     
  10. 3. November 2008
    AW: MySQL/PHP Suchen im Formular klappt nicht

    Hm, ne eigentlich nicht. Denn die Page ist in utf8 gespeichert. Da sollten Umlaute normalerweise auch korrekt angezeigt werden.

    Was sie auch tun, bis auf die Quest Ausgaben.
     
  11. 3. November 2008
    AW: MySQL/PHP Suchen im Formular klappt nicht

    Wenn ich im PHPMyAdmin nach ß Suche, so führt er folgenden Request aus:
    Code:
    [...]WHERE `username` LIKE CONVERT( _utf8 '%ß%'
    USING latin1 )[...]
    Schonmal CONVERT probiert?
     
  12. 3. November 2008
    AW: MySQL/PHP Suchen im Formular klappt nicht

    Macht er bei mir nicht, weil die Tabellen alle auf utf8 gestellt sind.
    Wäre auch zu einfach gewesen

    Trotzdem Danke

    Hast Du sonst noch eine Idee?
     
  13. 3. November 2008
    AW: MySQL/PHP Suchen im Formular klappt nicht

    Hast du es mal mit Convert ausprobiert? Die Tabellen sind bei mir nämlich auch auf utf8 gestellt.
     
  14. 3. November 2008
    AW: MySQL/PHP Suchen im Formular klappt nicht

    Ne, war was anderes was gefehlt hat:

    PHP:
    mysql_query ( "SET CHARACTER SET 'utf8'" $db );
    mysql_query ( "SET NAMES 'utf8'" $db );
    Es tut nun auch mit utf8

    Nun noch Deine andere Sache.
    Also ne while schleife habe ich auch eingebaut:

    PHP:
    while( $row  mysql_fetch_array ( $result )){ 
        
    AUSGABE
        
    }
    Allerdings, Suche ich zum Beispiel nach Hilfe, wird alles angezeigt.

    Wie kann ich es dann machen, dass er mir die Überschriften anzeigt und ich via Klick auf die Überschrift alles anzeigt?
     
  15. 4. November 2008
    AW: MySQL/PHP Suchen im Formular klappt nicht

    Also die Schleife is schonmal richtig

    Jetzt kommt es darauf an, was du bei AUSGABE stehen hast.
    PHP:
    while ( $row  mysql_fetch_array ( $result ))
    {
      echo 
    "<a href=\"xy.php?qid=" . $row [ 'qid' ]. "\">" . $row [ 'titel' ]. "</a><br />\n" ;
    }
    Dieser Code oder ähnlich sollte gewünschtes Ziel haben.
     
  16. 4. November 2008
    AW: MySQL/PHP Suchen im Formular klappt nicht

    du solltest dir mal den unterschied von " und ' in php mal genauer anschauen.

    PHP:
    $foo  1234 ;
    print 
    '$foo' //$foo
    print  " $foo " //1234
     
  17. 5. November 2008
    AW: MySQL/PHP Suchen im Formular klappt nicht

    Das habe ich dann so gemacht:

    PHP:
    $abfrage  "SELECT q.qid, q.titel, q.beschreibung, q.npc_abgeben, q.npcid_nehmen, q.gold, g.* FROM `Quests` q LEFT JOIN `Gaestebuch` g ON q.qid = g.qid WHERE q.`titel`  LIKE '%"  . mysql_real_escape_string ( $_REQUEST [ 'titel' ]).  "%'"
        
    $result  mysql_query ( $abfrage $db ); 
        
    $questOutput  false ;
        while(
    $row  mysql_fetch_array ( $result )){
            if (
    $questOutput  ==  false ){
                echo 
    "<a href=\"quests.php?titel=" . $row [ 'titel' ]. "\">" . $row [ 'titel' ]. "</a><br />\n" ;
                }
            elseif (
    $_REQUEST [ 'titel' ]) {
                echo 
    '<form action="quests.php" method="get">' ;
                echo 
    '<input type="hidden" name="titel" value="' . $row [ 'titel' ]. '">' ;
                echo 
    '<table width="100%">' ;
                echo 
    '<tr><td><b>QuestID:</b></td><td>'  $row [ 'qid' ] .  '</td></tr>' ;
                echo 
    '<tr><td><b>Quest:</b></td><td>'  $row [ 'titel' ] .  '</td></tr>' ;
                echo 
    '<tr><td><b>Beschreibung:</b></td><td>'  $row [ 'beschreibung' ] .  '</td></tr>' ;
                echo 
    '<tr><td><b>Questgeber:</b></td><td>'  $row [ 'npcid_nehmen' ] .  '</td></tr>' ;
                echo 
    '<tr><td><b>Belohnung:</b></td><td>'  $row [ 'gold' ] .  ' Gold</td></tr>' ;
                echo 
    '<tr><td><b>Quest Abgeben:</b></td><td>'  $row [ 'npc_abgeben' ] .  '</td></tr>' ;
                echo 
    '</td></tr>' ;    
                echo 
    '</table><br><br>' ;
                
    $questOutput  true ;
            }
            }
    Es wird korrekt angezeigt, also alles Stichpunktartig mit Link. Nur klicke ich dann auf einen Link, tut sich nichts, ausser dass er einmal aktualisiert, dass war es dann auch schon.

    EDIT: Ich habe den Fehler gefunden.
    Danke für Eure Hilfe
     
  18. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.