schleife in query ausgeben...???
marco
- php
wer kann mir folgenden code korrigieren?? mein problem: ich möchte mir in einer schleife innerhalb einer query ein array ausgeben!
ich habe keine ahnung, wie die syntax innerhalb der schleife richtig ist, dass die query korrekt ist! muss ich die schleife ein sql .="" schreiben? wie mache ich das richtig?
<?PHP
$array = $printoid;
for($x=0;$x<count($array);$x++)
// sql
$sql = "SELECT oid, kategorie, name_gastgeber, name_betreiber, klassifizierung, beschreibung, bild, bild_alt, strasse_hsnr, plz, ort, tel, fax, email, url, preis, lageplan, balkon, ab_einer_uebernachtung, nur_in_sommermonaten, liegewiese, nichtraucher, tel_im_zimmer, fernseher, waschmaschine, geschirrspuel, tiere_am_hof, reitmoeglichkeit, tiere_erlaubt, ruderboot, restaurant, grillmoeglichkeit, ruhige_lage, badestrand, sauna_solarium, aufenthaltsraum, fahrrad, kinderfreundlich, barrierefrei, entfernung_zum_see, ez, ez_preis_von, ez_preis_bis, dz, dz_preis_von, dz_preis_bis, mbz, mbz_preis_von, mbz_preis_bis, ausstattung, square_m, kueche, kueche_z, anzahl_schlafzimmer from gastgeber where oid!='' ";
// ab hier ist die syntax wohl total falsch:
{
echo "or where oid = "$array[$x]" ";
}
$sql .= "order by klassifizierung desc, name_gastgeber";
echo $sql;
?>
vielen dnak.
marco
wer kann mir folgenden code korrigieren?? mein problem: ich möchte mir in einer schleife innerhalb einer query ein array ausgeben!
Ich denke mal, Du möchtest das Feld nicht ausgeben, sondern an die SQL-Abfrage anhängen.
$array = $printoid;
for($x=0;$x<count($array);$x++)
$sql = "SELECT oid, [..] from gastgeber where oid!='' ";
{
echo "or where oid = "$array[$x]" ";
}
$sql .= "order by klassifizierung desc, name_gastgeber";
1. Überlege Dir mal, wo die for-Schleife hingehört, wenn Du "or where oid = "$array[$x]" " wiederholen willst. Doch sicher nicht irgendwo hin, sondern direkt vor den zu wiederholenden Code.
$array = $printoid;
$sql = "SELECT oid, [..] from gastgeber where oid!='' ";
for($x=0;$x<count($array);$x++)
{
echo "or where oid = "$array[$x]" ";
}
$sql .= "order by klassifizierung desc, name_gastgeber";
2. Du möchtest (wahrscheinlich) den Schleifenkrams in die SQL-Abfrage einfügen, nicht ausgeben. Ein echo ist hier also völlig fehl am Platz:
$array = $printoid;
$sql = "SELECT oid, [..] from gastgeber where oid!='' ";
for($x=0;$x<count($array);$x++)
{
$sql.="or where oid = "".$array[$x]."" ";
}
$sql .= "order by klassifizierung desc, name_gastgeber";
Gruß,
soenk.e
Moin Moin !
$sql = "SELECT [viel Zeug] from gastgeber where oid!='' ";
// ab hier ist die syntax wohl total falsch:
{
echo "or where oid = "$array[$x]" ";
}
Ja. Statt echo sollte da $sql.= stehen, und das SQL-Statement ist auch verbockt:
SELECT <spalten> FROM <tabelle> WHERE <bedingung> OR <bedingung>
Nur 1x WHERE, die Zeile muß also so aussehen:
$sql.="or oid="$array[$x]" ";
Tip:
SELECT <spalten> FROM <tabelle> WHERE oid IN ( <wert> , <wert> , <...> , <wert> )
könnte es Dir und der DB wesentlich leichter machen.
oid!='' OR oid-tests
ist übrigens Quatsch, das liefert Dir sehr wahrscheinlich immer alle Ergebnisse. Meinst Du vielleicht folgendes ?
oid!='' AND ( oid-tests )
$sql .= "order by klassifizierung desc, name_gastgeber";
echo $sql;
Alexander
vielen dnak.
marco
$sql = "SELECT ... from gastgeber where oid!='' ";
^^^ schon einmal an * gedacht?
echo "or where oid = "$array[$x]" ";
Eventuell willst Du etwas wie $sql.='OR oid IN ('.implode(',',$array).')'; verwenden, aber ich vermute eher, daß hier ein Verständnisproblem auf höherer Ebene vorliegt. Was bedeuted "innerhalb einer query ein array ausgeben" genau?