Mit PHP die Datenbanken durchsuchen

weedo

Erfahrenes Mitglied
Hi,

ich versuche mich gerade an Neuland und möchte eine Suche für meine Homepage programmieren. Irgendwie fumktioniert das aber nicht so, wie ich mir das vorgestellt habe, denn MySQL gibt mir

Code:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* LIKE 'schlüsselweort'' at line 12

wieder. Wo ist mein Denkfehler? Hier der code dafür.

PHP:
<?
  print '<div style="background:url(\'Bilder/black/index_16.gif\'); width:523px; height:30px; background-repeat: no-repeat; color: #FFFFFF; font-weight: bold;line-height:2;">
          &nbsp;&nbsp;Suche
        </div>
        <div style="background:url(\'Bilder/index_19.gif\'); background-repeat:repeat-y">
          <table class="overall" valign=top width=523>';
            $result = $_POST['result'];
  print "     <form action=\"index.php?&part=about&site=search&result=1\" method=\"post\">";
  print "       <tr>
                  <td>Schl&uuml;sselwort: 
                      <input type=\"text\" name=\"result\" value=\"$result\" style=\"width:300px;\" /> 
                      <input type=\"submit\" value=\"Suchen\">
                  </td>
                </tr>
              </form>";
    
switch($_GET["result"]) {
  case "1":
    $result = $_POST['result'];
    $mysql = mysql_query("SELECT * FROM advertisement_shop_cat,
                                        advertisement_shop_offer,
                                        advertisement_shop_sub,
                                        consulting,
                                        marketing,
                                        office_shop_cat,
                                        office_shop_offer,
                                        office_shop_sub,
                                        promotion,
                                        textiles_shop_cat,
                                        textiles_shop_offer,
                                        textiles_shop_sub WHERE * LIKE '$result'") or die(mysql_error());
    while($db = mysql_fetch_assoc($mysql)) {
      var_dump($db);
      print '<tr>
               <td>
                 <hr width=98% />
               </td>
             </tr>';
      print "<tr>
               <td>
                 $result
               </td>
             </tr>";
    }
  break 1;
}
print "  </table><img src=\"Bilder/index_22.gif\" width=\"523\" height=\"8\">
       </div>"; 
?>

lg weedo
 
Danke erstmal für die schenelle Antwort.

Ich versuche das gerade irgendwie zu verstehen.

Kommt das dem nahe?

PHP:
$mysql = mysql_query("SELECT * FROM advertisement_shop_cat WHERE beschreibung LIKE '$result' LEFT JOIN
                                        advertisement_shop_offer WHERE beschreibung LIKE '$result' LEFT JOIN
                                        advertisement_shop_sub WHERE beschreibung LIKE '$result' LEFT JOIN
                                        consulting WHERE content LIKE '$result' LEFT JOIN
                                        marketing WHERE content LIKE '$result' LEFT JOIN
                                        office_shop_cat WHERE beschreibung LIKE '$result' LEFT JOIN
                                        office_shop_offer WHERE beschreibung LIKE '$result' LEFT JOIN
                                        office_shop_sub WHERE beschreibung LIKE '$result' LEFT JOIN
                                        promotion WHERE content LIKE '$result' LEFT JOIN
                                        textiles_shop_cat WHERE beschreibung LIKE '$result' LEFT JOIN
                                        textiles_shop_offer WHERE beschreibung LIKE '$result' LEFT JOIN
                                        textiles_shop_sub WHERE beschreibung LIKE '$result'") or die(mysql_error());
 
nein;

les dir doch die Seite genauer durch ;)


PHP:
SELECT * 
FROM table1
LEFT JOIN table2 
ON table1.id=table2.id
 WHERE table2.id IS NULL;


Select * -> selektiert alles
FROM table1 -> von der Tabelle1
LEFT JOIN -> zu 2. eingebundene Tabelle
ON table1.id = table2.id -> das zu referenzierende Attribut
WHERE -> Bedingung, dass die ID von der 2. Tabelle NULL ist

Mit dem "ON" verbindest du das jeweilige Attribut
Alle Datensätze in der Tabelle1 haben Bezug mit den Datensätzen ion der 2.Tabelle wenn das Attribut "id" bei beiden Tabellen gelch ist.


bo
 
Ich bemühe mich ehrlich das ganze zu verstehen und auf meine Situation anzupassen. Aber irgendwie will das alles nicht so, wie ich möchte.

Ich habe das nochmal versucht:

PHP:
$mysql = mysql_query("SELECT * FROM advertisement_shop_cat LEFT JOIN
                                        advertisement_shop_offer LEFT JOIN
                                        advertisement_shop_sub LEFT JOIN
                                        consulting LEFT JOIN
                                        marketing LEFT JOIN
                                        office_shop_cat LEFT JOIN
                                        office_shop_offer LEFT JOIN
                                        office_shop_sub LEFT JOIN
                                        promotion LEFT JOIN
                                        textiles_shop_cat LEFT JOIN
                                        textiles_shop_offer 
                                        ON advertisement_shop_cat.beschreibung=
                                        advertisement_shop_sub.beschreibung=
                                        advertisement_shop_offer.beschreibung=
                                        office_shop_cat.beschreibung=
                                        office_shop_offer.beschreibung=
                                        office_shop_sub.beschreibung=
                                        textiles_shop_cat.beschreibung=
                                        textiles_shop_offer.beschreibung=
                                        textiles_shop_sub.beschreibung WHERE beschreibung LIKE '$result'") or die(mysql_error());

ich bekomme jetzt den Fehler

Code:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE beschreibung LIKE 'schlüsselweort'' at line 20
 
Bevor du weiter bastelst: Woher willst du wissen in welcher Tabelle es ist, wenn es gefunden wird?
Du wählst nur die Zeilen und die Tabellennamen bleiben stets im Nirwana.

Das was du hier realisierst geht in Richtung: Vorhanden? Ja / Nein.
Aber ein "Wo?" bekommst du so nicht heraus. Dazu wären einzelne Anweisungen auf die jeweiligen Tabellen nötig.
 
Zurück