yo... dauert noch es sei denn mir hilft jemand mit einem heißen Tipp auf die Sprünge...
Habe jetzt die Anpassung fertig, Auswahl Hersteller, dann mehrere Eingabefelder geschaffen für die Produktpreisstaffelung, z.B. 0,01 - 1,00 Euro, dann 1,01 - 5,00 Euro usw.
Alles schick, läuft auch bis auf die Schleife der Berechnung.
Hier mal der Code für die Eingabefelder der Beträge
<!-- Auswahl 1 -->
<tr>
<td class="header" align="left"><?php echo P_1; ?></td>
<td class="header" align="left"><?php
echo xtc_draw_pull_down_menu('all_price_sign', $price_sign, '', 'style="width:40px;"');
echo xtc_draw_input_field('all_products_price_percent', '', 'size="6"');
echo xtc_draw_pull_down_menu('all_price_percent', $price_percent, '', 'style="width:50px;"');
?></td>
<td class="header_gift" align="left"><?php echo xtc_draw_selection_field('attributs', 'checkbox', '1');?></td>
<td class="header_gift" align="left"><?php echo xtc_draw_selection_field('staffel', 'checkbox', '1');?></td>
</tr>
<!-- Auswahl 2 -->
<tr>
<td class="header" align="left"><?php echo P_2; ?></td>
<td class="header" align="left"><?php
echo xtc_draw_pull_down_menu('price_sign_2', $price_sign_2, '', 'style="width:40px;"');
echo xtc_draw_input_field('products_price_percent_2', '', 'size="6"');
echo xtc_draw_pull_down_menu('price_percent_2', $price_percent_2, '', 'style="width:50px;"');
?></td>
<td class="header" align="left"><?php echo xtc_draw_selection_field('attributs', 'checkbox', '1');?></td>
<td class="header" align="left"><?php echo xtc_draw_selection_field('staffel', 'checkbox', '1');?></td>
</tr>
<!-- Auswahl 3-->
.
.
.
.
Um die Eingabewerte zu unterscheiden sind die Eingabefelder wie folgt belegt:
- products_price_percent
- products_price_percent_2
- products_price_percent_3
- usw.
Gleiches auch bei den Vorzeichen und Wert/Währung... soll ja nichts durcheinander kommen.
Berechnet und verändert wird der Preis des gewählten Hersteller mit:
(Code für die Berechnung der Eingabe im ersten Feld)
if ($_POST['all_products_price_percent']> 0);{ $percent = round($_POST['all_products_price_percent'], 2); // alten price auslesen Anhand der Hersteller ID if($_POST['all_products_price_percent'] ){ //Datenbankabfrage Anhand Hersteller ID und Preiseinschränkung $price_old = "SELECT products_id, products_price AS PRODUCTS_PRICE FROM ".TABLE_PRODUCTS
." WHERE manufacturers_id ='".$_POST['manufacturers_id']."'AND products_price>= '0.0100'
AND products_price <= '1.0000'"; $price_old_query = xtc_db_query
($price_old); } // $_POST['price_sign']: + oder - while($price_old = xtc_db_fetch_array
($price_old_query)){ // prüfen ob preis bei kundengruppen 0.00 ist if($price_old['PRODUCTS_PRICE'] != '0.000'){ // vorzeichen + if($_POST['all_price_sign'] == '1'){ // wert oder prozent rechnen if($_POST['all_price_percent'] == '1'){ $percent_wert = $price_old['PRODUCTS_PRICE'] / 100; $price_differenz = $percent_wert * $percent; $new_price = $price_old['PRODUCTS_PRICE'] + $price_differenz; }elseif($_POST['all_price_percent'] == '2'){ $new_price = $price_old['PRODUCTS_PRICE'] + $percent; } // vorzeichen - }elseif($_POST['all_price_sign'] == '2'){ // wert oder prozent rechnen if($_POST['all_price_percent'] == '1'){ $percent_wert = $price_old['PRODUCTS_PRICE'] / 100; $price_differenz = $percent_wert * $percent; $new_price = $price_old['PRODUCTS_PRICE'] - $price_differenz; }elseif($_POST['all_price_percent'] == '2'){ $new_price = $price_old['PRODUCTS_PRICE'] - $percent; } } // Aktualisierung der Produkt Tabelle if($_POST['manufacturers_id']>= 0){ xtc_db_query
("UPDATE ".TABLE_PRODUCTS
." SET
products_price = '".$new_price."'
WHERE products_id = '".$price_old['products_id']."'"); } } // IF price = 0.00 }// WHILE } Dabei werden bei der DB Abfrage nur die Preise eines Herstellers im bestimmten Preisbereich ausgelesen und verändert, macht der Bereich
products_price>= '0.0100'AND products_price <= '1.0000'";
So logischer Weise sollte danach die Berechnung in einer Schleife weiterlaufen, bis alle Werte der Belegten Eingabefelder übergeben sind.
Müsste also den Codeblock für Eingabefeld 2 wie folgt anschliessen
if ($_POST['all_products_price_percent_2']> 0);{ $percent_2 = round($_POST['all_products_price_percent_2'], 2); // alten price auslesen Anhand der Hersteller ID if($_POST['all_products_price_percent_2']){ //Datenbankabfrage Anhand Hersteller ID und Preiseinschränkung $price_old_2 = "SELECT products_id, products_price AS PRODUCTS_PRICE_2 FROM ".TABLE_PRODUCTS
." WHERE manufacturers_id ='".$_POST['manufacturers_id']."'AND products_price>= '1.0001'
AND products_price <= '10.0000'"; $price_old_query_2 = xtc_db_query
($price_old_2); } // $_POST['price_sign']: + oder - while($price_old_2 = xtc_db_fetch_array
($price_old_query_2)){ // prüfen ob preis bei kundengruppen 0.00 ist if($price_old_2['PRODUCTS_PRICE_2'] != '0.000'){ // vorzeichen + if($_POST['all_price_sign_2'] == '1'){ // wert oder prozent rechnen if($_POST['all_price_percent_2'] == '1'){ $percent_wert_2 = $price_old_2['PRODUCTS_PRICE_2'] / 100; $price_differenz_2 = $percent_wert_2 * $percent_2; $new_price_2 = $price_old_2['PRODUCTS_PRICE_2'] + $price_differenz_2; }elseif($_POST['all_price_percent_2'] == '2'){ $new_price_2 = $price_old_2['PRODUCTS_PRICE_2'] + $percent_2; } // vorzeichen - }elseif($_POST['all_price_sign_2'] == '2'){ // wert oder prozent rechnen if($_POST['all_price_percent_2'] == '1'){ $percent_wert_2 = $price_old_2['PRODUCTS_PRICE_2'] / 100; $price_differenz_2 = $percent_wert_2 * $percent_2; $new_price_2 = $price_old_2['PRODUCTS_PRICE_2'] - $price_differenz_2; }elseif($_POST['all_price_percent_2'] == '2'){ $new_price_2 = $price_old_2['PRODUCTS_PRICE_2'] - $percent_2; } } // Aktualisierung der Produkt Tabelle if($_POST['manufacturers_id']>= 0){ xtc_db_query
("UPDATE ".TABLE_PRODUCTS
." SET
products_price = '".$new_price_2."'
WHERE products_id = '".$price_old_2['products_id']."'"); } } // IF price = 0.00 }// WHILE } Mit beiden zerschiesst es mir aber den Preis...
Wie lasse ich die Schleife am besten ablaufen?