Zum Inhalt springen

Suchfunktion für ein Kochbuch

Erstellt am 7. Februar 2008 · 4 Antworten · letzte Antwort am 12. Februar 2008

Tags: Suche, Frage

pcmuckel ·

Hallo, ich hoffe auf eure Hilfe. Ich komme einfach nicht weiter. Für ein Kochbuch möchte ich eine Suche die z.B. nach mehreren Zutaten suchen kann.
Beispiel: suchen
Zutat 1 -- > Kartoffeln
Zutat 2 -- > Erbsen
Zutat 3 -- > Steak
wobei ab "Zutat2" eine UND verknüpfung zum ersten Suchbegriff gegeben sein sollte.

bisher mit googeln und der suche hier noch nicht weiter gekommen
bin für jeden Tipp dankbar

Andreas

just2b ·

Hallo,

die indexed search kann das sicherlich nicht, da musst du einfach selbst die Suche implementieren.

Georg
PS: *verschoben

pcmuckel ·

#giggle#
Hab´s jetzt gelöst.
Extension LumoNet PHP Include und dann ein php skript das mir die Datenbankabfrage macht.

hab hier mal das Skript für alle die es interessiert.
Vielleicht hat dazu ja noch jemand einen Tip für mich.

<h3>Unser Resteverwerter sucht Rezepte zu eingegebenen Zutaten aus!</h3><br>
<p>Bitte geben Sie in die Felder die Zutaten ein <br><p>
<br>
<div style="margin-left: 145px">

<!-- bei action die URL der Seite eintragen auf der PHP-Include eingebunden ist. --->

<form action = "http://www.....er.html" method = "post">
    <p>Zutat 1: <input name = "z1"><p>
    Zutat 2: <input name = "z2"><p>
    Zutat 3: <input name = "z3"><p>
    Zutat 4: <input name = "z4"><p>
    Zutat 5: <input name = "z5"><p><br>
    <input type = "submit" name = "gesendet">
    <input type = "reset">
</form>
</div>
<br>


<?php

// Zuweisung der globalen Variablen
// mit $_POST werden die Variablen vom Formular eingelesen

  $anz = 0;  
  $z1 = $_POST['z1'];
  $z2 = $_POST['z2'];
  $z3 = $_POST['z3'];
  $z4 = $_POST['z4'];
  $z5 = $_POST['z5'];
  $gesendet= $_POST['gesendet'];  

// Abfragen ob wenigstens eine eingabe in das erste Feld gemacht wurde
if ($_POST['z1'] > " ")
{
echo "<br><p>Sie haben folgenden Zutaten";
echo " eingegeben: $z1 $z2 $z3 $z4 $z5 </p>";

// hier beginnt die Datenbankabfrage in tt_content und pages 
// dabei ist zu beachten, das tt_content.pid in der pages Datenbank pages.uid ist.

  $conte = mysql_db_query("usr....5",   
  "select tt_content.pid, tt_content.bodytext, pages.uid, pages.pid, pages.title from tt_content, pages WHERE (tt_content.pid = pages.uid AND bodytext LIKE '%" .$z1."%' AND bodytext LIKE '%" .$z2."%' AND bodytext LIKE '%" .$z3."%' AND bodytext LIKE '%" .$z4."%' AND bodytext LIKE '%" .$z5."%' )"); 
       
  $num = mysql_num_rows($conte);
  
  if ($num > 0)
  {
   echo "<h3> Unser Resteverwerter hat folgende Rezepte gefunden.</h3><br>";
  }  
  echo "<ul>";
  for ($i=0; $i<$num; $i++)
  {       
      $uid = mysql_result($conte, $i, "pages.uid");
      $pid = mysql_result($conte, $i, "pages.pid");
      $titel = mysql_result($conte, $i, "pages.title");
   if ($pid == 150 or $pid == 99)
   {     
   //   $anz = $anz+1;
      echo "<li><a href=index.php?id=$uid target=_blank>$titel</a></li>";
   }      
  }
   echo "</ul>";
   // echo "<br><p>Es wurden $anz Rezepte gefunden.</p>";
}
?>
pcmuckel ·

Danke für den Tipp, werde mich gleich mal damit beschäftigen.

Für die Eingabe habe ich jetzt noch eine Überprüfung eingebaut. Ich hab aber nicht soviel Erfahrung in PHP. Könnte man denn so eine Abfrage auch noch anders lösen?

Hier jetzt erstmal der Code den ich zum Überprüfen eingefügt habe.

function suchwort($suchwort)
{
     $suchwort = ereg_replace(';', '', $suchwort);
     if (get_magic_quotes_gpc() == 0) {
        $suchwort = addslashes($suchwort);
     }
     return $suchwort;     
}

Damit sollte es doch eigentlich schon etwas sicherer sein.