Arrayübergabe

Seebär

Mitglied
Haalo,
ich hoffe, Ihr könnt mir mal wieder helfen. habe schon das
gesamte Forum durchsucht und auch viele Hinweise erhalten,
aber irgendwie will es bei mir nicht klappen.
Mein Problem:
Mit Hilfe von Formularfeldern durchsuche ich eine Tabelle
nach mehreren Kriterien und lasse mir auf einer neuen Seite
alle Ergebnisse anzeigen.
Einfache Abfrage: SELECT * FROM Artikel WHERE Farbe='$Farbe' AND
Typ='$Typ'.
Klappt auch wunderbar. Jeder Artikel hat eine eindeutige ID.
Jetzt mein Problem:
Mit meinem Ergebnis möchte ich eine neue Abfrage in einer anderen
Tabelle durchführen und auf einer dritten Seite ausgeben.
Also: SELECT * FROM Tabelle WHERE ID=$ID
Ich weiß, daß ich das so nicht machen kann, da ich mehrere IDs habe
und diese als Array übergeben muß.
Meine 2 Fragen:
1. Was genau muß ich auf der 2. Seite mit meiner ID machen, damit
diese als Array gespeichert wird?
2. Wie übergebe ich dieses Array und wie lautet die korrekte Abfrage,
damit ich die entsprechenden Ergebnisse auf der 3. Seite habe?

Habe es schon mit Session und Schleifen versucht, aber es sind immer
wieder Fehler drin. Habe auch schon versucht, mir nur die IDs
auf der 3. Seite anzeigen zu lassen, um zu sehen, ob die IDs
überhaupt auf die 3. Seite ankommen, aber als Ergennis bekomme ich
nur "Array".
Mein Quelltext ist mittlerweile so durcheinander, daß es sich nicht
lohnt ihn hier zu zeigen.
Ich denke auch, daß das Problem für Euch nicht so groß ist, aber ich
habe zur Zeit komplett den "Black Out"
 
hmm,

warum machst du nicht alles in einem Script anstatt immer den Kram zu übergeben ?
Naja und das Array musst du einzeln übergeben, also so
PHP:
echo "<a href=\"drittesscript.php?id1=$id[1]&id2=$id[2]....\">"
das ist ein wenig nervig, oder du machst
PHP:
$all = implode("|||",$id);
echo"<a href=\"drittes.php?ids=$all\">link</a>";
und liest es dann so wieder aus
PHP:
$id = explode("|||",$ids);
und hast dein $id Array wieder.

und der SELECT musst du via schleife generieren das er so aussieht
PHP:
SELECT * FROM Table WHERE id = $id[0] OR id = $id[1] ...
 
mit implode machst du ein array draus und dann

$abfrage="SELECT Farbe FROM Tabelle WHERE id = $id_array[0]";
for ($i=1;$i<count($id_array)-1;$i++)
{
$abfrage.=" OR id = $id_array[$i]";
$ergebnis=mysql_query($abfrage);
$zeile=mysql_fetch_array;
echo $zeile[Farbe];
}

Wenn $id_array nun zB 5 Werte hat, würde er halt folgendes ausgeben:
...where id=$id_array[0] or id=$id_array[1] or id=$id_array[2] or id=$id_array[3] or id=$id_array[4];

//edit oh da war wohl schon jemand schneller
 
oder :

PHP:
$all = implode(",",$id);
echo"<a href=\"drittes.php?ids=$all\">link</a>";

Code:
$abfrage = "SELECT * FROM Table WHERE id in($ids)"


da braucht man nix mehr auspacken .. :-)
 
Zuletzt bearbeitet:
Hallo,
danke für Eure schnellen Antworten, aber ich glaube, mein "Black Out"
ist größer als ich dachte.
Wenn ich es mit implode versuche, bekomme ich immer "bad argument"
als Fehlermeldung.
Vielleicht habt Ihr mich auch falsch verstanden. ich versuche es noch
einmal zu erklären.
1. Seite:
Mit Hilfe von Auswahlfeldern und Checkboxen wird eine Tabelle meiner
DB durchsucht.
2. Seite
Alle Datensätze, welche die vorher ausgewählten Kriterien erfüllen
werden angezeigt.
z.b. meine Tabelle hat 50 Datensätze aber nur 3 erfüllen die
Bedingungen
SELECT * FROM Tabelle1 WHERE var1=$var1 AND var2=$var2 AND ...
...
while ($row=mysql_fetch_array($result)){echo "...";}
3. Seite
Hier sollen zusätzliche Informationen zu den Ergebnissen von Seite 2
angezeigt werden, welche aber in einer anderen Tabelle stehen.
SELECT * FROM Tabelle2 WHERE ID=$ID
...
while ($row=mysql_fetch_array($result)){echo "...";}
ich will also die IDs der drei Ergebnisse von Seite 2 übergeben und
genau dieses bekomme ich nicht hin.
Ich übergebe alle Variablen durch ein Formular.
Falls ich 'implode' doch benutzen kann, wo genau muß ich es
"platzieren"? Hae eigentlich alle Möglichkeiten durchgespielt,
bekomme aber immer die gleiche Fehlermeldung 'Bad Argument'
 
2. Seite

SELECT * FROM Tabelle1 WHERE var1=$var1 AND var2=$var2 AND ...
...
while ($row=mysql_fetch_array($result)){echo "...";
$idfeld[] = $row["id"];
}
$all = implode(",",$idfeld);
echo"<a href=\"drittes.php?ids=$all\">link</a>";


3. Seite
Hier sollen zusätzliche Informationen zu den Ergebnissen von Seite 2
angezeigt werden, welche aber in einer anderen Tabelle stehen.

$abfrage = "SELECT * FROM Table2 WHERE id in($ids)"
 
Zurück