PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Datenbank komplett durchsuchen (http://www.selfphp.de/forum/showthread.php?t=13301)

K2k 20.04.2006 14:38:42

Datenbank komplett durchsuchen
 
Hi,
ich habe hier schon viele Threads zum Thema "durchsuchen von Datenbanken" gelesen. Leider finde ich nichts passendes für mein Problem. Ich möchte nicht nur eine Datenbanktabelle durchsuchen sondern möglichst drei oder vier. Und das natürlich so komfortabel wie möglich... ;)
Die Resultate aus der Datenbanksuche werden dann in einer Tabelle mit Hilfe von PHP im Browser ausgegeben.
Derzeit funktioniert die Suche wunderbar in einer Datenbanktabelle, jedoch weiß ich nicht genau wie ich das so realisieren kann, dass er noch eine oder mehrere weitere Datenbanktabellen durchsucht und die Ergebnisse schön im Browser ausgibt.

Muss ich dazu für jede Datenbanktabelle ein eigenes SELECT Statement ausführen und das Ergebnis daraus an die bestehende Tabelle im Browser mittels PHP anhängen?

Bin Dankbar für jeden Tipp :)

Gruß
K2k

feuervogel 20.04.2006 14:44:21

AW: Datenbank komplett durchsuchen
 
wenn das was du suchst in der tabelle eine gleiche struktur hat, kannst du mit UNION arbeiten.

K2k 20.04.2006 15:09:09

AW: Datenbank komplett durchsuchen
 
Hey,
danke für den Tipp... eigentlich schon richtig wie du meinst, aber leider gehts trotzdem nicht.


Also mein SELECT Statement schaut wie folgt aus, nach einbau des UNION Statements:

PHP-Code:

$sel_state "(SELECT * FROM track WHERE trackID REGEXP '$searchString' 
OR code REGEXP '$searchString') 
UNION (SELECT code FROM codes WHERE code '$searchString')"


EDIT1: was ich noch sagen wollte, code aus der Tabelle track liefert mir nur eine ID, mit dieser ID ermittle ich nachher aus der Tabelle codes den entsprechenden Code. hmmm... und das wollte ich eben nun gleich durchsuchen lassen, dass ich in die Tabelle codes reinschaue und nach dem code suchen kann... klingt nun bestimmt komisch (lauter codes ;)) ist aber so... ^^

Ich denke mal, dass es von der Syntax her schon richtig ist, allerdings gibts halt nachher beim:

PHP-Code:

while($row mysql_fetch_object($res_state)) 

den Fehler... :(

vielleicht hab ich aber doch noch nen Fehler?

Danke

Gruß
K2k

xabbuh 20.04.2006 15:37:23

AW: Datenbank komplett durchsuchen
 
Zitat:

Zitat von K2k
EDIT1: was ich noch sagen wollte, code aus der Tabelle track liefert mir nur eine ID, mit dieser ID ermittle ich nachher aus der Tabelle codes den entsprechenden Code. hmmm... und das wollte ich eben nun gleich durchsuchen lassen, dass ich in die Tabelle codes reinschaue und nach dem code suchen kann... klingt nun bestimmt komisch (lauter codes ;)) ist aber so... ^^

Das sieht man danach aus, als wenn du zwei Tabellen in einer Abfrage miteinander verknüpfen möchtest. In der SQL nennt man diesen Vorgang JOINs.

Für dein Problem könnte die entsprechende Abfrage beispielsweise so aussehen:
Code:

SELECT
    c.code
FROM
    track AS t
INNER JOIN
    codes AS c
ON
    t.code =c.ID


K2k 21.04.2006 08:41:52

AW: Datenbank komplett durchsuchen
 
Guten Morgen,

Dein Tipp war ja Perfekt :) Haut soweit auch so hin wie ich es mir vorgestellt hab :) naja, aber leider nicht ganz... Die Suchfunktion läuft, nur leider gibt er mir das Resultat meiner Suche so oft aus wie ich Einträge in der Tabelle track hab...

Mein Statment schaut gerade so aus:
PHP-Code:

$sel_state "SELECT c_id.code_id FROM track AS c INNER JOIN codes AS c_id ON c.c_id = c.c_id WHERE code REGEXP '$searchString'"

und wenn ich wie gesagt nach einem Code suche, wird mir der Code so oft ausgegeben wie viele Einträge in der Datenbanktabelle track drin sind.

Noch einen Tipp vielleicht? :)

Besten Dank :)

Gruß
K2k

EDIT1:

ich habe gerade das SELECT Statement so weit geändert, dass er mir nach allen Einträgen sucht um mal sehen was passiert. Also so:
PHP-Code:

$sel_state "SELECT * FROM track AS c INNER JOIN codes AS c_id ON c.c_id = c.c_id WHERE code REGEXP '$searchString'"

nun gibt er mir die gesamte Datenbanktabelle track aus, nur überall den selben Code. Das heißt, ich habe dann, wenn ich 200 Einträge in der Datenbanktabelle track drin habe, eine Ausgabe am Bildschirm mit 200 Zeilen und der Code ist überall der gesuchte ;) anstatt nur eine Zeile mit dem gesuchten Code... ist etwas schwer zu erklären des ganze, hoffe aber es war etwas verständlich ;)

EDIT2:
Hab meinen Fehler gefunden ;) war nen Fehler im Statement, hab ich gerade gefunden... :) Hat sich also fürs erste erledigt :)

Besten Dank euch beiden für die Hilfe :)

K2k 21.04.2006 09:56:16

AW: Datenbank komplett durchsuchen
 
...kaum ist das eine Problem vorbei, kommt schon das nächste ;) wie mach ich es denn, dass er mir 2 Datenbaktabellen durchsucht?

Also mein Ansatz ist folgender, der aber leider nicht geht :(

PHP-Code:

$sel_state "SELECT * FROM track AS c 
INNER JOIN codes AS c_id ON c.c_id = c_id.c_id 
WHERE code REGEXP '$searchString' 
OR INNER JOIN mobiles AS m_id ON c.m_id = m_id.m_id 
WHERE mobile REGEXP '$searchString' "


Dabei suche ich jetzt aus der Tabelle mobiles nun auch nach einem Mobile...
geht aber leider nicht :(

Danke

K2k

K2k 26.04.2006 14:30:01

AW: Datenbank komplett durchsuchen
 
so! hab nun den Fehler gefunden...
Für alle die des vielleicht auch interessiert!
Das Statement sieht bei mir nun wie folg aus:

PHP-Code:

"SELECT * FROM tracks 
  INNER JOIN codes
  ON tracks.c_id = codes.c_id
  INNER JOIN mobiles
  ON tracks.m_id = mobiles.m_id
  WHERE mobile REGEXP '$searchString'
  OR code REGEXP '$searchString'"


So kann man also 2 Tabellen und auch mehr mit einem SQL Statement nach einem String durchsuchen.

Gruß
K2k


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:09:08 Uhr.

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