php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.03.2009, 01:38  
Neuer Benutzer
 
Registriert seit: 01.03.2009
Beiträge: 4
MichaelB befindet sich auf einem aufstrebenden Ast
Standard Bei Suche in Tabelle nur Felder ausgeben die das Suchwort beinhalten

Liebes Forum, ich bin Neuling was MySQL angeht also bitte seit gnädig

wenn jemand auf meiner Seite einen Suchbegriff in die Suchbox tippt nutzte ich ein Ajax Autocomplete-Script um unterhalb des Input-Feldes eine Schnellauswahl möglicher Suchbegriffe anzeigen zu lassen...
Die vorgeschlagenen Wörter möchte ich gerne aus einer MySQL-Datenbank holen, weshalb ich eine PHP-Datei kontaktiere, die mir die Wörter zurückliefern soll.

Mein Problem:
Ich würde gerne eine Suchabfrage starten die raus findet in welchen Feldern einer Tabelle ein Suchwort vorkommt, und nur den Inhhalt dieser Felder anzeigt.

Meine Methode:

PHP-Code:
$sql SELECT FROM `DATENBANKNAME`.`TABELLENNAMEWHERE `idLIKE `SUCHWORT` OR `nameLIKE `SUCHWORT` OR [...]

$sqlquery mysql_query($sql);

while(
$row mysql_fetch_object($sqlquery))
{
echo 
$row->id;
echo 
$row->name;
[...]

kann ich dafür nicht benutzen da ich vorher wissen müsste in welchen Feldern das Suchwort vorkommt.

Mit

PHP-Code:
$result mysql_query(sql);

for (
$i 0$i mysql_num_fields($result); $i++) {
   print 
"<th>".mysql_field_name($result$i)."</th>\n";

komme ich ein Stück weiter, weil ich die Feldernamen ausgegeben bekomme, nur eben einfach alle, und nicht nur diejenigen die auch das Suchwort beinhalten.

Kann mich bitte jemand in die richtige Richtung lenken, wie ich Tabellen durchsuchen, und nur den Inhalt der Felder ausgeben kann die das Suchwort enthalten?
Danke, Michael

Geändert von MichaelB (01.03.2009 um 01:43 Uhr).
MichaelB ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 01.03.2009, 11:13  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.654
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

-> Fulltext-Index verwende (siehe MATCH AGAINST() im Manual)
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 01.03.2009, 13:13  
Neuer Benutzer
 
Registriert seit: 01.03.2009
Beiträge: 4
MichaelB befindet sich auf einem aufstrebenden Ast
Standard

Hi und danke für die Antwort,
also ich habe nun einen Fulltext-Index angelegt
PHP-Code:
ALTER TABLE `DATENBANKNAME`.`TABELLENNAMEADD FULLTEXT (`name`) 


Zur Zeit gibt mir MySQL immer noch komplette Datensätze zurück, mit:
PHP-Code:
SELECT *
FROM `DATENBANKNAME`.`TABELLENNAME
WHERE MATCH (
`name`
)
AGAINST (
'Mustermann'
)
LIMIT 0 , 30 
Was ich noch nicht hinbekomme ist, dass ich die Feldernamen habe die das Suchwort enthalten, sodass ich nur diese Felder ausgeben kann. Weißt Du ob das mit Match()Against() möglich ist?


Edit: Schon klar, dass in dem Bespiel oben nur in `name` gesucht wird, und ich dieses Feld dann einzeln ausgeben könnte. Jedoch habe ich so viele Felder dass es sehr umständlich wäre für jedes Feld eine Abfrage zu starten.

Geändert von MichaelB (01.03.2009 um 13:36 Uhr).
MichaelB ist offline   Mit Zitat antworten
Alt 01.03.2009, 14:18  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.654
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Gegenfrage: warum brauchst du den Namen des Feldes? Bei einer Suche ist es doch IMHO wichtig, dass du den Ziel-Artikel / die Ziel-Seite mit der Suche erhälst?
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 01.03.2009, 14:33  
Neuer Benutzer
 
Registriert seit: 01.03.2009
Beiträge: 4
MichaelB befindet sich auf einem aufstrebenden Ast
Standard

Ich brauche den Namen des Feldes bzw. viel mehr den Inhalt des Feldes da ich den Inhalt unterhalb eines Input-Feldes mit einem Autocomplete-Script anzeigen möchte.

Sieht so aus: Bitte in das Feld hinter "Local City Autocomplete:" ein Buchstaben (z.B "A" tippen)
jQuery Autocomplete

Aus einem Datensatz benötige ich also immer nur die Felder die das Suchwort enthalten. Deshalb suche ich nach einer Möglichkeit mit wenig Aufwand eine Tabelle durchsuchen zu können, ohne jedes Feld manuell angeben zu müssen.
MichaelB ist offline   Mit Zitat antworten
Alt 01.03.2009, 17:27  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.654
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Sofern du nur diejenigen Felder benötigst, die das Suchwort auch enthalten könntest du in das Statement oder deinen Service noch ein IF einfügen.

Zitat:
Aus einem Datensatz benötige ich also immer nur die Felder die das Suchwort enthalten. Deshalb suche ich nach einer Möglichkeit mit wenig Aufwand eine Tabelle durchsuchen zu können, ohne jedes Feld manuell angeben zu müssen.
Ich werde das Gefühl nicht los, dass das Design der Anwendung nicht ganz sauber ist. Solche Handstände ist mein meist nur gezwungen zu tun, wenn das Design (auch oft: Datenbank-Design) nicht sauber ist. Länder / Städte sollten IMHO eigentlich nur genau einmal in der Datenbank vorkommen, es sei denn, du suchst über einen Volltext.

Ich schlage vor, du präsentierst ein paar mehr Hintergrundinformationen.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 01.03.2009, 23:38  
Neuer Benutzer
 
Registriert seit: 01.03.2009
Beiträge: 4
MichaelB befindet sich auf einem aufstrebenden Ast
Standard

Die gewählte Struktur der Anwendung scheint schon in Ordnung zu sein. Jedenfalls habe ich sie bei weiterem Fortschritt stehts als ideal angesehen, da alles sehr einfach umzusätzen war- trotz riesiger Datenmenge. Ich habe sie auch ausgiebig geplant.

Ich habe mein Problem jetzt erst mal so gelöst:
Ich speichere die kompletten Datensätze in einem Arrey und gebe dann per preg_match() nur den Inhalt der Felder aus die das Suchwort beinhalten.

Wahrscheinlich ist das (für Profis) nur ein relativ unperformant workaround, doch es läuft, und gefühlt auch sehr schnell, selbst mit großen Datenmengen.

Wenn Du preg_match() für ne total dumme Idee hälst werde ich gerne eines Besseren belehrt

Danke für Deine Hilfe, Doc.
Michael
MichaelB 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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
HTML Tabelle ausgeben PHP-Fortgeschrittene 7 22.02.2011 17:59
Suche über mehrere Felder mit Sortierung nach Relevanz Dongle Datenbanken 6 17.12.2008 10:34
zufälliger text aus mysql- Tabelle ausgeben? Onemillion PHP Tipps 2008 5 03.11.2008 16:22
Suche in Tabelle beschleunigen Freeaak Datenbanken 8 24.06.2008 14:35
Suche: 1 Begriff über x Felder suchen MeisterGlanz Datenbanken 6 13.10.2006 13:49
suche tutorial: FORMULAR FELDER AUF INHALT PRÜFEN PHP Tipps 2006 7 25.01.2006 19:14
FULLTEXT Felder aus Tabelle auslesen Datenbanken 6 24.10.2005 16:27
Suche MySQL Funktion zum Verbinden 2er Felder R4v3r Datenbanken 2 12.07.2005 23:49
Bestimmte Datenbank Felder nur einmal ausgeben Paulo PHP Tipps 2004-2 3 26.11.2004 16:39
[Erledigt] mysql-Abfrage in Tabelle ausgeben - dringend hilfe PHP Tipps 2004 2 03.11.2004 15:41
MySQL select in einer Tabelle ausgeben PHP Tipps 2004 2 11.09.2004 18:22
Also ich suche ein php skript für backup einer tabelle PHP Tipps 2004 4 23.07.2004 00:06
HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45
DB sicher in Tabelle ausgeben PHP Tipps 2004 5 03.06.2004 14:36

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql feld ausgeben, jquery tabelle durchsuchen, mysql felder ausgeben, http://www.php.de/datenbanken/52380-bei-suche-tabelle-nur-felder-ausgeben-die-das-suchwort-beinhalten.html, jquery autocomplete mysql, mysql feldnamen ausgeben, php suchen in tabelle, php suche in tabelle, felder ausgeben, mysql suche ausgeben, php mysql feld ausgeben, sql feld suchen über alle tabellen, php alle x felder ausgeben, mysql nur felder mit inhalt ausgeben, aus tabelle namen suchen php, mysql alle felder ausgeben, php,suche über mehrere felder mit sortierung nach relevanz, adventure php framework autocomplete, jquery tabelle ausgeben, jquery autocomplete aus datenbank

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