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