Schrittweise Produktauswahl über versch. Merkmale

Liebe/-r Experte/-in,

ich erkläre mal anhand eines Beispiels was ich (vermutlich am besten mit php) machen möchte:

Auf einer Homepage soll der Besucher über mehrere Abfrageschritte ein Produkt auswählen können. Z.B. Obst ⇒ rot ⇒ klein = (Ausgabe:smile: Kirsche
oder Gemüse ⇒ weiß ⇒ groß = Blumenkohl

Ich bin absoluter PHP-Neuling, habe leider auch nicht die Zeit mich fundiert einzuarbeiten, möchte aber trotzdem schnell zu einer Lösung kommen (wie wohl bei 90% aller Anfragen der Fall *g* ). Ich hoffe, mir reissen deshalb nicht 90% alles www-Experten den Kopf ab, sondern haben vielleicht den einen oder anderen Hinweis oder ein Beispielskript parat :smile:

Ich habe natürlich schon gesucht und einen Ansatz mit mehrdimensionalen, assoziativen Arrays versucht nach dem Schema:

$ergebnis = array ( 'obst' =\> array ( 'rot' =\> array ( 'klein' =\> 'kirsche',

 'groß' =\> 'apfel'); usw...

So wäre also die „Produkttabelle“ hinterlegt.

Habe dann ganz naiv gedacht, die Keys/Schlüssel zum Array aus Formularabfragen zu holen:

Obst
Gemüse

… und direkt verwursten und das Ergebnis so ausgeben zu können:

echo $ergebnis['Auswahlfeld']['rot']['klein']

Geht aber nicht.

So schwer kann das doch aber nicht sein.

Ich würde mich über jede Hilfe freuen.

Danke & Grüße,
Kerstin

Hallo Kerstin,
eigentlich sieht Dein Ansatz schon ganz gut aus.

echo $ergebnis[‚Auswahlfeld‘][‚rot‘][‚klein‘];

müsste aber eher:

echo $ergebnis[$_POST[‚Auswahlfeld‘]][‚rot‘][‚klein‘];

heissen, da es ja keine Zeichenkette ist, die Du da einsetzen willst, sondern die Variable die den Wert der Auswahl aus dem Formular trägt.

Ich habe jetzt nicht tiefer reingeschaut, aber das wird es vermutlich schon gewesen sein.

Gruß,
Jens

Guten Tag, Sie waren schon sehr nah an der richtigen Lösung dran, allerdings haben sich ein paar kleine Fehler eingeschlichen, hier mal ein Funktionierender Quelltext mit ein paar Kommentaren, am besten kopieren sie diesen in ihren Editor und lesen dort meine Kommentare :wink:

<?php $ergebnis = array ( 'obst' => array ( 'rot' =\> array ( 'klein' =\> 'kirsche', 'groß' =\> 'apfel'))); //Hier fehlten 2 Klammer zu am ende, jede Klammer die aufgemacht wird, muss auch wieder geschlossen werden
?\>

Obst
Gemüse

<?php if(isset($_POST['senden'])){ // ..hier überprüfen zu können ob er gedrückt wurde, nur wenn er gedrückt wurde, wird dann der code zwischen { und } ausgeführt
echo $ergebnis[$\_POST['Auswahlfeld']]['rot']['groß']; // In dieser Zeile fehlte das $\_POST['NAME DES FELDES'] mit diesem Befehl kann man sich den Wert eines abgeschickten Feldes ausgeben lassen. Bei Ihrer Lösung, wurde versucht in dem array $ergebnis ein Wert 'Auswahlfeld' zu finden, welches nicht existiert. Bei meinem Code wird der Wert aus dem Feld 'Auswahlfeld' genommen und nach diesem gesucht. } ?\> Ich hoffe ich konnte helfen. Falls sie allerdings sehr viele Produkte haben oder diese sich oft ändern, empfehle ich ihnen sich mit Mysql Datenbanken vertraut zu machen. Diese sind ein Ersatz für den array und können bequem, ohne erneutes Hochladen der Datei, online bearbeitet werden. Gruß

Hallo Kerstin,

du willst, dass jemand in seinem Browser (also der Client) eine Auswahl zwischen verschiedenen Dingen treffen kann. Habe ich dich da richtig verstanden?

Wenn dem so ist, dann brauchst du dafür kein PHP, denn PHP läuft nur auf dem Server, nicht auf dem Client. Daher empfehle ich dir als Literatur zu Auswahllisten, repektive Formularen, die gute Dokumentation von Selfhtml: http://de.selfhtml.org/html/formulare/index.htm

Grüße und viel Erfolg!

HAllo Kerstin,
das kommt einfach nur darauf an, wie du die Felder „verwurstest“ und wie du die Formularfelder bekommst.

Ich nehme an, du fragst in 3 Schritten ab:

  1. obst/gemüse
    -> alle Eigenschaften der nächsten Stufe für z.B. Obst =farben
    2)ausgabe der nächstn Stufe zur Abfrage: Größe

und bei den Abfragen gehst du jede Ebene des Arrays in einer Schleife durch und fragst nach dem Ergebnis.
Nicht vergessen: alle bereits beantworteten Fragen als hidden fields ins Formular packen - sonst fehlt dir info.

LG
Dagmar

Hallo Kerstin,

leider befinde ich mich zur Zeit außer Landes und kann dir leider nicht weiterhelfen. Bitte wende dich an einen anderen Experten.

MfG Patrick

hallo kerstin,

ich habe, ehrlich gesagt, das problem noch nicht erfasst. soll nach klick auf die radio button sich weitere kategorien öffnen in denen die user dann eine verfeinerte auswahl machen können? dann würde ich es wie eine baumstruktur anlegen. oder suchst du eine möglichkeit das array zu strukturieren?

alles liebe

Roland dreix

dreix webdesign

Hallo Jens,

vielen Dank! Das war´s tatsächlich :smile:

Grüße,
Kerstin

Hallo,

und vielen Dank für die prompte Antwort!
So funktioniert es.
Danke auch für den Hinweis auf die Datenbank, das wäre natürlich eine übersichtlichere und pflegeleichtere Lösung, zumal tatsächlich öfters was angepasst werden muß…

Kurze Erklärung: wir stellen Jackenerweiterungen für Schwangere und junge Eltern her, die ihre Babys in einer Tragehilfe tragen und dabei ihre Jacken nicht mehr schließen können.
Für verschiedene Reißverschlusstypen haben wir verschiedene Adapter. Auf dieser Seite ganz unten ist eine tabellarische Übersicht:
http://www.kumja.de/index_de.php?section=details

D.h. wir haben 4 Parameter (den RV-Typ, die RV-Größe, rechts-/linksseitig schließend, einfach/doppelt).

Wahrscheinlich müßte man wohl prinzipiell genau diese Tabelle in der Datenbank abbilden? Also die Kriterien recht/links und einfach/doppelt jeweils untereinander kombinieren?

Ich werde mich dann mal mit MySQL beschäftigen :smile:

Vielen Dank nochmal,
Kerstin

Ich hoffe ich konnte helfen. Falls sie allerdings sehr viele
Produkte haben oder diese sich oft ändern, empfehle ich ihnen
sich mit Mysql Datenbanken vertraut zu machen. Diese sind ein
Ersatz für den array und können bequem, ohne erneutes
Hochladen der Datei, online bearbeitet werden.

Gruß

Hallo Max,

Danke für Deine Antwort, es hat sich zwischenzeitlich schon eine Lösung aufgetan.

Grüße,
Kerstin

Hallo Roland,

Danke erstmal für Deine Antwort!

Kurze Erklärung: wir stellen Jackenerweiterungen für Schwangere und junge Eltern her, die ihre Babys in einer Tragehilfe tragen und dabei ihre Jacken nicht mehr schließen können.
Für verschiedene Reißverschlusstypen haben wir verschiedene Adapter. Auf dieser Seite ganz unten ist eine tabellarische Übersicht:
http://www.kumja.de/index_de.php?section=details

D.h. wir haben 4 Parameter (den RV-Typ, die RV-Größe, rechts-/linksseitig schließend, einfach/doppelt).

Es geht darum, den Kunden schrittweise durch die Bestimmung des Adapters für seine Jacke zu führen.

Mittlerweile denke ich eher, die Informationen in einer Datenbank zu hinterlegen statt ein recht kompliziertes und unübersichtliches Array aufzubauen (obwohl letzteres funktioniert). Dazu muß ich mich erstmal in MySQL einlesen…

Oder hättest Du vielleicht eine andere Idee?

Grüße,
Kerstin

hallo kerstin,

ich habe, ehrlich gesagt, das problem noch nicht erfasst.

Hallo Kerstin,

es wäre schön, wenn du andere auch an deiner Lösung teilhaben lässt…

Grüße Max

Hallo Max,

es wäre schön, wenn du andere auch an deiner Lösung teilhaben
lässt…

Wohl wahr… DIe Lösung hat allerdings schon ein anderer User gegeben und seine Antwort auch für die Suche freigegeben, insofern…

Die Userauswahl kann in dieser Form aus dem Array ausgelesen werden, hatte da einen Syntaxfehler:

echo $ergebnis[$_POST[‚Auswahlfeld‘]][‚rot‘][‚klein‘];

Außerdem werde ich versuchen, das Ganze statt über ein Array mit einer Datenbanktabelle umzusetzen (übersichtlicher und besser zu pflegen).

Viele Grüße,
Kerstin

Warum machst du es so kompliziert? In deiner Tabelle gibt es 5 Zeilen und vier Spalten damit sind die Auswahlmöglichkeiten sehr begrenzt. Mache in jede Zelle der Tabelle einen Button „dieses Produkt wählen“ oder mach das Bild zum Link mit angehängter ID und spare dir den Umweg mit ARRAY oder MYSQL. Der Button/Link überträgt dann die eindeutige Produkt ID in das Bestellformular. Ich finde eine Datenbank macht nur Sinn, wenn man ein umfangreiches und/oder sehr flexibles Sortiment hat. Ansonsten ist der Aufwand zu hoch.
Ich hoffe ich habe das jetzt Richtig erfasst. Alternativ ginge auch ein Menü welches sich expandiert und die Unterkategorien anzeigt wenn man die jeweilige Oberkategorie anklickt. Dieses ist relativ leicht zu erstellen und auch gut zu pflegen.
mit freundlichem Gruß

Roland Dreix

dreix webdesign
E-Mail: [email protected]
Webseite: http://www.dreix.de, http://www.capia.de

Warum machst du es so kompliziert? In deiner Tabelle gibt es
5 Zeilen und vier Spalten damit sind die Auswahlmöglichkeiten
sehr begrenzt …

Das stimmt natürlich. Die Merkmale sollen dennoch irgendwie schrittweise und mit Bildern und etwas Text erklärt durchgegangen werden. Die Kunden vergessern gerne mal die Hälfte, verwechseln rechts und links, und können auch teilweise nicht mit Tabellen umgehen, lesen also falsch ab. Und genau dieses Ablesen soll deshalb automatisch erfolgen.

Alternativ
ginge auch ein Menü welches sich expandiert und die
Unterkategorien anzeigt wenn man die jeweilige Oberkategorie
anklickt. Dieses ist relativ leicht zu erstellen und auch gut
zu pflegen.

http://www.php.de/tutorials/43433-html-javascript-ve…
Meinst Du sowas?

LG,
Kerstin

ich habe dir da mal was zusammen kopiert. ist noch nicht der Weisheit letzte Schluss, aber gibt dir eine Idee, wie einfach man so was gestalten kann. ich würde da nicht lange mit PHP, MYSQL und JAVASCRIPT rummachen sondern es mit normalem HTML lösen.

jeder Link unten könnte dem Kunden eine spezielle Beschreibungsseite öffnen und wenn er gefunden hat was er sucht dann muss er nur noch bestellen.

jetzt packe ich es nicht den quellcode so reinzu pasten das du dir das rauskopieren kannst. wenn du ihn haben möchtest meine mailadresse findest du wenn du auf home klickst.

<?PHP session_start();<br />$\_SESSION['reg']=$\_GET['reg'];
?\>
/\*\<![CDATA[\*/
.reg2{ padding-left: 40px; }

/\*]]\>\*/
<?PHP if($_SESSION['reg']=='funktionen'){ ?>- [BESCHREIBUNG](.?reg2=beschreibung) <?PHP } ?>- [SO WERTET CAPIA AUS](.?reg=auswertungen) <?PHP if($_SESSION['reg']=='auswertungen'){ ?>- [BESCHREIBUNG](.?reg2=beschreibung) <?PHP } ?>- [IMPRESSUM](.?reg=impressum)

Danke, muß ich nochmal drüber nachdenken…

Viele Grüße,
Kerstin

ich würde da nicht lange mit PHP,

MYSQL und JAVASCRIPT rummachen sondern es mit normalem HTML
lösen.

jeder Link unten könnte dem Kunden eine spezielle
Beschreibungsseite öffnen und wenn er gefunden hat was er
sucht dann muss er nur noch bestellen.