/** * Zeigt das 'Formular zur Eingabe von Größe und Stückzahl' an. * * Die Attribute werden anhand der 'products_id' aus ZenCart geholt. * In diesem Formular ist ne kleine Besonderheit: * -Für 'Größe' sind in ZenCart eigentlich Radiobuttons ausgewählt. Um jedoch * die Benutzbarkeit dieses Formulares zu verbessern, werden diese Radiobuttons * nicht angezeigt, sondern gleich Textfelder zur Eingabe der Anzahl. * Über Javascript, wird gesteuert, dass bei Eingabe in ein Texteingabefeld * die anderen Texteingabefelder auf 0 gesetzt werden. * Da aber die Werte der (nicht angezeigten) Radiobuttons später noch benötigt * werden, muss getrickst werden: ('options_id' und 'options_values_id' werden * deshalb im Textfeld-name in der Form 'anzahl-1-3' übergeben, siehe unten). * * Das Formular liefert bei Klick auf 'in den Warenkorb' folgende POST-Variablen * 5 mal $_POST['anzahl-XXX-XXX'] // Anzahl zu kaufender Artikel, je nachdem, welche Größe * $_POST['submit'] = 'okay' ... */ function twA4ShowForm($str) { // Zähler für Attribut 'Größe' (wegen <table>, hat genau 5 Werte) $twCountAttributDruckart = 0; $twCountAttributGroesse = 0; // Array zum Auslesen der Attribute des Artikels aus ZenCart $arrAttributeIds = array(); // die ID's aller für diesen Artikel (in ZenCart definierten) Attribute $arrAttribute = array(); // zweidimensionales Array aller (in ZenCart definierten) Attribute für diesen Artikel if (!empty($_SESSION['zencart_products_id'])) { $arrAttributeIds = twDbSelectArr_products_attributes_id($_SESSION['zencart_products_id']); $arrAttribute = twDbSelectArrTw_AttributeVonArtikel($_SESSION['zencart_products_id']); } // wenn ein String (Fehlermeldung) mit übergeben wurde if (!empty($str)) { echo "<h4 style='color:red; text-align:center;'>" . $str . "</h4>"; } ?> <!-- Anzeige der Attribute dieses Artikels START --> <form name='frmA4' method='post' action='<?php echo $_SERVER['PHP_SELF']; ?> '> <fieldset> <legend> 4. Größe, Anzahl und Druckart wählen <a href="index.htm" onmouseover="TagToTip('tttA4FieldsetLegend')"> <img src="<?php echo $_SESSION['dirImg']; ?> icon16-fragezeichen02.jpg" /> </a> </legend> <?php // wenn Attribute für diesen Artikel existieren (in ZenCart) if (is_array($arrAttribute)) { $i = 0; // für jedes Attribut dieses Artikels (z.B: für 'Größe' und für 'Farbe') while (list($key, $val) = each($arrAttribute)) { // nur Testausgabe /* echo "products_attributes_id------: ". $arrAttribute[$i]['products_attributes_id']. "<br />"; echo "options_id------------------: ". $arrAttribute[$i]['options_id']. "<br />"; echo "options_values_id-----------: ". $arrAttribute[$i]['options_values_id']. "<br />"; echo "options_values_price--------: ". $arrAttribute[$i]['options_values_price']. "<br />"; echo "price_prefix----------------: ". $arrAttribute[$i]['price_prefix']. "<br />"; echo "products_options_sort_order-: ". $arrAttribute[$i]['products_options_sort_order']. "<br />"; echo "attributes_default----------: ". $arrAttribute[$i]['attributes_default']. "<br />"; echo "attributes_image------------: ". $arrAttribute[$i]['attributes_image']. "<br />"; echo "attributes_required---------: ". $arrAttribute[$i]['attributes_required']. "<br />"; */ // Variablen nur für diese while-Schleife $options_id = $arrAttribute[$i]['options_id']; //Attribut-ID (zB 1 (für Größe)) $options_name = twDbSelect_products_options_name($options_id); //Attribut-Name (zB Größe) $options_values_id = $arrAttribute[$i]['options_values_id']; //Attributmerkmal-ID (zB 3 (für XXL)) $options_values_name = twDbSelect_products_options_values_name($options_values_id); //Attributmerkmal (zB XXL) $products_options_type = twDbSelect_products_options_type($arrAttribute[$i]['options_id']); //Attributtyp (zB 2 (für Radio)) // Sonderbehandlung für das Attribut 'Größe': /* Wenn es sich um das Attribut "Größe" handelt, wird der Radio-Button * im Shirtbemaler gar nicht angezeigt, sondern gleich ein Textfeld * zur Eingabe der Anzahl wird angezeigt. * Da aber der Wert des Radio-Buttons später noch benötigt wird, muss * er irgendwie mit übermittelt werden. * Hier geschieht das provisorisch über den Name des Textfeldes, z.B: * Textfeld-name: 'anzahl-1-3' bedeutet: * Radiobutton-name: 'id[1]' (options_id) * Radiobutton-wert: '3' (options_values_id) * twOnfocusXXX ruft ein Javascript auf, welches das Textfeld, das den * Focus hat, leert und in die anderen Textfelder 0 einträgt. * id wird von dem Javascript zur Erkennung benötigt. */ if ($options_name == "Größe") { $twCountAttributGroesse++; if ($twCountAttributGroesse == 1) { ?> <table class='a4TableGroesse'><tr> <?php } ?> <td class='a4TableGroesseTd'> <?php echo $options_values_name; ?> <br /> <input type='text' name='anzahl-<?php echo $options_id; ?> -<?php echo $options_values_id; ?> ' style='text-align: center; font-size:1.2em;' value='0' size='1' id='<?php echo $options_values_name; ?> ' onfocus='twOnfocusAnzahl<?php echo $options_values_name; ?> () twManageFarbe("a4")'> </input> </td> <?php if ($twCountAttributGroesse == 5) { ?> </tr></table> <?php } } else { if ($options_name == "Druckbild vorn") { ?> <input type="hidden" name="id[txt_<?php echo $options_id; ?> ]" value="twKnzDruckbildVorneValue" id="attrib-<?php echo $options_id; ?> -<?php echo $options_values_id; ?> " /> <?php } else { if ($options_name == "Vorschaubild vorn") { ?> <input type="hidden" name="id[txt_<?php echo $options_id; ?> ]" value="twKnzVorschaubildVorneValue" id="attrib-<?php echo $options_id; ?> -<?php echo $options_values_id; ?> " /> <?php } else { if ($options_name == "Druckart") { $twCountAttributDruckart++; if ($twCountAttributDruckart == 1) { ?> <table class='a4TableDruckart'><tr> <?php } ?> <td class='a4TableDruckartTd'> <?php echo $options_values_name; ?> <input type='radio' name='id[<?php echo $options_id; ?> ]' value='<?php echo $options_values_id; ?> ' id='attrib-<?php echo $options_id; ?> -<?php echo $options_values_id; ?> ' /> </td> <?php if ($twCountAttributDruckart == 2) { ?> </tr></table> <?php } } else { // Es muss unterschieden werden, was für'n (ZenCart-)Attribut-Typ es ist: // (0=Dropdown, 1=Text, 2=Radio, 3=Checkbox, 4=File, 5=ReadOnly) // (Ist ja eigentlich hier egal, weil im Shirtbemaler sowieso gleich ein // Textfeld zur Eingabe der Stückzahl für jeweilige Größe angezeigt wird. // Aber zum 'Begreifen' der 'Materie' isses mal so hier mit drinne...) switch ($products_options_type) { // Dropdown case 0: // an ZenCart übergeben wird sowas wie: // <select name="id[1]" id="attrib-1"> <option value="3">L</option> (...)</select> break; // Text // Text case 1: // an ZenCart übergeben wird sowas wie: // <input type="text" name="id[txt_1]" size="32" maxlength="32" value="" id="attrib-1-5" /> ?> <input type="text" name="id[txt_<?php echo $options_id; ?> ]" size="32" maxlength="32" value="" id="attrib-<?php echo $options_id; ?> -<?php echo $options_values_id; ?> " /> <?php break; // Radio // Radio case 2: // an ZenCart übergeben wird sowas wie: // <input type="radio" name="id[1]" value="3" id="attrib-1-3" /> echo $options_values_name . " "; ?> <input type='radio' name='id[<?php echo $options_id; ?> ]' value='<?php echo $options_values_id; ?> ' id='attrib-<?php echo $options_id; ?> -<?php echo $options_values_id; ?> ' /> <?php break; // Checkbox // Checkbox case 3: // an ZenCart übergeben wird sowas wie: // <input type="checkbox" name="id[1][3]" value="3" id="attrib-1-3" /> break; // File // File case 4: // an ZenCart übergeben wird sowas wie: // <input type="file" name="id[txt_1]" id="attrib-1-5" /><br /> // <input type="hidden" name="upload_5" value="1" /> // <input type="hidden" name="txt_upload_5" /> break; // Read Only // Read Only case 5: // an ZenCart übergeben wird sowas wie: // L<br />M<br />S<br />XL<br />XXL<br /> break; default: break; } // (ENDE switch) } } } } // (ENDE if) $i++; } // (ENDE while) // der Button 'okay' (Submit) // Je nachdem, ob text/motiv/upload ausgewählt ist, wird über Javascript // ein Vorschaubild gespeichert. (aber NICHT, wenn dieses kurz zuvor schon // gespeichert wurde, zB. wenn User nur vergessen hat, Stückzahl anzugeben) ?> <input type='submit' name='submit' value='okay' <?php if ($_SESSION['knzShowTextMotivUpload'] == "text") { // wenn nicht kurz zuvor schonmal das Bild gespeichert wurde if ($_SESSION['filenameVorschaubildText'] == "") { ?> onkeydown="twMachVorschaubildTextMitSave() " onmousedown="twMachVorschaubildTextMitSave() " <?php } } if ($_SESSION['knzShowTextMotivUpload'] == "motiv") { // wenn nicht kurz zuvor schonmal das Bild gespeichert wurde if ($_SESSION['filenameVorschaubildMotiv'] == "") { ?> onkeydown="twMachVorschaubildMotivMitSave() " onmousedown="twMachVorschaubildMotivMitSave() " <?php } } if ($_SESSION['knzShowTextMotivUpload'] == "upload") { // wenn nicht kurz zuvor schonmal das Bild gespeichert wurde if ($_SESSION['filenameVorschaubildUpload'] == "") { ?> onkeydown="twMachVorschaubildUploadMitSave() " onmousedown="twMachVorschaubildUploadMitSave() " <?php } } ?> /> <?php // (ende submit-Button) } else { echo "Zu diesem Artikel existieren keine Attribute!<br />"; } ?> </fieldset> </form> <!-- Anzeige der Attribute dieses Artikels END --> <?php }
/** * Liefert einen String. Entweder die Zusammenfassung des Artikels oder eine * Meldung über das, was noch fehlt. */ function twMachMeldung($artikel, $anzahl, $attribute) { $arrFehler = array(); $str = ""; $str .= "kurze Zusammenfassung:<br />"; $str .= "<table class='a5Table'>"; // Artikel if (!empty($artikel)) { $str .= "<tr><td class='a5TableTd'>Artikel</td><td class='a5TableTd'>" . $artikel . "</td></tr>"; } else { $arrFehler[] = "- Bitte einen Artikel auswählen!<br />"; } // Anzahl if (!empty($anzahl)) { $str .= "<tr><td class='a5TableTd'>Anzahl</td><td class='a5TableTd'>" . $anzahl . "</td></tr>"; } else { $arrFehler[] = "- Bitte eine Anzahl angeben!<br />"; } // Attribute (ACHTUNG: entweder $attributwertId ODER $attributwertName) foreach ($attribute as $attribut) { $attributName = twDbSelect_products_options_name($attribut['options_id']); $attributwertId = $attribut['options_values_id']; $attributwertName = twDbSelect_products_options_values_name($attribut['options_values_id']); if ($attributName == "Größe") { $str .= "<tr><td class='a5TableTd'>" . $attributName . "</td><td class='a5TableTd'>" . $attributwertName . "</td></tr>"; } if ($attributName == "Vorschaubild vorn") { $str .= "<tr><td class='a5TableTd'>" . $attributName . "</td><td class='a5TableTd'>" . twToStringVorschaubildFuerA5() . "</td></tr>"; } if ($attributName == "Druckbild vorn") { // nix } if ($attributName == "Druckart") { $str .= "<tr><td class='a5TableTd'>" . $attributName . "</td><td class='a5TableTd'>" . $attributwertName . "</td></tr>"; } } $str .= "</table>"; // wenn alles OKAY ist (also alle wichtigen Werte vorhanden sind) if (empty($arrFehler)) { // nix tun, alles okay } else { return $arrFehler; } return $str; }