php.de

Zurück   php.de > php.de Intern > Wiki Diskussionsforum > Tutorials

Tutorials Hier findest Du Tutorials, welche nach und nach ein fertiges Script ergeben. Sehen, lernen & verstehen!

Antwort
 
LinkBack (3) Themen-Optionen Thema bewerten
Alt 28.05.2004, 01:51  
Tobias
Gast
 
Beiträge: n/a
Standard [Erledigt] MySQL-Datenbank durchsuchen

Benötigte Funktionen:
# mysql_connect() (In diesem Scriptbeispiel wird vorausgesetzt, dass die Verbindung zu MySQL bereits besteht)
# explode()
# array()
# foreach()
# implode()
# mysql_query()
# mysql_error()

PHP-Code:
$keywords 'in mysql db suchen'
Die Suchbegriffe können auch von einem Formular kommen..

PHP-Code:
$association 'AND'
Suchmodus AND oder OR, kann auch z.B. über RADIO-Inputfelder bestimmt werden

PHP-Code:
$keywords explode(" ",$keywords); 
Die Suchbegriffe müssen getrennt werden, damit sie einzeln bearbeitet werden können.

PHP-Code:
$query = array();

foreach(
$keywords as $keyword) {
    
$query[] = "(   `name_des_ersten_felds`     LIKE '%".$keyword."%'
                OR  `name_des_zweiten_felds`    LIKE '%"
.$keyword."%'
                OR  `name_des_dritten_felds`    LIKE '%"
.$keyword."%'
                OR  `und_so_weiter`             LIKE '%"
.$keyword."%')
                "
;

Jeder Suchbegriff muss umgewandelt werden, damit er in einen MySQL-Query eingesetzt werden kann, das %-Zeichen dient als Platzhalter für den möglichen übrigen Text im Datensatz.

PHP-Code:
$query implode("\n ".$association." ",$query); 
Dann müssen die Suchbegriffe wieder zusammengefügt werden mit UND bzw. ODER-Verknüpfung

PHP-Code:
$sql "
    SELECT  *
    FROM    `name_der_tabelle`
    WHERE   "
.$query."
;"

$res mysql_query($sql);

if (!
$res) {
    
/**
     * Diese Zeilen geben das SQL-Statement in recht lesbarer Form aus.
     */
    
print '<pre>';
    print 
$sql;
    print 
'</pre>';
    
/**
     * E_USER_ERROR führt zum Abbruch des Scripts.
     * E_USER_NOTICE und E_USER_WARNING, lassen das Script weiterlaufen
     */
    
trigger_error('Datenbankanfrage schlug fehl: '.mysql_error(), E_USER_ERROR);
} else {
    
/**
     * Hier die Routinen zum Auslesen der Suchergebnisse einfügen.
     */

...und als letztes wird natürlich der MySQL-Query gesendet und die Daten können dann wie üblich ausgegeben werden mit z.B. mysql_fetch_object() oder mysql_fetch_array()...

Hier nochmal das komplette Script:
PHP-Code:
$keywords 'in mysql db suchen';

$association 'AND';

$keywords explode(" ",$keywords);

$query = array();

foreach(
$keywords as $keyword) {
    
$query[] = "(   `name_des_ersten_felds`     LIKE '%".$keyword."%'
                OR  `name_des_zweiten_felds`    LIKE '%"
.$keyword."%'
                OR  `name_des_dritten_felds`    LIKE '%"
.$keyword."%'
                OR  `und_so_weiter`             LIKE '%"
.$keyword."%')
                "
;
}

$query implode("\n ".$association." ",$query);

$sql "
    SELECT  *
    FROM    `name_der_tabelle`
    WHERE   "
.$query."
;"

$res mysql_query($sql);

if (!
$res) {
    
/**
     * Diese Zeilen geben das SQL-Statement in recht lesbarer Form aus.
     */
    
print '<pre>';
    print 
$sql;
    print 
'</pre>';
    
/**
     * E_USER_ERROR führt zum Abbruch des Scripts.
     * E_USER_NOTICE und E_USER_WARNING, lassen das Script weiterlaufen
     */
    
trigger_error('Datenbankanfrage schlug fehl: '.mysql_error(), E_USER_ERROR);
} else {
    
/**
     * Hier die Routinen zum Auslesen der Suchergebnisse einfügen.
     */

  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 15.10.2006, 17:27  
Neuer Benutzer
 
Registriert seit: 25.10.2005
Beiträge: 27
Stefajo
Standard

Schönes Tutorial! Allerdings habe ich das Problem, dass wenn ich das Ergebnis mit mysql_fetch_assoc($res) und dann mit print_r ausgebe immernur EIN Ergebnis im Array steht, der also immer Nur die ERSTE Übereinstimmung nimmt -.-
Stefajo ist offline   Mit Zitat antworten
Alt 15.10.2006, 18:27  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard

einfach ne while schleife...


PHP-Code:
while($row=mysql_fetch_assoc($res)){
  
// do whatever


mfg
DER_Brain ist offline   Mit Zitat antworten
Alt 15.10.2006, 20:03  
Neuer Benutzer
 
Registriert seit: 25.10.2005
Beiträge: 27
Stefajo
Standard

Mhm, ich habs mal probiert.. .Aber es funktioniert nicht!
Mein code sieht so aus:

PHP-Code:
<?php
/*
 * Created on 15.10.2006
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 */
include ("includes.php");

$keywords $_POST['keywords'];

$association $_POST['association'];

$keywords explode(" ",$keywords);

$query = array();

$kategorie $_POST['kategorie'];
foreach(
$keywords as $keyword) {
    
$query[] = "(   `Titel`     LIKE '%".$keyword."%'
                OR  `Beschreibung`    LIKE '%"
.$keyword."%')
                "
;
}

$query implode("\n ".$association." ",$query);

$sql "
    SELECT  Titel
    FROM    tutorials
    WHERE   "
.$query."  AND Kategorie = '".$kategorie."'
;"
;
$res mysql_query($sql); 
while (
$row=mysql_fetch_assoc($res)){
$row .= mysql_query($sql);
}

if (!
$res) {
    
/**
     * Diese Zeilen geben das SQL-Statement in recht lesbarer Form aus.
     */
    
print '<pre>';
    print 
$sql;
    print 
'</pre>';
    
/**
     * E_USER_ERROR führt zum Abbruch des Scripts.
     * E_USER_NOTICE und E_USER_WARNING, lassen das Script weiterlaufen
     */
    
trigger_error('Datenbankanfrage schlug fehl: '.mysql_error(), E_USER_ERROR);
} else {
    
/**
     * Hier die Routinen zum Auslesen der Suchergebnisse einfügen.
     */
     
     
print_r($row);
}


?>
...
Stefajo ist offline   Mit Zitat antworten
Alt 15.10.2006, 21:13  
Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 70
shocky
shocky eine Nachricht über ICQ schicken
Standard

PHP-Code:
while ($row=mysql_fetch_assoc($res)){
$row .= mysql_query($sql);

Änder das mal so ab
PHP-Code:
while ($row=mysql_fetch_assoc($res)){
$out .= mysql_query($sql);

und gib dann mit print_r($out) aus

Dein fehler ist das du in der while $row immer wieder überschreibst.
shocky ist offline   Mit Zitat antworten
Alt 16.10.2006, 00:08  
Neuer Benutzer
 
Registriert seit: 25.10.2005
Beiträge: 27
Stefajo
Standard

Zitat:
Zitat von shocky
PHP-Code:
while ($row=mysql_fetch_assoc($res)){
$row .= mysql_query($sql);

Änder das mal so ab
PHP-Code:
while ($row=mysql_fetch_assoc($res)){
$out .= mysql_query($sql);

und gib dann mit print_r($out) aus

Dein fehler ist das du in der while $row immer wieder überschreibst.
geht genausowenig...gibt nur eine leere ausgabe
Stefajo ist offline   Mit Zitat antworten
Alt 16.10.2006, 15:51  
Erfahrener Benutzer
 
Registriert seit: 27.10.2004
Beiträge: 1.093
PHP-Kenntnisse:
Fortgeschritten
Chr!s
Standard

Ich habe nirgends die Funktion mysql_real_escape_string gefunden? Diese Funktion sollte schon verwendet werden, um MySQL-Injections vorzubeugen..
Chr!s ist offline   Mit Zitat antworten
Alt 16.10.2006, 16:42  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Wenn Göke mal da wäre und grünes Licht gibt miste ich hier gerne mal aus.
Zergling-new ist offline   Mit Zitat antworten
Alt 16.10.2006, 18:16  
Neuer Benutzer
 
Registriert seit: 25.10.2005
Beiträge: 27
Stefajo
Standard

Das bedeutet?
Stefajo ist offline   Mit Zitat antworten
Alt 16.10.2006, 21:10  
Erfahrener Benutzer
 
Benutzerbild von phpdummi
 
Registriert seit: 06.06.2008
Beiträge: 1.631
PHP-Kenntnisse:
Anfänger
phpdummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard


was passiert damit:
PHP-Code:
/*[...]*/

$out = array();

while (
$row=mysql_fetch_assoc($res))
{
  
$out[]= mysql_query($sql);
}

print_r($out); 
__________________
"Nobody is as smart as everybody" - Kevin Kelly
— The best things in life aren't things
phpdummi ist offline   Mit Zitat antworten
Antwort


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

LinkBacks (?)
LinkBack to this Thread: http://www.php.de/tutorials/2282-erledigt-mysql-datenbank-durchsuchen.html
Erstellt von For Type Datum
Kennt jemand einen guten Suchmaschienen script (Download, Suchmaschine) This thread Refback 05.10.2010 17:23
TV Jahn Wolfsburg Schwimmen This thread Refback 24.01.2010 12:53
Datenbank nach stichwrtern durchsuchen This thread Refback 23.12.2009 18:35

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mit php dynamisch Namen von Bildnamen sowie Pfad in mysql Datenbank speichern mallmis PHP Tipps 2008 1 19.11.2007 23:04
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:33
[Erledigt] mysql datenbank anlegen...aber WIE??? PHP Tipps 2005-2 0 05.08.2005 19:33
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:32
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:32
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:29
mysql datei in datenbank einspielen Datenbanken 6 20.06.2005 16:07
[Erledigt] Verständnisfrage OOP - Objekte in MySQL Datenbank schreiben? PHP Tipps 2005 2 19.05.2005 21:40
MySql Datenbank sichern Datenbanken 1 10.01.2005 20:19
mit mysql und php eine datenbank erstellen? Großes Problem PHP Tipps 2004-2 1 16.12.2004 14:53
bin ich blöd???? Mysql Datenbank Passwort becks123 Datenbanken 3 29.10.2004 14:11
[Erledigt] MySQL findet Datenbank nicht Datenbanken 10 21.10.2004 09:14
Formular in Mysql Datenbank speichern Anuschka Datenbanken 1 15.08.2004 02:55

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php datenbank durchsuchen, datenbank durchsuchen php, sql datenbank durchsuchen, mysql durchsuchen, mysql datenbank durchsuchen, php mysql datenbank durchsuchen, mysql datenbank durchsuchen php, php mysql durchsuchen, sql ganze datenbank durchsuchen, php sql durchsuchen, sql tabelle durchsuchen, sql gesamte datenbank durchsuchen, datenbank mit php durchsuchen, datenbank durchsuchen sql, php tabelle durchsuchen, php mysql tabelle durchsuchen, mysql ganze datenbank durchsuchen, mysql gesamte datenbank durchsuchen, mysql tabelle durchsuchen php, mysql durchsuchen php

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