power-box.de
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 24.09.2003, 14:27   #1
TP-Junior
 
Registriert seit: Jul 2003
Ort: Dortmund
topsurftip macht alles soweit korrekt
Question

Tabelle durchsuchen


Hallo,

ich möchte eine MySql-Tabelle nach mehreren Wörtern ( über Suchmaske ) durchsuchen.
######################################
Eingabe:
<form method="POST" action="suche.php">
<br>Suchen nach:
<input type="text" name="suche" size="20">
<input type="submit" value="Suchen" name="button">
</form>
######################################
Abfrage:
$suche = trim ($suche);
$suche = explode (" ",$suche);

$sql = "select * from $tabelle where TITEL LIKE '%$suche[0]%' OR URL LIKE '%$suche[0]%' OR BESCHREIBUNG LIKE '%$suche[0]%' ORDER BY TITEL ASC ";

$sql = "select * from $tabelle where TITEL LIKE '%$suche[1]%' OR URL LIKE '%$suche[1]%' OR BESCHREIBUNG LIKE '%$suche[1]%' ORDER BY TITEL ASC ";

$q_sql = mysql_query($sql,$dbcon);
#########################################

Dies funktioniert aber nur wenn genau 2 Wörter eingegeben werden. Bei 1 Wort oder 3,4 usw. Wörtern wird die ganze Tabelle ausgegeben.

Kann mir da jemand weiterhelfen?

MfG M.J.
topsurftip ist offline   Mit Zitat antworten


Alt 24.09.2003, 16:36   #2
TP-Supporter
 
Registriert seit: Feb 2003
Ort: Bremen
H3ck|0 ist auf einem guten Weg
[komplett Edit]

PHP-Code:
$terms trim($terms);
$terms explode(" ",$terms);
$termcounter 0;

$sql "SELECT * FROM $table WHERE ";

foreach (
$terms as $value)
{
   if ( 
$termcounter != )
   {
       
$sql.=" OR ";
   };

   
$sql.="titel LIKE '%$value%' OR url LIKE '%$value%' OR beschreibung LIKE '%value%' ";

   
$termcounter++;
};

$sql.= " ORDER BY titel ASC;"
Die foreach Schleife verlängert die SQL Abfrage für jeden Suchbegriff um die 3 Suchabfragen.
$termcounter ist hierbei wichtig um wiederrum ein " OR " zwischen diese dreierblöcke zu setzen.
$sql.=""; hängt nen String an $sql dran.

Geändert von H3ck|0 (24.09.2003 um 16:48 Uhr).
H3ck|0 ist offline   Mit Zitat antworten
Alt 24.09.2003, 17:49   #3
TP-Junior
 
Registriert seit: Jul 2003
Ort: Dortmund
topsurftip macht alles soweit korrekt
Hallo,
Danke für die Hilfe aber...
Ich habe das ganze so übernommen - Resultat - ich bekomme, egal wieviele Suchbegriffe ich eingebe immer die ganze Tabelle als
Ausgabe. Muss noch irgentwo was falsch sein.

MfG
topsurftip ist offline   Mit Zitat antworten
Alt 24.09.2003, 18:25   #4
TP-Supporter
 
Registriert seit: Feb 2003
Ort: Bremen
H3ck|0 ist auf einem guten Weg
Bei meinem Script funktioniert diese Abfrage, allerdings durchsuche ich nur eine Spalte ($sql.="$_GET[column] LIKE '%$value%' wird in der foreach Schleife hinzugefügt).
Bist du sicher, dass es keine Überschneidungen in den drei Spalten gibt?
Es wird alles ausgewählt wo titel, url oder beschreibung mindestens EINEN der Suchbegriffe enthalten.
__________________
The truth You hear may not be the truth You think it is
H3ck|0 ist offline   Mit Zitat antworten
Alt 24.09.2003, 19:12   #5
TP-Junior
 
Registriert seit: Jul 2003
Ort: Dortmund
topsurftip macht alles soweit korrekt
hi,

muss jetzt leider weg werde ich morgen nochmal prüfen aber ich glaube nicht das da überschneidungen sind.

MfG M.J.
topsurftip ist offline   Mit Zitat antworten
Alt 25.09.2003, 09:17   #6
TP-Junior
 
Registriert seit: Jul 2003
Ort: Dortmund
topsurftip macht alles soweit korrekt
Hallo,
habe nochmal alles überprüft,irgentwelche Überschneidungen sind nicht vorhanden. Hier nochmal der jetzt geänderte Quellcode:

<?php
require("config.php");

$terms = trim($terms);
$terms = explode(" ",$terms);
$termcounter = 0;

$sql = "SELECT * FROM $tabelle WHERE ";

foreach ($terms as $value)
{
if ( $termcounter != 0 )
{
$sql.=" OR ";
};

$sql.="TITEL LIKE '%$value%' OR URL LIKE '%$value%' OR BESCHREIBUNG LIKE '%value%' ";

$termcounter++;
};

$sql.= " ORDER BY titel ASC;";

$r_sql = mysql_query($sql,$dbcon);
{
while($row = mysql_fetch_array($r_sql))
{
echo "<TABLE><TR>";
echo "<TD>";
echo "<img src=\"..\image\quader.gif\" >&nbsp;";
echo "<a target=\"_blank\" href=\"$row[url]\">$row[TITEL]</a>";
echo "</TD>";
echo "</TR>";
echo "<TR>";
echo "<TD>";
echo "$row[BESCHREIBUNG]";
echo "<br><br>";
echo "</TD></TR></TABLE>";

}
}
?>

MfG M.J.
topsurftip ist offline   Mit Zitat antworten
Alt 25.09.2003, 14:19   #7
TP-Supporter
 
Registriert seit: Feb 2003
Ort: Bremen
H3ck|0 ist auf einem guten Weg
PHP-Code:
<HTML>
   <BODY>
<?php

   
include("./config/mysql.inc.php");
   include(
"./config/config.inc.php");

   
$connection = @mysql_connect($db_host,$db_user,$db_pw) or die("Datenbankfehler: Keine Verbindung möglich");

      
mysql_select_db($db_db);

      
$terms trim($_GET[terms]);
      
$terms explode(" ",$terms);
      
$termcounter 0;
      
$tabelle "test";
      
$sql "SELECT * FROM $tabelle WHERE ";

      foreach (
$terms as $value)
      {
         if ( 
$termcounter != )
         {
            
$sql.=" OR ";
         };

         
$sql.="TITEL LIKE '%$value%' OR URL LIKE '%$value%' OR BESCHREIBUNG LIKE '%$value%' ";

         
$termcounter++;
      };

      
$sql.= " ORDER BY titel ASC;";

      
$r_sql mysql_query($sql,$connection);

      while(
$row mysql_fetch_array($r_sql))
      {
         echo 
'
      <TABLE>
         <TR>
            <TD>
               <img src="../image/quader.gif" >
               <a target="_blank" href="'
.$row[url].'">'.$row[titel].'</a>
            </TD>
         </TR>
         <TR>
            <TD>
               '
.$row[beschreibung].'
            </TD>
         </TR>
      </TABLE>'
;
      };

   
mysql_close($connection);

?>

      <form method="get" action="<?php $PHP_SELF ?>">
         <br>Suchen nach:
         <input type="text" name="terms" size="20">
         <input type="submit" value="Suchen" name="button">
      </form>
   </BODY>
</HTML>
Dieses Script ist bei mir lauffähig. Als Beispiel DB habe ich dies hier verwendet. Es existieren keine Überschneidungen und die Suche funktioniert prinzipiell damit.
Code:
Exportiert mit phpmyadmin.
CREATE TABLE `test` (
  `titel` text NOT NULL,
  `url` text NOT NULL,
  `beschreibung` text NOT NULL
) TYPE=MyISAM;

INSERT INTO `test` VALUES ('gggg', 'hhhh', 'iiii');
INSERT INTO `test` VALUES ('aaaa', 'bbbb', 'cccc');
INSERT INTO `test` VALUES ('dddd', 'eeee', 'ffff');
INSERT INTO `test` VALUES ('jjjj', 'kkkk', 'llll');
INSERT INTO `test` VALUES ('mmmm', 'nnnn', 'oooo');
INSERT INTO `test` VALUES ('pppp', 'qqqq', 'rrrr');
INSERT INTO `test` VALUES ('ssss', 'tttt', 'vvvv');
INSERT INTO `test` VALUES ('wwww', 'xxxx', 'yyyy');
Kleiner Tipp für deine Beiträge und Quelltexte:
Es ist übersichtlicher wenn du beim Code mit Tabs oder Blanks zum Beispiel Schleifenkörper einrückst.
Und bei php Quelltexten einfach das BBCode Tag für php benutzt.
H3ck|0 ist offline   Mit Zitat antworten
Alt 25.09.2003, 20:01   #8
TP-Junior
 
Registriert seit: Jul 2003
Ort: Dortmund
topsurftip macht alles soweit korrekt
Hallo,

erstmal vielen Dank für Deine Hilfe. Bin erst geade nach Hause gekommen und habs gleich mal getestet.

Super - jetzt klappt die ganze Sache!

MfG M.J.
topsurftip ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Tabelle durchsuchen Tabelle durchsuchen
« id Zuweisung auf Folge Links | textdatei auslesen »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:10 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67