Suchen
 
Inside Forum
Nützliche Links
PHP News
 
phpforum.de UserMap
 
phpforum.de bei Facebook
 


phpforum.de bei Twitter
 
phpforum.de Tipp
PHP Test



werbung



Zurück   Forum: phpforum.de > PHP > PHP

PHP Alles rund um PHP

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 20.07.2005, 08:22
lacklady lacklady ist offline
Besucher
 
Registriert seit: 21.01.2005
Beiträge: 89
Standard

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

Mit Zitat antworten
  #2  
Alt 20.07.2005, 08:40
Infomatiker Infomatiker ist offline
Engagierter Besucher
 
Registriert seit: 27.01.2004
Ort: Nähe Giessen
Beiträge: 555
Infomatiker eine Nachricht über ICQ schicken
Standard

Hmm ... du könntest es zum Beispiel so machen :

PHP Quellcode:
$query = "SELECT * FROM mensch WHERE ";
if (strlen($grösse) != 0)
   $query.= "grösse = '$grösse' AND ";
if (strlen($geschlecht) != 0)
   $query.= "geschlecht= '$geschlecht' AND ";
...
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 ...
__________________
Greetings
Infomatiker
Mit Zitat antworten
  #3  
Alt 20.07.2005, 08:43
lacklady lacklady ist offline
Besucher
 
Registriert seit: 21.01.2005
Beiträge: 89
Standard

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!
Mit Zitat antworten
  #4  
Alt 20.07.2005, 09:01
Swiftnick Swiftnick ist offline
Forum-Mitarbeiterin
 
Registriert seit: 03.03.2004
Beiträge: 5.938
Standard

"...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 Quellcode:
<?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;

?>


DOKU-VORLESE-SERVICE(TM)
int count(mixed var)
Zählt die Elemente einer Variable
string implode(string glue, array pieces)
Verbindet Array-Elemente zu einem String
__________________
Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist überzeugt, dass er genug davon habe.
René Descartes
Mit Zitat antworten
  #5  
Alt 20.07.2005, 09:05
Infomatiker Infomatiker ist offline
Engagierter Besucher
 
Registriert seit: 27.01.2004
Ort: Nähe Giessen
Beiträge: 555
Infomatiker eine Nachricht über ICQ schicken
Standard

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.

PHP Quellcode:
$query = "SELECT * FROM mensch WHERE name != '' ";
if (strlen($grösse) != 0)
   $query.= "AND grösse = '$grösse' ";
if (strlen($geschlecht) != 0)
   $query.= "AND geschlecht= '$geschlecht' ";
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 ..
__________________
Greetings
Infomatiker
Mit Zitat antworten
  #6  
Alt 20.07.2005, 09:45
lacklady lacklady ist offline
Besucher
 
Registriert seit: 21.01.2005
Beiträge: 89
Standard

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
Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP Seite bleibt leer Philosoph PHP 5 20.01.2007 14:02
Seite bleibt weiß djtorte PHP 6 18.01.2007 14:12
$result bleibt leer? hugo Datenbanken 8 05.12.2006 12:46
session bleibt gültig? coko-deluxe PHP 2 30.04.2004 00:49
URL bleibt stehen MorgothP PHP 1 06.07.2003 17:29


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:02 Uhr.


Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Powered by NuWiki v1.3 RC1 Copyright ©2006-2007, NuHit, LLC