Datenbankabfrage mit verschiedenen Bedingungen

Datenbankabfrage mit verschiedenen Bedingungen

am 13.10.2004 20:53:25 von klaus.roetsch

Guten Abend,

ich mache meine ersten "Gehversuche" in PHP und MySQL.Leider habe ich
die FAQ der Gruppe nicht gefunden, http://www.dclp-faq.de

Ich möchte gerne folgende Frage lösen: Wenn ich eine Abfrage per
Formular übergebe in denen sich mehrere Suchbegriffe befinden, muss ich
dann die Spalte in ein Array packen und dann die Suchwerte mit dem Array
vergleichen oder kann ich eine Abfrage so bauen, dass die Datenbank nur
die Datensätze ausgibt, die auch im Suchstring enthalten sind?

Beispiel:

Der User übergibt mit dem Formular die Werte: 145 001,225 023, 145 026

Die Abfrage wäre also:

$test = explode(",",$_POST['nummer']);

for ($i=0; $i $result = mysql_query ("select lfdnr from tab where like
'%$test[$i]%'");
$zeile = mysql_fetch_object($result);
$id[$i] = $zeile->lfdnr;
}

Da bekomme ich nur den ersten Datensatz herraus? Warum?

Muss ich wirklich alle Datensätze in ein Array packen um evtl. zwei
Datensätze zu bekommen?

Viele Grüße

Klaus

P.S: Sollte ich hier falsch sein, teilt es mir bitte mit

Re: Datenbankabfrage mit verschiedenen Bedingungen

am 13.10.2004 22:12:12 von Sascha Burchert

Bin mir nicht ganz sicher, ob es das ist was Du woltest. Hoffe es hilft Dir
weiter.

$op = "AND"; // auf "OR" stellen, wenn Oder-Verknüpfung erwünscht ist
foreach ($test as $t)
{
$sql_fragment .= $op." feld2 like '%".$t."%' ";
}
$sql_fragment = substr($sql_fragment,3);

$sql = "
SELECT
feld
FROM
tab
WHERE
$sql_fragment";
$result = mysql_query ($sql);

while($zeile = mysql_fetch_object($result))
{
$id[] = $zeile->feld;
}

Gruß Sascha

"Klaus Rötsch" schrieb im Newsbeitrag
news:ckjtjt$3qg$01$1@news.t-online.com...
> Guten Abend,
>
> ich mache meine ersten "Gehversuche" in PHP und MySQL.Leider habe ich
> die FAQ der Gruppe nicht gefunden, http://www.dclp-faq.de
>
> Ich möchte gerne folgende Frage lösen: Wenn ich eine Abfrage per
> Formular übergebe in denen sich mehrere Suchbegriffe befinden, muss ich
> dann die Spalte in ein Array packen und dann die Suchwerte mit dem Array
> vergleichen oder kann ich eine Abfrage so bauen, dass die Datenbank nur
> die Datensätze ausgibt, die auch im Suchstring enthalten sind?
>
> Beispiel:
>
> Der User übergibt mit dem Formular die Werte: 145 001,225 023, 145 026
>
> Die Abfrage wäre also:
>
> $test = explode(",",$_POST['nummer']);
>
> for ($i=0; $i > $result = mysql_query ("select lfdnr from tab where like
> '%$test[$i]%'");
> $zeile = mysql_fetch_object($result);
> $id[$i] = $zeile->lfdnr;
> }
>
> Da bekomme ich nur den ersten Datensatz herraus? Warum?
>
> Muss ich wirklich alle Datensätze in ein Array packen um evtl. zwei
> Datensätze zu bekommen?
>
> Viele Grüße
>
> Klaus
>
> P.S: Sollte ich hier falsch sein, teilt es mir bitte mit
>
>

Re: Datenbankabfrage mit verschiedenen Bedingungen

am 13.10.2004 22:26:44 von newsgroup

Klaus Rötsch schrieb:

> Guten Abend,
>
> ich mache meine ersten "Gehversuche" in PHP und MySQL.Leider habe ich
> die FAQ der Gruppe nicht gefunden, http://www.dclp-faq.de
>
> Ich möchte gerne folgende Frage lösen: Wenn ich eine Abfrage per
> Formular übergebe in denen sich mehrere Suchbegriffe befinden, muss ich
> dann die Spalte in ein Array packen und dann die Suchwerte mit dem Array
> vergleichen oder kann ich eine Abfrage so bauen, dass die Datenbank nur
> die Datensätze ausgibt, die auch im Suchstring enthalten sind?
>
> Beispiel:
>
> Der User übergibt mit dem Formular die Werte: 145 001,225 023, 145 026
>
> Die Abfrage wäre also:
>
> $test = explode(",",$_POST['nummer']);
>
> for ($i=0; $i > $result = mysql_query ("select lfdnr from tab where like
> '%$test[$i]%'");
> $zeile = mysql_fetch_object($result);
> $id[$i] = $zeile->lfdnr;
> }
>
> Da bekomme ich nur den ersten Datensatz herraus? Warum?
>
> Muss ich wirklich alle Datensätze in ein Array packen um evtl. zwei
> Datensätze zu bekommen?
>
> Viele Grüße
>
> Klaus
>
> P.S: Sollte ich hier falsch sein, teilt es mir bitte mit
>
>

Die FAQ gibts unter http://www.php-faq.de

Monty

Re: Datenbankabfrage mit verschiedenen Bedingungen

am 14.10.2004 08:02:34 von klaus.roetsch

Hallo Sascha,

Sascha Burchert wrote:

> Bin mir nicht ganz sicher, ob es das ist was Du woltest. Hoffe es
> hilft Dir weiter.
>
> $op = "AND"; // auf "OR" stellen, wenn Oder-Verknüpfung erwünscht ist
> foreach ($test as $t)
> {
> $sql_fragment .= $op." feld2 like '%".$t."%' ";
> }
> $sql_fragment = substr($sql_fragment,3);
>
> $sql = "
> SELECT
> feld
> FROM
> tab
> WHERE
> $sql_fragment";
> $result = mysql_query ($sql);
>
> while($zeile = mysql_fetch_object($result))
> {
> $id[] = $zeile->feld;
> }

Nein, das meinte ich nicht. Die Where-Bedingung soll die im Array $test
befindlichen Werte der Reihe nach abfragen, also im Prinzip so:

select lfdnr from tab where nummer = $test[0];
select lfdnr from tab where nummer = $test[1];
select lfdnr from tab where nummer = $test[2];

Das scheint aber nicht zu gehen.

Viele Grüße

Klaus

Re: Datenbankabfrage mit verschiedenen Bedingungen

am 14.10.2004 08:03:31 von klaus.roetsch

Hallo Michael,

Michael Rüttgers wrote:

> Die FAQ gibts unter http://www.php-faq.de

Danke für den Hinweis!

Viele Grüße

Klaus

Re: Datenbankabfrage mit verschiedenen Bedingungen

am 14.10.2004 11:33:57 von Frank Schenk

Michael Rüttgers wrote:

> Klaus Rötsch schrieb:
>
[Fullquote entfernt]
>
> Die FAQ gibts unter http://www.php-faq.de
>
> Monty

Und wie man quotet gibts hier -> http://learn.to/quote

Besonders: http://www.afaik.de/usenet/faq/zitieren/zitieren-2.php3#ss2. 1

Gruss, Frank