unForastero

<Webworking>


eingeschränkter MySQL-Ergebnissatz mit IN

Montag, 26 Januar 2015       





Eine Prozedur, in der man eine bestimmte Ergebnismenge aus einer Formularübergabe in einen String zwischenspeichert und mit eben dieser Menge die Datenbank abfragt. Ein Beispiel. In einem Formular werden über Checkboxen verschiedene Kategorien abgefragt. Jede Kategorie hat seine eigene ID, die mit dem Formular an ein Script übertragen werden. Es kommt ein Array an.
Array ( [kategorie] => Array ( [6] => on [18] => on ) )
Kategorie 6 und 18 sind also angehakt. In einer anschließenden Datenbankabfrage sollen nur die Sätze gefunden werden, die zu den übergebenden Kategorien zugehörig sind. Man könnte nun "WHERE kategorie" und "AND kategorie" hintereinanderschalten, was aber etwas unschön ist. Dafür gibt es IN. Der mySQL sieht wie folgt aus:
mysql_query(" SELECT * FROM tabelle WHERE kategorie IN(6,18) ");
Zuerst müsesn aber die Kategorien in den STRING für das IN geschrieben werden. Entweder mit Foreach und dann muss das letzte Komma entfernt werden:
if($_POST['kategorie']!=""){ foreach($_POST['kategorie'] as $ID => $on){ $ids.=$ID.','; } //letztes Komma entfernen $ids =substr($ids, 0, -1); }
Oder man verwendet direkt das Ergebnis-Array und wandelt es um in einen Komma-separierten String. Wichtig hier ist aber, das die Checkbox als Value die ID übermittelt und nicht das obligatorische "on".
$ids = implode(",", $_POST['kategorie']);


diese Seite teilen:




Kommentare












neu laden








2009 - 2017 Copyright © unforastero.de       rechtliche Hinweise |  Impressum |  Datenschutz