mehrfachauswahl Feld

al-Maghribi

Mitglied
hallo,

wie ist es wenn man die Mehrfachauswahl an der Sql Abfrage schicken ?
wird sie als array empfangen!

ich hab es als einzelauswahl geschafft aber wie ist es mit der Mehrfachauswahl!!:confused:

PHP:
$System = $_POST['System'];  

$query_string = mysql_query("SELECT DISTINCT Komponentenbezeichnung FROM haupttabelle where Systembezeichnung ='$System'",$connection)or die(mysql_error());

Danke im Vorraus
 
Was genau ist die Frage? Wie Du die SQL-Anweisung bildest?

Wenn $System dann das Array sein soll wäre das die entsprechende Anweisung:

PHP:
$sql = "SELECT DISTINCT Komponentenbezeichnung FROM haupttabelle where Systembezeichnung = '" .$System[0] ."'";

for ($a = 1; $a < count($System); $a++) {
   $sql = $sql ." OR Systembezeichnung = '" .$System[$a] ."'";
}

$query_string = mysql_query($sql, $connection) or die(mysql_error());

Wobei hier natürlich noch geprüft werden muss ob überhaupt ein Wert übergeben wird.

Gruß Thomas
 
vielen vielen dank !
Das ist was ich gesucht habe ! ich habe es auch miteine FOR schleife versucht aber ich bin nicht auf der idee Gekommen :) wie du es gemacht hast !

noch eine kurze frage :

was meinst du damit : es soll geprüft werden ob überhaupt ein wert übergeben wird?!
 
Da Du schreibst "Mehrfachauswahl" denke ich Du hast ein Listenfeld in dem man mehrere Einträge markieren kann oder Du hast mehrere Checkboxen wo man eine beliebige Anzahl markieren kann.

Angenommen es wird jetzt nichts ausgewählt, dann gibt es auch kein Array. Somit wird die SQL-Anweisung einen Fehler ergeben.

Du müsstest also prüfen ob

PHP:
if (count(System) <> 0) {
   // SQL-Anweisung ausführen
} else {
  echo "Bitte wählen Sie mindestens eine Systembezeichnung aus!";
}

Dadurch wird die Abfrage auch nur dann ausgeführt wenn mindestens ein Eintrag ausgewählt wurde.

Gruß Thomas
 
ach ja !!
wenn ich nix auswähle dann kriege eine Leere Tabelle und keine Fehler meldung
ist trotzdem ein Plus, hab es da eingebaut !

vielen Dank noch
 
Hi,

Wenn $System dann das Array sein soll wäre das die entsprechende Anweisung:

PHP:
$sql = "SELECT DISTINCT Komponentenbezeichnung FROM haupttabelle where Systembezeichnung = '" .$System[0] ."'";

for ($a = 1; $a < count($System); $a++) {
   $sql = $sql ." OR Systembezeichnung = '" .$System[$a] ."'";
}

$query_string = mysql_query($sql, $connection) or die(mysql_error());

Eine etwas übersichtlichere Abfrage kann man so bekommen:

PHP:
$sql = "SELECT DISTINCT Komponentenbezeichnung FROM haupttabelle where Systembezeichnung IN (" . implode(',', array_map(create_function('$item', 'return "\'$item\'";'), $System)) . ")";

LG
 
Zurück