php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.12.2005, 16:39  
Gast
 
Beiträge: n/a
Standard Problem mit Suchscript

Ich habe ein Formular mit einem Textfeld und vier Kombinationsfelder, welche die verschiedenen Felder einer Tabelle repräsentieren.

Wenn ich ein oder mehrere Suchbegriffe im Textfeld eingebe und ein oder mehrere Kästchen auswähle, dann soll in den entsprechenden Feld(ern) nach den Suchbegriff(en) gesucht werden. Ich habe nun folgend zwei Scripten, das erste (Code #1) sucht in den Feldern und das zweite (Code #2) nach den Suchbegriffen, wobei man auch mehrere Begriffe eingeben kann:

Code #1
Code:
$condition = "";
if (isset($_POST['seite']))
{
    $conditions = array();
    foreach ($_POST['seite'] as $value)
      $conditions[] = $value . " like '%" . $_POST[Suche] . "%'";
      
    $condition = "where " . implode (" and ", $conditions);
}
$query = "select * from Biblmes $condition";


$result = mysql_query($query,$link);

$num=mysql_num_rows($result);
__________

Code #2
Code:
$Suche = explode(" ", $_POST[Suche]);
$i = 1;
foreach($Suche as $anfrageteil)
{
  $anfrage .= " Autor LIKE '%".$anfrageteil."%' ";
  if($i < count($Suche))
    $anfrage .= "AND";
  $i++;
}
$query = "SELECT * FROM Biblmes WHERE".$anfrage;
$result = mysql_query($query, $link);


while($row = mysql_fetch_array($result))
{

     if (empty($row[Zitat])) {
        echo "$row[Autor] $row[Titel] $row[Buchdaten].

";
     }
     if (empty($row[Buchdaten])) {
        echo "$row[Autor] $row[Titel] $row[Zitat].

";
     }

}

Die Codes habe ich aus einem anderen Forum, da ich noch ein blutiger Anfänger bin. Es gelingt mir einfach nicht, die beiden Codes zu verbinden, ohne dass eine Fehlermeldung kommt. Ich möchte sowohl in den ausgewählten Feldern suchen, auch wenn mehrere Begriffe eingegeben werden. Ich hab folgendes probiert:

Code:
$condition = "";
$Suche = explode(" ", $_POST[Suche]);
$i = 1;
$Suche as $anfrageteil


if (isset($_POST['seite']))
{
    $conditions = array();
    foreach ($_POST['seite'] as $value) and foreach ($Suche as $anfrageteil)

      $conditions[] = $value . " like '%" . $anfrageteil . "%'";

      $condition = "where " . implode (" and ", $conditions);

$query = "select * from Biblmes $condition";

$result = mysql_query($query, $link);

while($row = mysql_fetch_array($result))
{

     if (empty($row[Zitat])) {
        echo "$row[Autor] $row[Titel] $row[Buchdaten].

";
     }
     if (empty($row[Buchdaten])) {
        echo "$row[Autor] $row[Titel] $row[Zitat].

";
     }

}
Kann man foreach so nebeneinander stellen? Ich hoffe, jemand von euch kann mir helfen.

Dareios
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.12.2005, 16:49  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Nein, da foreach eine Kontrollstruktur ist die keinen Wert hat und somit auch nicht verknüpft werden kann.
Geh das ganze doch rückwärts an, wie soll dein SQL-Befehl am Ende aussehen? Bastel genau dieses Statement nach, erstmal statisch mit nur einem Suchbegriff der in einer Spalte gesucht werden soll, später variabel, mehrere Suchbegriffe & mehrere Spalten.
Alles Schritt für Schritt.
Zergling-new ist offline  
Alt 28.12.2005, 16:52  
Gast
 
Beiträge: n/a
Standard

Danke, aber ich kenn mich überhaupt nicht aus. Ich probiere schon seit Tagen herum, aber mir fällt nichts mehr ein. Mein SQL-Befehl im ursprünglichen Script lautete "SELECT * FROM Biblmes WHERE Autor LIKE %$_POST['Suche']%". Das Umbasteln hab ich ja im letzten Code versucht, dass ich mit zwei Variablen arbeite, aber ich weiß nicht, wie ich das mit dem foreach reinbringen soll.

Dareios
 
Alt 28.12.2005, 17:06  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

http://de.php.net/foreach

Im Prinzip musst du dir doch nur Funktionen basteln, die das für dich übernehmen:
PHP-Code:
<?php
// $_POST['spalten'] = array('vorname', 'nachname');
// $_POST['begriffe'] = array('Schmidt', 'Schmitt');
$sql sprintf("SELECT * FROM tabelle WHERE %s"search($_POST['spalten'], $_POST['begriffe']));
?>
Die Funktion search muss oberhalb ihres Aufrufes deklariert werden, zum Durchlesen ists aber verständlicher wenn ich sie jetzt erst zeige:
PHP-Code:
<?php
function search($spalten$begriffe) {
  if (!
is_array($spalten) || !is_array($begriffe)) // muss Array sein, sonst zickt foreach
    
return 0;
  
$sql '0';
  foreach (
$spalten as $spalte) {
    foreach (
$begriffe as $begriff) {
      
$sql .= sprintf(" OR %s LIKE '%%%s%%'"$spalte$begriff);
    }
  }
  return 
$sql;
}
?>
Hoffe es ist kein Fehler dabei.
Optional könnte man wohl noch eine AND Bedingung einbauen, da müsste man noch eine Klammerung einführen.
Zergling-new ist offline  
Alt 28.12.2005, 17:10  
Gast
 
Beiträge: n/a
Standard

Ich werd das mal ausprobieren. Vielen Dank.
 
Alt 28.12.2005, 17:12  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

$_POST['begriffe'] musst du wohl noch beim Aufruf der search()-Funktion durch explode(' ', $_POST['begriffe']) ersetzen.
Zergling-new ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
Sessions Problem StephenKing PHP Tipps 2008 3 16.10.2007 08:30
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Suchscript mit und/oder Auswahlen PHP Tipps 2005 3 06.01.2005 21:50
Problem mit Weiterleitung PHP Tipps 2004-2 16 22.12.2004 17:49
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
[Erledigt] PHP Upload (Master Value/Local Value Problem) PHP-Fortgeschrittene 5 23.11.2004 07:21
[Erledigt] problem mit suchscript PHP Tipps 2004 3 04.11.2004 15:53
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34
[Erledigt] Problem mit Timestamp! PHP Tipps 2004 24 08.06.2004 19:51
Login Problem PHP Tipps 2004 4 04.06.2004 18:46
foreach problem mAy^daY PHP Tipps 2004 3 02.06.2004 20:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php suchscript mehrere suchbegriffe

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:35 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.