PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Suche (http://www.selfphp.de/forum/showthread.php?t=15669)

Swoosh 28.12.2006 14:13:21

Suche
 
hallo

ich will eine suche machen ich hab eine mysql und die will ich durchsuchen können aber mit einem WHERE usw. geht das doch gar nicht?!
Oder kann mir jemand mal ein Beispiel zeigen?

Danke Swoosh

Andes 28.12.2006 14:36:04

AW: Suche
 
Warum soll das nicht gehen? Ist auch keine andere Abfrage.
PHP-Code:

//das würde dir alle Datensätze liefern wo in einem String 'hans' vorkommt
SELECT nameort FROM tabelle WHERE name LIKE '%hans%' OR ort LIKE '%hans%';

//das würde dir alle Datensätze liefern wo am Ende eines String 'hans' vorkommt
SELECT nameort FROM tabelle WHERE name LIKE '%hans' OR ort LIKE '%hans';

//das würde dir alle Datensätze liefern wo am Anfang eines String 'hans' vorkommt
SELECT nameort FROM tabelle WHERE name LIKE 'hans%' OR ort LIKE 'hans%'

Fragt sich nur ob dies für deine Zwecke ausreichend ist oder du dich lieber mit Volltextsuche beschäftigen solltest.

Heinrich 28.12.2006 21:25:23

AW: Suche
 
Die Volltextsuche (hier in den Feldern Titel und Text):
PHP-Code:

mysql_query ("SELECT titel, text FROM buecher WHERE MATCH (titel, text) AGAINST ('$suchwort' IN BOOLEAN MODE) ORDER BY irgendwas ASC;"


Swoosh 28.12.2006 23:39:08

AW: Suche
 
danke, ich hab auch mal schon eine gemacht.
Das Problem bei der wo ich gemacht hab ist ich frage ab in 'artist', 'title', 'album'.
Also so wie man jetzt schon merkt eine suche für lyrics.
Jetzt findet der wenn ich zb 'bushido' eingebe alles von bushido, nur wenn ich jetzt den song 'augenblick' haben möchte geb ich ein 'suche.php?search=bushido+augenblick' findet der gar nichts, ich weiss aber nicht warum?!

Hier mal der Code:
PHP-Code:

<?
                $string = stripslashes($_GET['search']);
                $search = @mysql_real_escape_string($string);

                $sql = "SELECT * FROM `cb_galerie` WHERE `title` LIKE '%".$search."%' || `desc` LIKE '%".$search."%'";
                $res = mysql_query($sql) or die(mysql_error());
              
                while($row = mysql_fetch_assoc($res)) {
                    echo "<b><a href=\"result.php?see=".$row[id]."\">" . $row[title] . "</a></b><br>\n";
                    echo nl2br(wordwrap($row['desc'], 75));
                    echo "<br><br>\n";
                }
?>


Swoosh 28.12.2006 23:49:30

AW: Suche
 
heinrich ich hab jetzt mal das von dir genommen und ergibt mir diesen fehler!

Zitat:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc) AGAINST ('bushido augenblick' IN BOOLEAN MODE) ORDER BY title ASC' at line 1
PHP-Code:

<?
        include('cbonline/inc/cfg.inc');
        include('axel/inc/fnc.inc');
         include('axel/inc/tpl.inc'); 
      
          $search = $_GET['search'];
      
          if(!isset($search)) {
            echo 'Du musst ein Suchwort angeben!';
        } else {
            $string = stripslashes($search);
            
            $sql = "SELECT * FROM `cb_galerie` WHERE MATCH (title, desc) AGAINST ('".$search."' IN BOOLEAN MODE) ORDER BY title ASC";
            $res = mysql_query($sql) or die(mysql_error());
            
            while($row = mysql_fetch_assoc($res)) {
            
                echo $row[title];
            }
            
        }
?>


Andes 29.12.2006 00:37:00

AW: Suche
 
Dein Suchbegriff ist ja auch bushido+augenblick und so sieht dann halt auch dein Query aus.
PHP-Code:

SELECT .... WHERE´titel LIKE '%bushido+augenblick%' 

Du müsstest also erst die Suchbegriffe von ein anderer trennen.

Desc ist keine gute Feldbezeichnung, da es ein fester Begriff in Mysql ist.

Swoosh 30.12.2006 03:07:05

AW: Suche
 
also wenn ich

PHP-Code:

<?
$search = 'bushido+augenblick
$string = stripslashes($search); 
echo $string;
?>

gibt er mit 'bushido augenblick' aus!
Weiss keiner was zu dem Fehler von der Abfrage von Heinrich!

Danke, Swoosh

Swoosh 30.12.2006 03:20:24

AW: Suche
 
Funktioniert jetzt wunderbar, nur wenn ich eingeb ?search=bushido+sonnenbank+flavour findet er alles von Bushido, er soll dann aber nur Bushido Sonnenbank Flavout finden, und wenn ich nur bushido mach alles von bushido!

Mein Code:

PHP-Code:

<?php
        
include('cbonline/inc/cfg.inc');
        include(
'axel/inc/fnc.inc');
         include(
'axel/inc/tpl.inc'); 
      
          
$search $_GET['search'];
      
          if(!isset(
$search)) {
            echo 
'Du musst ein Suchwort angeben!';
        } else {
            
$string mysql_real_escape_string(stripslashes($search));
            
            
$sql "SELECT * FROM `cb_galerie` WHERE MATCH (`desc`,`title`) AGAINST ('%".$search."%' IN BOOLEAN MODE)";
            
$res mysql_query($sql) or die(mysql_error());
            
            while(
$row mysql_fetch_assoc($res)) {
            
                echo 
$row[title];
                echo 
'<br>';
            }
            
        }
?>


Danke, Swoosh

Andes 30.12.2006 09:33:53

AW: Suche
 
Ließ dir dazu mal die Doku durch. Dort wird auch erklärt welche Volltextoperatoren für was verwendet werden können. Mysql-Volltextsuche

Zitat:

gibt er mit 'bushido augenblick' aus!
Dann sieht halt dein Query so aus.
PHP-Code:

SELECT .... WHERE´titel LIKE '%bushido augenblick%' 

Damit findest du dann nur Datensätze wo dieser Teilstring enthalten ist.


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:03:14 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.