Möglichkeiten Optionsfeld anzusprechen

killefid rai

Grünschnabel
Hallo zusammen,

ich bin dabei auf der Basis von oscommerce einen Produktkonfigurator zu bauen.
Innerhalb des Forms "cart_quantity" werden durch eine Funktion die Dropdownfelder erzeugt:
PHP:
        echo tep_draw_custom_pull_down_menu('id[' . $products_options_name['products_options_id'] . ']', $products_options_array, $cart->contents[$HTTP_GET_VARS['products_id']]['attributes'][$products_options_name['products_options_id']]);
Nun versuche ich per JavaScript den Preis jeder Option auszulesen
PHP:
echo "<script language=\"javascript\">\n";
echo "<!--\n";
echo "function showimage() {\n";  
$prod_att_number_query = tep_db_query('select distinct options_id from ' . TABLE_PRODUCTS_ATTRIBUTES . ' where products_id = "' . $HTTP_GET_VARS['products_id'] . '"');
$j = 0;  
while ($prod_att_number = tep_db_fetch_array($prod_att_number_query))
{  $j = $j + 1;
echo "var _s" . $j . " = document.cart_quantity.new" . $j . ".options.selectedIndex\n";
echo "var _t" . $j . " = document.cart_quantity.new" . $j . ".options[document.cart_quantity.new" . $j . ".options.selectedIndex].getAttribute(\"price\")\n";
echo "var _u" . $j . " = eval(_t" . $j . ")\n";
echo "document.cart_quantity.pricing" . $j . ".value= _u" . $j . "\n";
echo "var _b" . $j . " = document.cart_quantity.new" . $j . ".options[document.cart_quantity.new" . $j . ".options.selectedIndex].getAttribute(\"model\")\n";
und in einem Feld anzeigen zu lassen:
PHP:
<input type="text" style="text-align:right;" name="pricing<?php echo 'id[' . $products_options_name['products_options_id'].  ']';?>" value="" size="8" READONLY>
Ich will damit erreichen, daß für jede Option verschiedene Informationen angezeigt werden ohne jedes Mal die Seite neu zu laden. Vom Prinzip her wird es dann nachher so aussehen:

http://www.bike-x-perts.com/build.php/mod/23205

Nun zu meinem Problem: Es geht nicht! Das Problem schein zu sein, daß ich als Optionsnamen ein Array verwende.
PHP:
'id[' . $products_options_name['products_options_id'].  ']'
Wenn ich daraus
PHP:
'$products_options_name['products_options_id'
mache fluppt es. Nur dann fehlen mir die Informationen die ich benötige um die ausgewählten Optionen in den Warenkorb zu schmeißen.
Ich suche nun eine Möglichkeit die Dropdownfelder anders anzusprechen, so daß das Array im Namen nicht mehr stört. Das Array ist wichtig um das Ganze im Warenkorb mehrsprachig zu haben. Nicht jedoch für das JavaScript, das lediglich einen Preis oder Bildnamen ausgeben soll.

Ich danke schonmal für Eure Mithilfe.

Rainer
 
Zuletzt bearbeitet:
Hallo....

Du stellst eine Javascript-Frage zu <select>'s , und postests eine Menge PHP-Code, in dem viel zu sehen ist, nur eines nicht: ein <select> :confused:

Es wäre weitaus aufschlussreicher, wenn du mal den HTML-Code einer einzigen Liste posten würdest :)
 
Hallo,

der erzeugte Quelltext sieht dann so aus. (Ist ein bischen von html tags bereinigt):
HTML:
<form name="cart_quantity" action="http://127.0.0.1/product_info.php/products_id/125851/action/add_product" method="post">  
<select style="width:180px"; name="id[2]" onChange="showimage()">    
Gabel:  
<option price="28.4482" name="images/" model="" value="3">Manitou</option>  
<option price="18.9655" name="images/" model="" value="4">RockShox</option>  
</select>    
<input type="text" style="text-align:right;" name="pricingid[2]" value="" size="8" READONLY>    

Farbe:  
<select style="width:180px"; name="id[1]" onChange="showimage()">  
<option price="10.3448" name="images/" model="" value="2">rot</option>  
<option price="4.3103" name="images/" model="" value="1">blau</option>  
</select>    
<input type="text" style="text-align:right;" name="pricingid[1]" value="" size="8" READONLY>
value im pricing... Feld bleibt leider leer.

Die JavaScript Funktion sieht im ausgegebenen Quelltext so aus:
HTML:
function showimage() {  
var _s1 = document.cart_quantity.id[1].options.selectedIndex 
var _t1 = document.cart_quantity.id[1].options[document.cart_quantity.id[1].options.selectedIndex].getAttribute("price")  
var _u1 = eval(_t1)  
document.cart_quantity.pricingid[1].value= _u1  
var _b1 = document.cart_quantity.id[1].options[document.cart_quantity.new1.options.selectedIndex].getAttribute("model")  
var _s2 = document.cart_quantity.id[2].options.selectedIndex  
var _t2 = document.cart_quantity.id[2].options[document.cart_quantity.id[2].options.selectedIndex].getAttribute("price")  
var _u2 = eval(_t2)  
document.cart_quantity.pricingid[2].value= _u2  
var _b2 = document.cart_quantity.id[2].options[document.cart_quantity.new2.options.selectedIndex].getAttribute("model")  
total()  
}
Wenn ich die eckigen Klammern mal probeweise gegen ein x austausche klappt das JavaScript. Nur dann werden die ausgewählten Optionen nicht mehr in den Warenkorb gelegt.
Gibt es eine Möglichkeit, daß das js mit den eckigen Klammern irgendwie klarkommt?

Rainer
 
Hey, nachdem ich mich noch ein bischen dumm angestellt habe klappt es nun tatsächlich.
Vielen, vielen Dank!
Jetzt habe ich den Durchbruch und der Rest ist easy. (Hoffe ich)

Thanx nochmal

Rainer
 

Neue Beiträge

Zurück