PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   SQL Abfrage mit PHP Variablen die leer sind WHERE plz = ? (http://www.selfphp.de/forum/showthread.php?t=21377)

Loki555 28.04.2009 12:51:14

SQL Abfrage mit PHP Variablen die leer sind WHERE plz = ?
 
Hallo zusammen,

in meinem HTML Formular gibt es ein Feld PLZ, in dieses gibt der Benutzer eine Postleitzahl ein, mit method = post und action = datei.php werden die Inhalte der Felder in ein Array geschrieben, in der PHP Datei benutze ich diese Variablen in einer SQL Abfrage. Nun kann es vorkommen, daß der Benutzer keine Postleitzahl eingibt.

Was mache ich nun in der SQL Abfrage der php Datei?

Meine SQL Abfrage:
Code:

$query = "SELECT * FROM kunden WHERE plz = '$plz' AND kundenart = '$kundenart' AND status = '1'";
$plz ist ein Textfeld.
Wenn dieses Textfeld nicht ausgefüllt ist, kann ich dann einen Platzhalter benutzen, mit dem alle Postleitzahlen angezeigt werden?

Ich kann ja z.B.:
Code:

if($plz == '')
        {
                $plz = ;  // aber was schreib ich hier als Platzhalter rein, damit alle Postleitzahlen genommen werden?
        }

* hab ich schon versucht, ist aber bei WHERE nicht zulassig oder?

Das Formular hat später ca. 30 Felder aus denen die Abfrage generiert wird.
Gibt es einen Platzhalter der funktioniert?
Gibt es vielleicht eine Möglichkeit die SQL Abfrage dynamisch zu generieren?

Gruß
Peter

DokuLeseHemmung 28.04.2009 13:03:45

AW: SQL Abfrage mit PHP Variablen die leer sind WHERE plz = ?
 
PHP-Code:

$query "SELECT ....... WHERE plz <> '' ...........";
$query "SELECT ....... WHERE plz IS NOT NULL ..........."

Je nach dem ....

Loki555 28.04.2009 13:08:49

AW: SQL Abfrage mit PHP Variablen die leer sind WHERE plz = ?
 
Vielen Dank für Deine Antwort.

Mit dem je nach dem hab ich so meine Problem,
da ich später sehr viele Felder in meinem Formular habe, muss ich für jedes Feld
ein if einbauene und abfragen ob es Text Feld leer ist, dann eine andere SQL Abfrage
benutzen?

Gibt es da nicht einen anderen Weg?
Vielleicht ist mein Ansatz ja schon falsch?

Gruß
Peter

DokuLeseHemmung 28.04.2009 13:15:24

AW: SQL Abfrage mit PHP Variablen die leer sind WHERE plz = ?
 
Was willst du denn erreichen?

Damir 28.04.2009 13:19:33

AW: SQL Abfrage mit PHP Variablen die leer sind WHERE plz = ?
 
Also vom Prinzip geht das so z.B. - habe es jetzt für Dich einfach gehalten damit Du siehst wie es funktioniet

PHP-Code:

<?PHP

$where 
'';
if(!empty(
$plz))
    
$where .= "plz = '" $plz "' AND ";
if(!empty(
$alter))
    
$where .= "alter = '" $alter "' AND ";
if(!empty(
$strasse))
    
$where .= "strasse = '" $strasse "' AND ";
    
$query "SELECT * FROM kunden WHERE " $where "kundenart = '$kundenart' AND status = '1'";

?>

Damir

DokuLeseHemmung 28.04.2009 13:33:19

AW: SQL Abfrage mit PHP Variablen die leer sind WHERE plz = ?
 
PHP-Code:

$filter  = array();
$where   ' ';

if(isset(
$_POST['plz']) && ctype_digit($_POST['plz']))
  
$filter[] = "plz LIKE '$_POST[plz]%'";

if(!empty(
$_POST['kundenart']))
  
$filter[] = " kundenart = '".mysql_real_escape_string($_POST['kundenart'])."'";

$filter[] = "status = '1'";


if(!empty(
$filter))
 
$where ' WHERE '.implode(' AND ',$filter);
 
$query "SELECT .......  ".$where." ..........."

EDIT:
Huch viel zu spät...

Loki555 28.04.2009 13:39:29

AW: SQL Abfrage mit PHP Variablen die leer sind WHERE plz = ?
 
Ich will bestimmte Daten auf einer Landkarte anzeigen lassen (Google Maps), in der Datenbank sind ca. 50.000 Datensätze, diese will ich mit dem HTML Formular erst einmal etwas einschränken lassen, damit nicht 50.000 Marker erscheinen.

Bei ja/nein Feldern habe ich ja kein Problem, da es ja nur diese zwei Möglichkeiten gibt, bei der Postleitzahl und anderen Feldern, in die der Benutzer etwas ins Formular eintippen kann oder wo nicht nur 0 oder 1 sondern beides angezeigt werden soll, benötige ich einen "Platzhalter" für alles.

Die SQL Abfrage variiert sehr.

@DokuLeseHemmung
über das Formular will ich dem Benutzer die Möglichkeit geben die Datenmenge die zurück gegeben wird etwas ein zu schränken.
Bei Felder wie z.B. der Postleitzahl kann es aber vorkommen, daß nichts in das Feld eingegeben wird, also alle Postleitzahlen angezeigt werden sollen.

@Damir
Danke für deine Hilfe, werde mal auspobieren ob ich damit weiter komme aber auf den ersten Blick sieht es schon mal sehr gut aus.

Werde mich wieder melden, sobald ich etwas weiter bin.

Nochmal vielen Dank für eure Hilfe.

Gruß
Peter

Loki555 28.04.2009 14:08:26

AW: SQL Abfrage mit PHP Variablen die leer sind WHERE plz = ?
 
Tausend Dank. Hat super geklappt und was noch wichtiger ist, ich denke es hat bei mir klick gemacht :-)

Gruß
Peter

Damir 28.04.2009 14:18:33

AW: SQL Abfrage mit PHP Variablen die leer sind WHERE plz = ?
 
Das war ja auch Sinn und Zweck das es Klick macht - wie gesagt kannst Du Dir jetzt Gedanken machen wie Du die Abfragen optimierst - wenn Du es ganz schlau machst ist es ein 3-Zeiler;-)

Damir


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:49:03 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.