preg_replace
Martin aus Wien
- php
Hallo allerseits,
dieser Code soll mittels Formular den WHERE-Teil einer MySQL-Abfrage bauen. Dazu muss das letzte AND eliminiert werden. Das folgende funktioniert aber nicht, und ich kapier nicht, wieso:
if(isset($_POST['Submit'])){
$_SESSION['where'] = " WHERE";
foreach($_POST as $key => $value){
if($value != "Weiter" && $value != "Bitte wählen Sie"){
$_SESSION['where'] .= "$key = '$value' AND ";
}
$_SESSION['where'] = preg_replace("/AND $/","",$_SESSION['where']);
}
//debugging:
echo "POST: ";
print_r($_POST);
echo "<br>";
echo "SESSION: ";
print_r($_SESSION);
echo "<br>";
}
http://www.useful-scripts.biz/umfrage-lechner/auswertung01.php
Gruß und Dank
Martin
Hallo,
das geht doch auch ohne regulären Ausdruck:
$conditions = '';
foreach($_POST as $key => $value){
if($value != "Weiter" && $value != "Bitte wählen Sie"){
if($conditions != '') $conditions .= ' AND ';
$conditions .= "$key = '$value'";
}
}
$_SESSION['where'] .= $conditions;
Oder habe ich Dich irgendwie mißverstanden?
Ciao,
Andreas
Danke Andreas, so müsste es natürlich gehen. Ich kapier aber trotzdem nicht, warum mir der reguläre Ausdruck alle AND löscht und nicht nur das letzte, wie er eigentlich sollte.
Gruß
Martin
Hallo,
Danke Andreas, so müsste es natürlich gehen. Ich kapier aber trotzdem nicht, warum mir der reguläre Ausdruck alle AND löscht und nicht nur das letzte, wie er eigentlich sollte.
das liegt daran, daß Du die Ersetzung bei _jedem_ Schleifendurchlauf durchführst.
Tipp: nimm das preg_replace() aus der Schleife raus.
;)
Ciao,
Andreas
Upps,
ich hätt vielleicht doch früher schlafen gehen solle gestern :)
Martin
Hallo,
gehe doch ganz einfach so vor:
if(isset($_POST['Submit'])){
$_SESSION['where'] = " WHERE";
foreach($_POST as $key => $value){
if($value != "Weiter" && $value != "Bitte wählen Sie"){
$_SESSION['where'] .= "$key = '$value' AND ";
}
}
$_SESSION['where'] =substr($_SESSION['where']0,-5);
// ...
}
Und im Übrigen streuben sich mir die Nackenhaare, wenn das alles an Prüfung war und $_SESSION['where'] so als Query benutzt werden würde.
Gruß aus Berlin!
eddi