Suche - Wortteil aus Datensatz

Photocharts

Mitglied
Kann man aus einem gespeicherten Datensatz (mehrere Wöter mit Komma getrennt) nach einem Wort suchen lassen?

Also, der datensatz enthält z.b.: "ich, du, wir, ihr, sie"
Ich gebe bei der suche nur "du" ein, der Datensatz soll aber dennoch komplett angezeigt werden.

Ich habe schonmal rumprobiert, aber bei mir geht es nur, wenn dasgesucht Wort genau mit dem Datensatz übereinstimmt.

Suche:
http://photocharts.po.ohost.de/db/suche.php

PHP:
<?php
echo "<form action=\"kategoriefoto.php\" method=\"post\">
<table border=\"0\" cellpadding=\"3\">
<tr><td>
Stichwort: </td><td><input type=\"text\" size=\"50\" name=\"stichwort\" values=\"".$_POST['']."\"><br>
</td></tr>
<tr><td>
Kategorie: </td><td><select name=\"art\"".$_POST['']."\">
<option value=\"Pferd\">Pferd
<option value=\"Hund\">Hund
<option value=\"Nager\">Nager
<option value=\"Zootier\">Zootier
<option value=\"Sonstiges Tier\">Sonstiges Tier
<option value=\"Mensch\">Mensch
<option value=\"Blumen\">Blumen
<option value=\"Landschaft\">Landschaft
<option value=\"Sonstiges\">Sonstiges
</select><br>
</td></tr>
</table>
<input type=\"submit\" value=\"Fotos suchen\" name=\"suchen\">
</form>\n";
?>


Das ist "kategorierfoto.php"

PHP:
<?php
include("db.inc.php");

  $res = mysql_db_query("$dbzwei", "select * from fotos where art='$art'");
   $num = mysql_num_rows($res);
   echo "$num Fotos gefunden<br>";

   for ($i=0; $i<$num; $i++)
   {
      $id = mysql_result($res, $i, "id");
      $addy = mysql_result($res, $i, "addy");
      $addyk = mysql_result($res, $i, "addyk");
      $ort = mysql_result($res, $i, "ort");
      $wetter = mysql_result($res, $i, "wetter");
      $model = mysql_result($res, $i, "model");
      $art = mysql_result($res, $i, "art");
      $datum = mysql_result($res, $i, "datum");
      $kamera = mysql_result($res, $i, "kamera");
      $stichw = mysql_result($res, $i, "stichw");

   if ($stichw == $stichwort) {
      echo "<a href=\"#\" onClick=\"MyWindow=window.open('http://photocharts.po.ohost.de/db/einzelfotoeinfach.php?auswahl=".$id."','MyWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=596,height=648,left=0,top=0'); return false;\" align=\"center\"><img border=\"0\" src=\"".$addyk."\" height=\"50\"><a>
</a> ";
   }
   else {}

   }
     echo "</tbody></table>";
   mysql_close($db);
?>
 
Hallo!

Und was soll das $_POST[' '] in Deinem Formular ergeben?

Zum Query, versuche es mal so:
PHP:
"select * from `fotos` where `art` like '".$_POST['art']."' and `stichw` like '%".$_POST['stichwort']."%'"
Ich glaube aber dass Deine if-Abfrage dann nicht funktionieren wird.

Gruss Dr Dau
 
mhh, nein, leider funktioniert sie nicht.
Danke trotzdem ;)

Wozu das $_POST[' '] ist?
Ich hatte das Formular übertragen und das noch nicht gelöscht.
 
PHP:
"select * from `fotos` where `art` like '%".$_POST['art']."%' and `stichw` like '%".$_POST['stichwort']."%'"

sollte helfen wobei man Formulardaten niemals ungefiltert an MySQL übergeben sollte da man so SQL Injections möglich macht. Daher lieber so:

PHP:
"select * from `fotos` where `art` like '%".mysql_real_escape_string($_POST['art'])."%' and `stichw` like '%".mysql_real_escape_string($_POST['stichwort'])."%'"

Marco
 
In der Datenbank steht ja (als Beispiel) "ich, du, wir, ihr, sie", das Formual übermittelt aber nur "du", und da "ich, du, wir, ihr, sie" nunmal nicht gleich "du" ist, kann Deine if-Abfrage nur das zurückliefern, was in else steht. ;)

Die Query hingegen sucht dank der %-Zeichen nach allem wo "du" drin vorkommt (mit beliebigen Zeichen davor und dahinter).
Es würden also auch Begriffe wie "Duden", "Eduscho", "Dusche" usw. gefunden werden.
Mit anderen Worten, das Formual übermittelt zwar nur "du", für die Suche in der Datenbank wird dieses aber auch als Teilbegriff akzeptiert.

@tanmar, hälst Du es wirklich für sinnvoll nach Teilbegriffen zu suchen wenn die Begriffe über die <option>-Felder eh fest vorgegeben sind?
Nagut, wenn er z.b. "Mensch" mit "Nager" gleichstellt und diese in eine Zelle unter "art" einträgt, macht es wohl doch sinn. ^^
Dann dürfte aber sein Datenbankdesign etwas unglücklich gewählt sein.
 
Hmm, irgendwie kann man eingeben (bzw. über das Auswahlmenü auswählen) was man will..... es kommen immer nur die Pferdebilder.
 
bist jetzt sind genau 89 Pferdebilder gespeichert und sonst keine, deshalb *gg*.
Die anderen füge ich erst ein, wenn ich weiß dass auch alles, was ich vorhabe funktioniert und ich mir die Arbeit hinterher nicht umsonst gemacht habe.
 
Zurück