[SQL allgemein] Mysteriöse Datenabfrage aus MySQL

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

  • [SQL allgemein] Mysteriöse Datenabfrage aus MySQL

    Also ich habe eine MySQL Datenbank die Informationen enthält.

    nun hab ich folgendes Formular;

    Code:
    <form name="suchanfrage" method="post" action="searchrequest.php">
    ......
    <input type="text" name="search" maxlength="255" size="30">
    ......
    <input type="radio" name="control" value="name">
    ......
    <input type="submit" name="eintragen" value="Suchen">
    .... solll heißen, dass ich unwichtige infos weggelassen hab.

    das ist nun nen formular mit textfeld namens "search" und einem Kontrollkästchen namens control mit value name.

    die datei searchrequest an die die variablen $search und $control geschickt werden sieht folgender maßen aus:

    Code:
    <?php
    	
    		include ("config.php");
    
    		
    if($search == '')
       {
       $text_search = "Bitte geben Sie einen Suchbegriff ein!<br>\n";
       include("eintragfehler.php");
       }
    
    else
    {
    
    $link = mysql_connect($db_host, $db_user, $db_password);
    		if ( ! $link )
    		die ( "Keine Verbindung zu MySQL-Server");
    		
    mysql_select_db($db_name, $link)
    		or die ( "Konnte $db_name nicht öffnen: ".mysql_error() );
    
    $anfrage = mysql_query( "SELECT * FROM $db_table_daten WHERE $control=$search" );
    
    
    $ausgabe = mysql_num_rows( $anfrage );
    
    mysql_close( $link );		
    
    };
    ich hab beim ersten formular natürlich noch mehr kontrollkästchen, die tun aber nix zur sache. das value der kästchen hab ich immer so gewählt, wie die einzelnen spalten in der datenbanktabelle heißen. $control ist in diesem fall "name" und si heißt auch eine spalte in meiner tabelle.
    im mysql_query ergibt sich dann folgende WHERE definition, da $control = name ist:

    WHERE name=$search und $search ist der text aus dem textfeld.

    die ausgabe der suergebnisse sieht wie folgt aus:

    Code:
    print "<table width=570 border=0 cellspacing=0 cellpadding=0 align=center>\n";
    while ( $datensatz = mysql_fetch_array( $anfrage ) )
    	{
    	if($datensatz[logo] == '')
    		{
    		$logoausgabe = "&nbsp;";
    		}
    		else
    		{					
    		$logoausgabe = "<img src=$datei_url/$datensatz[logo]>";
    		};
    	print "<tr>\n";
    	print "<td width=420 height=15 class=info_ueberschrift>&nbsp;<a href=ausgabe.php?action=$datensatz[id]>$datensatz[name]</a></td>\n";
    	print "<td rowspan=4 width=150 height=150 align=center valign=top class=allgemein_text>$logoausgabe</td>\n";
    	print "</tr>\n";
    	print "<tr>\n";
    	print "<td width=420 height=90 class=verzeichnis_contentmitte valign=top><br>$datensatz[infobeschreibung]</td>\n";
    	print "</tr>\n";
    	print "<tr>\n";
    	print "<td width=420 height=15 class=verzeichnis_contentmitte valign=top>\n";
    	print "<div align=right>--&gt; weitere Infos <a href=ausgabe.php?action=$datensatz[id]>HIER</a> oder unter: <a href=http://$datensatz[url]>$datensatz[url]</a></div>\n";
    	print "</td>\n";
    	print "</tr>\n";
    	print "<tr>\n";
    	print "<td width=420 height=15 class=verzeichnis_content>Bewertung</td>\n";
    	print "</tr>\n";
    	print "<tr>\n";
    	print "<td width=420><font color=#CCCCFF>$datensatz[id]</font></td>\n";
    	print "<td width=150 align=center valign=top class=allgemein_text>&nbsp;</td>\n";
    	print "</tr>\n";   
    	}
    print "</table>\n";
    
    
    print "$control<br>";
    print "$search";
    die letzten beiden printbefehle dienen nur zur controlle.....

    ich habe verschiedene datensätze zu testzwecken in meiner datenbank, unteranderem eine mit dem name Test, eine mit dem Namen 1234 und eine mit 123 4.

    wenn ich jetzt in mein textfeld von formular "Test" eingebe kommt folgende fehlermeldung:

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\archiv\privat\webdesign\hps\pph\verzeichnis\searchrequest.php on line 33

    die letzten beiden printbefehle die zur kontrolle dienen zeigen aber die richtigen werte an nämlich "name" und "Test"

    gebe ich ins textfeld "1234" ein, findet er einen Datensatz und gibt ihn wie gewünscht aus.

    Gebe ich aber "123 4" ein, gibt es den gleichen fehler wie oben.

    die datensätze Test und 123 4 gibt es aber.

    Es sieht so aus, als ob er nicht nach Buchstaben suchen kann, sondern nur nach Zahlen. kann das sein.

    kann mir da jemand helfen?????

    Vielen Dank
    HämZli

  • #2
    PHP-Code:
    echo "<br>#######################<br>";
    $query "select .... ";
    echo 
    $query."<p>";

    mysql_query($query) or die(mysql_error());
    echo 
    "<br>#######################<br>"
    ändere deinen code mal ab und poste was zwischen den #### steht.

    und noch der standard:
    sql-fehler ohne die funktion mysql_error() zu finden, macht keinen spass.
    und wahrscheinlich wäre dein post, dann auch 30 zeilen kürzer.

    Kommentar


    • #3
      also hab das mal gemacht und dann kommt folgendes:

      wenn ich nach Test suche kommt:

      #######################
      SELECT * FROM daten WHERE name=Test
      Unbekanntes Tabellenfeld 'Test' in where clause.



      wenn ich nach 1234 suche:

      #######################
      SELECT * FROM daten WHERE name=1234

      #######################



      und bei der suche nach 123 4 kommt:

      #######################
      SELECT * FROM daten WHERE name=123 4
      Fehler in der Syntax bei '4' in Zeile 1.



      Aber die Erstefehlermeldung versteh ich nicht, denn es gibt in der spalte "name" einen Eintrag Test.....und Syntaxfehler.....was soll das sein????

      mysql_error() hab ich jetzt erstmal eingebaut.....stimmt schön...ist sonst nen bischen mühselig ;-)

      Danke schonmal

      HämZli
      Zuletzt geändert von HämZli; 02.09.2003, 15:21.

      Kommentar


      • #4
        Vielleicht hat da auch gleich noch einer ne besser Idee, wie man das machen kann...

        wie vielleicht erkannt soll das ein suchformular geben... jetzt kann ich ja nur nach exakt den werten suchen, die auch in der tabelle stehen. steht zum beispiel in einer spalte der eintrag "peter martin" und ich nur nach peter such, werde ich ja kein ergebnis bekommen...ich müsste ja genau nach Peter Martin suchen, gibt es dafür vielleicht ne Lösung, damit ich auch nach teilen eines eintrags suchen kann...??

        HämZli

        Kommentar


        • #5
          frage hat sich erledigt.....bitte keine antworten mehr...

          Kommentar


          • #6
            aber um den thread das mysteriöse zu nehmen:

            es fehlten die anführungszeichen:
            ... where name="Test"
            etc.

            Kommentar


            • #7
              Original geschrieben von graf
              aber um den thread das mysteriöse zu nehmen:

              es fehlten die anführungszeichen:
              ... where name="Test"
              etc.
              FALSCH, das funzt auch ohne....hättest du dir meinen thread richtig durchgelesen, hättest du gelesen, dass die suche funktioniert, aber nur bei manchen suchworten...

              Das Prob ist auch nicht ganz gelöst, ich hab jetzt nur aus

              PHP-Code:
              ...where $control=$search 
              hab ich

              PHP-Code:
              ..where $control LIKE %$search
              gemacht. kommt dem, was ich wollte, eh näher...!

              Kommentar


              • #8
                wenn du meinst ...
                dann wurschtel mal ohne anführungszeichen weiter

                Kommentar

                Lädt...
                X