| |
formular bleibt unsausgefüllt |
|
 |
 |
 |
| |
ja guten morgen,
habe das gefühl, dass php nur komplizierter statt einfacher wird desto länger man damit arbeitet....
folgende frage: ich habe ein formular wo jemand einfach daten eintregen soll. z.b. grösse, alter geschlecht. in der action-seite werden die dinge dann genommen und in eine sql-abfrage gepackt.
z.b.: select * from mensch where grösse = '$grösse' and geschlecht = '$geschlecht' and......
problem ist nun, dass jemand einen wert nicht angibt. also zb geschlecht weg lässt. bei meiner abfrage würde das heissen, dass er nach allen sucht wo kein geschlecht ist.
select * from mensch where grösse = '$grösse' and geschlecht = '' and......
aber ich will in dem falle alle haben, also egal was für ein geschlecht. hoffe ihr versteht mein problem. und könnt mir helfen
 |
|
|
 |
 |
 |
| |
Antworten |
|
| |
1. Hmm ... du könntest es zum Beispiel so machen :
Code: In Zwischenablage kopieren (nur IE)
Ich mach das immer so, dass ich ein bis 2 Felder mitgebe, die auf jeden Fall gefüllt sind. Kommt aber halt auch immer drauf an, wie umfangreich die DB/Tabelle ist ...
2. na dat klingt nach einem sinnvollen lösungsansatz. habe dann zwar am ende evtl ein AND noch da stehen, aber das kann ich ja einfach lösen indem ich noch irgendeine sinnlose angabe hinten dran hänge. super, danke!
3. "...indem ich noch irgendeine sinnlose angabe hinten dran hänge...."
Na, das ist dann aber nicht grade profesionell....
Ich würde es da lieber so machen:
[PHP] <?php $bedingung=array(); $sql="select * from mensch";
if (!empty($grösse)) $bedingung[] = "grösse='$grösse'";
if (!empty($geschlecht)) $bedingung[] = "geschlecht='$geschlecht'";
if (!empty($alter)) $bedingung[] = "alter='$alter'";
if (count($bedingung)) { $where=implode(" and ",$bedingung); $sql .= " where " . $where; }
echo $sql;
?> [/PHP]
[doc]count, implode[/doc]
4. Nuja .. du kannst das ja auch variieren .. und so sinnlos muss das zusätzliche Argument gar net sein, kommt ganz darauf an, was du alles in der Tabelle hast, und was sich lohnen könnte "auf jeden Fall" mit abzufragen.
Code: In Zwischenablage kopieren (nur IE)
Dadurch wäre dann auch das "AND" am Ende weg .. 
Edit : Das von Swiftnick ist natürlich die optimale Lösung ... cool .. wieder was gelernt! Diese empty()-Funktion kannte ich auch noch net! Man lernt halt nie aus .. 
5. swiftnick du hast ja recht. aber - ich muss eh noch die id´s von zwei verschiedenen tabellen am ende abgleich, von daher muss ich eine "sinnlose" abfrage dran hängen. dennoch, deine lösung ist optimal fürs nächste mal!
danke euch beiden zu so früher stunde
|
|
|