Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
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
pismo
24.12.13
09: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
Hilfreich?
0
Kommentare
ChrisK
24.12.13
12: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.“
Hilfreich?
0
pismo
24.12.13
12: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.
Hilfreich?
0
bmc desgin
02.01.14
02: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...“
Hilfreich?
0
uLtRaFoX!
02.01.14
10: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"]
Hilfreich?
0
Kommentieren
Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.
Baldige Überarbeitung: Welche Macs, iPhones und...
Gurman zum Release des neuen Apple TV, HomePods...
Leak in macOS 15.2 Sequoia: Neues MacBook Air k...
Thunderbolt 5 am M4-Mac: Erstes Dock hinterläss...
iOS 18.3 mit Hinweisen auf neue Apple-Hardware
Parallels führt x86-Windows auf M-Macs aus – Te...
Kurz: Trump unterstützt Musk als TikTok-Besitze...
TechTicker