php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.09.2009, 21:06  
Benutzer
 
Registriert seit: 06.08.2009
Beiträge: 58
PHP-Kenntnisse:
Anfänger
bierfest befindet sich auf einem aufstrebenden Ast
Standard Suchfunktion

Hallo zusammen,

ich würde gern für eien Freund eine kleine Suchfunktion in seiner Page einbauen und habe auch schon ein kleines Script gefunden, mit dem es ganz gut funktioniert.

MEIN PROBLEM DABEI
Dieses Script soll nicht nur in EINER Spalte der Tabelle in der Datenbank suchen sondern in 3 bzw. 4 Spalten.

Mein Vorhaben:
Der Benutzer soll die Möglichkeit haben in einem Textfeld folgendes einzugeben: "Region oder PLZ oder Ort".
Weiter soll der Benutzer ein Land wählen und in den Vorgegebenen Branchen mittels Kontrollkästchen eine Branche wählen.

Dieses Script funktioniert eigentlich ganz gut, aber eben nur wenn man in nur einer Spalte der Tabelle in der Datenbank sucht.
Nun soll er aber nach dem eingegebenem Suchwort, dem Land und der Branche suchen und dessen Ergebniss wiedergeben.


Die Datenbank sieht folgendermaßen aus:
Tabelle = "kunden"
Spalte1 = id
Spalte2 = firma
Spalte3 = str (Strasse)
Spalte4 = region
Spalte5 = plz
Spalte6 = ort
Spalte7 = land
Spalte8 = mail
Spalte9 = tel
Spalte10 = fax
Spalte11 = branche
Spalte12 = text (beschreibun)


Das Script sieht bisher flgendermaßen aus:
PHP-Code:
<?php
if (count($_POST) > 0)
{
if (
strlen($_POST['suchtext'])==0)
{
echo 
'<font color="red"><b>Bitte geben Sie ein Suchwort ein!<br></b></font>';
}
  else{
if (isset(
$_POST['submit'])) {

  
    
$c mysql_connect('localhost''user''passwort') or die(mysql_error());
    
mysql_select_db('datenbank') or die(mysql_error());
    
    
$sql "SELECT * FROM kunden WHERE ort LIKE '%"mysql_real_escape_string($_POST['suchtext']) . "%' ORDER BY firma ASC";
            
    
$query mysql_query($sql) or die(mysql_error());
    
    if(
$treffer mysql_num_rows($query) > 0) {
    
$treffer mysql_num_rows($query);
        echo 
'Es gab <strong>' $treffer '</strong> Treffer<br><br><br>';
    }else{
    echo 
'Ihre Suche ergab leider keinen Treffer';
    }
    
    while(
$r mysql_fetch_array($queryMYSQL_ASSOC)) {
        
        echo 
'<hr>' 
        
.$r['firma'].'<br>'
        
.$r['bereich'].'<br>'
        
.$r['str'].'<br>'
        
.$r['region'].'<br>'
        
.$r['plz'].' '.$r['ort'].'<br>'
        
.$r['tel'].'<br>'
        
.$r['fax'].'<br><br><br>
        Beschreibung:<br>'
        
.$r['text'].'<hr><br>';
        
    }
}   
}
}
?>


<form name="textsuche" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  <table width="100%"  border="0" cellspacing="10" cellpadding="10">
    <tr><tr>
      <td>
        <b>Branchensche:</b><br><br>
        <input tyle="text" maxlength="30" size="30" name="suchtext" value="<?php echo $_POST['suchtext']; ?>">
        <br>
Region, PLZ, Ort </td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td><select name="select">
        <option value="Deutschland" selected>Deutschland</option>
        <option value="Österreich">&Ouml;sterreich</option>
        <option value="Schweiz">Schweiz</option>
      </select></td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>Branche: w&auml;hlen <br>
        <p>
          <input name="bereich" type="checkbox" id="bereich" value="Küchenbau">
        K&uuml;chenbau </p>
        <p>
          <input name="bereich" type="checkbox" id="bereich" value="Objektbau">
        Objektbau </p>
        <p>
          <input name="bereich" type="checkbox" id="bereich" value="Gastronomieeinrichtungen">
        Gastronomieeinrichtungen </p>
        <p>
          <input name="bereich" type="checkbox" id="bereich" value="Wohnmöbel">
        Wohnm&ouml;bel </p>
        <p>
          <input name="bereich" type="checkbox" id="bereich" value="Schlafmöbel">
        Schlafm&ouml;bel </p>
        <p>
          <input name="bereich" type="checkbox" id="bereich" value="Messebau">
        Messebau </p>
        <p>
          <input name="bereich" type="checkbox" id="bereich" value="Ladenbau">
        Ladenbau </p>
        <p>
          <input name="bereich" type="checkbox" id="bereich" value="Büromöbel">
        B&uuml;rom&ouml;bel </p>
        <p>
          <input name="bereich" type="checkbox" id="bereich" value="Fenster">
        Fenster </p>
        <p>
          <input name="bereich" type="checkbox" id="bereich" value="Türen">
        T&uuml;ren </p>
        <p>
          <input name="bereich" type="checkbox" id="bereich" value="Möbelbau allg.">
        M&ouml;belbau allg. </p>
        <p>
          <input name="bereich" type="checkbox" id="bereich" value="Innenbau allg.">
        Innenausbau allg. </p>
        <p>
          <input name="bereich" type="checkbox" id="bereich" value="Oberflächentechnik">
        Oberfl&auml;chentechnik&nbsp; </p>
      <p>
        <input name="bereich" type="checkbox" id="bereich" value="Planungsbüro">
      Planungsb&uuml;ro </p></td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><div align="right">
        <input type="submit" value="          Suche  starten          " name="submit">
      </div></td>
    </tr>
  </table>
</form>
Ich hoffe ich hab es ausführlich genug erklärt und Ihr könnt mir helfen!?!?!

Vielen Dank JETZ SCHON für Eure Antworten und Mühen.

LG
Mo
bierfest ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 02.09.2009, 21:12  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Du kannst verschiedene Bedingungen mit einem OR verbinden.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 02.09.2009, 21:26  
Registrierer
Gast
 
Beiträge: n/a
Standard

Was hast Du denn bisher versucht?
 
Alt 02.09.2009, 21:28  
Benutzer
 
Registriert seit: 06.08.2009
Beiträge: 58
PHP-Kenntnisse:
Anfänger
bierfest befindet sich auf einem aufstrebenden Ast
Standard

Ich hab die SQL Zeile jetzt mal so geschrieben:
PHP-Code:
$sql "SELECT * FROM kunden WHERE region OR plz OR ort LIKE '%"mysql_real_escape_string($_POST['suchtext']) . "%' ORDER BY firma ASC"
Dabei zeigt er mir aber alle einträge, die ich in der Datenbank habe und nicht nur die Einträge, die ich als plz, ort oder region angebe.

Wichtig ist ja auch, dass er das gewähle Land und die Branche bei der Suche berücksichtigt!

Wie bekomme ich das nun hin!?
bierfest ist offline  
Alt 02.09.2009, 21:33  
Benutzer
 
Registriert seit: 06.08.2009
Beiträge: 58
PHP-Kenntnisse:
Anfänger
bierfest befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Registrierer Beitrag anzeigen
Was hast Du denn bisher versucht?
Ich hab echt schon einiges versucht.
Sitze nun schon seit fast 4h daran.

Ich bekomme entweder nur Fehlermeldungen, oder er zeigt mir alle Einträge der DB an.

Bisher hab ich u.a. versucht die SQL ZEile anders zu schreiben.

Aber irgendwie komm ich nicht dahinter, wie ich das am besten machen soll, dass er eben nach den ganzen Kriterien sucht und mir auch nur das anzeigt, was dazu passt.
bierfest ist offline  
Alt 02.09.2009, 21:33  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

zwischen die Operatoren gehört immer ein vollständiger Ausdruck

ort LIKE '%bla%'


ist einer, plz nicht*)
Du musst die Operation für jedes einezelne Feld notieren.


*) eigentlich stimmt das ncht ganz. plz ist auch ein Ausdruck, der in PHP in etwa if($plz) **) entspräche. Das ist aber nicht das, was Du suchst.
**) genauer: (bool) $plz
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 02.09.2009, 21:41  
Benutzer
 
Registriert seit: 06.08.2009
Beiträge: 58
PHP-Kenntnisse:
Anfänger
bierfest befindet sich auf einem aufstrebenden Ast
Standard

so geht das:
PHP-Code:
$sql "SELECT * FROM kunden WHERE region LIKE '%"mysql_real_escape_string($_POST['suchtext']) . "%' OR plz LIKE '%"mysql_real_escape_string($_POST['suchtext']) . "%'OR ort LIKE '%"mysql_real_escape_string($_POST['suchtext']) . "%'ORDER BY firma ASC"
COOOL....

AAABER... wie schaff ich das nun, dass er bei dieser Suche auch noch das Land und die Branche berücksichtigt?

Normalerweise müsste ja, wenn ich z.B.: München, Österreich wähle und keine Branche als Antwort kommen: Diese Suche ergab keine Treffer!
bierfest ist offline  
Alt 02.09.2009, 21:42  
Registrierer
Gast
 
Beiträge: n/a
Standard

Du mußt für jedes Feld eine eigene WENN Klausel machen wie z. B.:

SELECT * FROM kunden WHERE region='suchbegriff' OR ort='suchbegriff'...
 
Alt 02.09.2009, 21:47  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Wenn die Inhalte in der Spalte branche gleichgeschrieben sind, wie die in Deinen Values im Formular,
erweiterst Du einfach Deine WHERE-Klausel:
Code:
WHERE (... OR ... OR ... OR ...) AND branche=xyz
Arne Drews ist offline  
Alt 02.09.2009, 21:48  
Registrierer
Gast
 
Beiträge: n/a
Standard

Indem Du die Suchbegriffe teilweise in Klammern setzt
WHERE (region='muenchen' OR ort='muenchen') AND land='oesterreich'
 
 


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
Suchfunktion via DropdownMenü & Javascript RostigerNagel PHP Tipps 2009 2 03.07.2009 12:09
Suchfunktion MySQL-Abfrage, meiste Treffer zuerst Felk PHP Tipps 2009 10 23.02.2009 22:42
[Erledigt] Suchfunktion mit mehreren Feldern k1nGk0oL PHP Tipps 2009 7 25.01.2009 21:09
[Erledigt] Suchfunktion &quot;Spezial&quot; errox PHP Tipps 2008 3 04.11.2008 12:41
Suchfunktion mit JavaScript snboy2007 JavaScript, Ajax und mehr 2 31.10.2007 13:38
Suchfunktion für die Homepage? Was muss der Anfänger wissen? PHP Tipps 2005-2 1 11.10.2005 18:39
suchfunktion PHP Tipps 2005-2 3 27.09.2005 16:39
Fehler bei Suchfunktion Matthias959 Off-Topic Diskussionen 4 17.09.2005 21:26
MySql error -- Suchfunktion mit mehreren Begriffen PHP Tipps 2005 1 12.04.2005 21:06
Suchfunktion PHP Tipps 2005 8 03.04.2005 15:52
Suchfunktion nur für EINE Seite ! HTML, Usability und Barrierefreiheit 2 24.03.2005 18:42
kleine suchfunktion kampfnickel PHP Tipps 2005 5 05.02.2005 10:14
Suchfunktion in einer Datenbank?? PHP Tipps 2004 3 07.07.2004 10:42
Suchfunktion PHP Tipps 2004 4 04.07.2004 16:57

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
if (strlen($_post[\suchbegriff\])<3), if (strlen($_post[\suchbegriff\])>3), kleine suchfunktion

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:50 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