Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>PHP Parameter nach Key-Wert zusammenfassen

PHP Parameter nach Key-Wert zusammenfassen

pismo24.12.1309:48
Hallo liebe Community,

ich stehe gerade vor einer kleiner Programmier-Challenge und würde mich freuen wenn ihr mir helfen könntet, meinen nicht gerade sehr eleganten Lösungsweg ein wenig aufzufrischen.

Ich möchte einem PHP-Skript diverse Parameter übergeben, wobei diese Wertpaare darstellen.

Beispiel:

Farbe: Rot
Farbe: Blau
Farbe: Gelb

Größe: XL
Größe: XXL

Art: Pullover

Meine Url würde in diesem Fall wie folgt aussehen:

http://www.xyz.com/data.php?filter=farbe_rot__farbe_blau__farbe_gelb__groesse_xl__groesse_xxl__art_pullover

Mit einem Explode auf "__" trenne ich erstmal die Wertpaare auf, die dann jeweils mit explode auf "_" abhängig vom ersten Wert (also "farbe", "groesse" und "art") in ein Array gepusht werden ($farbArray, $groesseArray, $artArray).

Um meine SQL-Query zu bauen lasse ich die Arrays dann einfach in der Query implodieren:

SELECT * FROM kleider WHERE (IN implode farbarray) usw.

Irgendwie habe ich mich hier so verrant dass ich keine bessere Lösung sehen.

Habt ihr einen cooleren Lösungsweg?

Danke im Voraus und schöne Feiertage!

Pismo
0

Kommentare

ChrisK
ChrisK24.12.1312:38
Abgesehen davon, das man eigentlich die Farben/Größen/Arten in eine separate Tabelle auslagen würde (und dann über IDs in die Produkt-Tabelle joined) scheint das eine zwar nicht all zu elegante aber funktionierende Lösung zu sein. (Deine Beispiel-Query funktioniert so natürlich nicht, aber ich nehme mal an, das ist nur ein Fehler beim abschreiben gewesen)

Was genau stört dich daran denn? Abgesehen von eindeutigeren Trennern ist da eigentlich nicht viel dran zu verbessern. ... Solange du sicherstellst, dass die Werte in deinen Arrays keine fiesen Sachen enthalten (SQL-Injection Gefahr!).
„Wer anderen eine Bratwurst brät, hat ein Bratwurstbratgerät.“
0
pismo24.12.1312:49
Hi ChrisK,

danke für deine Antwort. Ich habe mich bei der Query nicht verschrieben, ich habe hier nur zur Vereinfachung eine MySQL Pseudo-Code Query genommen. Tatsächlich wird mit dem Skript ein SAP BusinessWarehouse Information Cube abgefragt, hierfür nutze ich MDX-Statements in PHP, die Filter-Abfrage sieht dann natürlich etwas spezifischer aus.

Habe gerade gesehen, dass man ja auch Arrays direkt in den Parametern übergeben kann, das vereinfach natürlich alles nochmal enorm!

?filter[farbe][]=rot&filter[farbe][]=blau&filter[farbe][]=gelb&filter[groesse][]=xl&filter[groesse][]=xxl&filter[art]=pullover
ChrisK
Abgesehen davon, das man eigentlich die Farben/Größen/Arten in eine separate Tabelle auslagen würde (und dann über IDs in die Produkt-Tabelle joined) scheint das eine zwar nicht all zu elegante aber funktionierende Lösung zu sein. (Deine Beispiel-Query funktioniert so natürlich nicht, aber ich nehme mal an, das ist nur ein Fehler beim abschreiben gewesen)

Was genau stört dich daran denn? Abgesehen von eindeutigeren Trennern ist da eigentlich nicht viel dran zu verbessern.
0
bmc desgin02.01.1402:37
Warum schreibst du die Parameter nicht in eine Session???

Dann kannst du sie erstens so speichern wie du sie brauchst und musst bei einer Änderung der Parameter nicht immer wieder alle Parameter übergeben, sondern nur die veränderten abgleichen mit der Session...
„Ask your questions...“
0
uLtRaFoX!
uLtRaFoX!02.01.1410:47
Das mit den Sessions erscheint mir auch eine recht gute Lösung zu sein.

Alternativ könntest du doch auch einfach Variablen in der Url verwenden... Möglicherweise ist dies performanter als es über explode(); zu realisieren?

Also...:
http://www.xyz.com/data.php?show=seite&color=red&size=xl ...

Und dann einfach aufrufen mit..
$_GET["color"], $_GET["size"]

0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.