Zur Navigation

Preisgruppenberechnung

1 Peter

Hallo Forum,

habe folgendes versucht:
   if (!isset($preis))
     $preis = '148.00';
   if substr($_POST['dessin'], 10, 1) = 1;{
   preis = PG1;
   }
   else{
   substr($_POST['dessin'], 10, 1) = 2{
   preis = PG2;
   }
   else{
   substr($_POST['dessin'], 10, 1) = 3{
   preis = PG3;
   }

Der substr. soll aus den Wert:
3501-50 PG1 Edelstahl
ab der 11. Stelle mit einer Stelle auslesen, welche dann den "Zähler" der Preisgruppe (PG) ergebensoll.
Wenn kein Wert durch Datenbankabfrage vorgegeben ist , soll der Preis 148,00 Euro sein.

Wo habe ich den Fehler eingebaut, die "PHP" Seite wird als leere Seite aufgebaut.

Vielen Dank im voraus.
Viele Grüße
Peter Lühning

02.05.2008 21:43

2 Rudy

Ein Fehler? Ich hab anfangs kaum erkannt, was für ne Sprache das ist :) Was ist PG1-3? Konstanten? Falls ja, dann stimmen im folgenden die Anführungszeichen nicht, andernfalls brauchst Du sie.

Tip: 1. Zeile in jedem Skript

error_reporting(E_ALL);

Der (hoffentlich richtig) korrigierte Code:
if (!isset($preis)) {
   $preis = '148.00';
   if (substr($_POST['dessin'], 10, 1) == 1){
   $preis = "PG1";
   }
   elseif (substr($_POST['dessin'], 10, 1) == 2){
   $preis = "PG2";
   } elseif (substr($_POST['dessin'], 10, 1) == 3){
   $preis = "PG3";
   }
}

02.05.2008 22:20

3 Peter

Hallo Rudy,

Danke für die schnelle Antwort.

PG1 bis PG3 sind Felder in der Datenbank, die über die "breite" den entsprechenen Datensatz zurück gibt.
Je nach Modell soll dann der "richtige" Preis berechnet werden.

Die Berechnung klappt aber noch nicht, weder mit noch ohne Anführungszeichen.

02.05.2008 23:21

4 Rudy

Die Berechnung klappt aber noch nicht, weder mit noch ohne Anführungszeichen.

Dann poste bitte mehr Code, nicht nur diesen Ausschnitt. Hast Du error_reporting eingefügt und evtl. Fehlermeldungen bereinigt?

02.05.2008 23:41

5 Peter

hier den Link:
http://www.windeko.de/php/flag02.php

<body class="hintergrund">
		<?php
  // lokale Variablen setzen
  $vars = array("EinB", "breite", "preis", "dess", "dessin", "wandL", "wandR", "gleiter", "halter", "PG1", "PG2", "PG3", "variante1_1", "variante2_1", "variante3_1");
    //Array fuer dessin setzen
    $dessins = array('3501-50 PG1 Edelstahl', '3501-60 PG2 messing glanz', '3501-61 PG3 chrom glanz', '3501-62 PG3 messing matt', '3501-63 PG3 nickel matt' );
  foreach ($vars as $var)
    $$var = $_POST[$var];
  if ($sender)
    printf("Die Daten wurden von %s aus verschickt.",
           htmlentities($sender));
   if (!isset($breite))
     $breite = '100'; 
   if (!isset($gleiter))
     $gleiter = '2';  
   if (!isset($halter))
     $halter = '2';  
  //Preis----------------------------------------
if (!isset($preis)) {
   $preis = '148.00';
   if (substr($_POST['dessin'], 10, 1) == 1){
   $preis = PG1;
   }
   elseif (substr($_POST['dessin'], 10, 1) == 2){
   $preis = PG2;
   } 
   elseif (substr($_POST['dessin'], 10, 1) == 3){
   $preis = PG3;
   }
}

    
  //varianten------------------------------------
   if (!isset($variante1_1))
     $variante1_1 = $EinB;    
  //wandlager----------------------------------
   if (!isset($wandL))
    $wandL = 'nein';
   if (!isset($wandR))
    $wandR = 'nein';
  //bilder----------------------------------------
   if (!isset($_POST['dessin'])) {
    $dess = '3501-50';
  } else {
    $dess = $_POST['dessin'];
  }
   if (!isset($_POST['dessin'])) {
    $dessinimage = '3501-50';
  } else {
    $dessinimage = substr($_POST['dessin'],0, 7);
  }
  // Datenbankabfrage
  
   $sqlab= "select breite, gleiter, halter, PG1, PG2, PG3 from 3501Flag where breite = '$breite'";
   $res = mysql_query($sqlab) OR die(mysql_error());
   $num = mysql_num_rows($res);

   if ($num==0) echo "keine passenden Datensätze gefunden". "<br>";

   while ($dsatz = mysql_fetch_assoc($res))
   {
      $PG1 = $dsatz['PG1'];
      $PG2 = $dsatz['PG2'];
      $PG3 = $dsatz['PG3'];     
      $gleiter = $dsatz['gleiter'];
      $halter = $dsatz['halter'];      
         }
?>
<?php echo PG1 ;?><br>
<?php echo substr($_POST['dessin'],10, 1) ;?><br>

<img src="../skala.gif" alt="" width="390" height="26" border="0"><tt><font size="7" color="#ff0033">Ma&szlig;programm<img src="../skala10.gif" alt="" width="43" height="26" border="0"></font></tt>
		<table width="700" border="0" cellspacing="2" cellpadding="0">
			<tr>
				<td><b><font size="+2">Garnitur mit Innenlauf Modell Flag</font></b></td>
				<td>
					<div align="right">
						<font color="#ff0000"><tt><b>Kein Umtausch oder R&uuml;ckgabe !</b></tt></font></div>
				</td>
			</tr>
			<tr>
				<td colspan="2">20mm Function Modell FLAG Garnituren mit Innenlauf<br>
<a href="http://www.windeko.de/fokus_all.php" target="blank">Preisliste</a>
</td>
			</tr>
		</table>
		<form name="garnitur" action="flag02.php" method="post" onsubmit="if(retab==1)return false;">
			<table width="723" border="0" cellspacing="2" cellpadding="0">
				<tr>
					<td><div id="image" border="1">
							<img src="<?php echo $dessinimage?>.jpg" alt="">
							<p></p>
						</div>></td>
					<td><font color="#666666"><tt>Schritt 1, </tt></font><tt><font color="#666666">Modellfarbe ausw&auml;hlen</font></tt><font color="#666666"><tt>:</tt></font>
						<p>Farbe: <select name="dessin" tabindex="3" onchange="ShowImage(this.options[this.selectedIndex].value);">
								<?php
foreach ($dessins as $dessin) {
    echo '<option value="' . $dessin . '"';
    if ($dessin == $_POST['dessin']) {
        echo ' selected';
    }
    echo '>' . $dessin . '</option>';
}
?>&quot;selected&gt;</option> 
							</select></p>
						<p>
						</p>
					</td>
				</tr>
				<tr>
					<td colspan="2">
						<hr>
					</td>
				</tr>
				<tr>
					<td></td>
					<td><tt><font color="#666666">Schritt 2, </font></tt><font color="#666666"><tt>Gr&ouml;&szlig;e bestimmen</tt></font><tt><font color="#666666">:</font></tt>
						<p><input type="hidden" name="sender" value="flag02.php"> Breite in mm <input type="text" size="5" name="EinB" tabindex="1" onblur="anz(this.value,this.name)" value='<?php printf("%s", htmlentities($EinB)); ?>'/><input type="hidden" name="breite" size="5" value='<?php printf("%s", htmlentities($breite)); ?>' readonly>&nbsp;<?php echo "Preistabellenbreite : " . $breite . " cm";
 ?><br>
						</p>
						<table width="424" border="0" cellspacing="2" cellpadding="0">
							<tr>
								<td width="157">Breite min. &nbsp;&nbsp;400 mm<br>
										Breite max. 2200 mm<br>
									H&ouml;he &nbsp;max. 3000 mm<br>
								</td>
								<td><tt>Zwischenma&szlig;e sowie Garnituren mit kleineren Abmessungen als in der <a href="http://www.windeko.de/fokus_all.php" target="blank">Preisliste</a> aufgef&uuml;hrt, werden zum n&auml;chsth&ouml;heren Tabellenpreis berechnet.</tt></td>
							</tr>
						</table>
						<p><tt><font color="#666666">Schritt 3, Grundpreis berechnen:</font></tt></p>
						<p><input type="submit" value="Grundpreis berechnen" tabindex="4" onmousedown="retab=0;"></p>
						<p><?php
 echo "Der Grundpreis der Garnitur betr&auml;gt : " . $preis . " &euro; <br>"; 
 echo "Es sind " . $halter . " Tr&auml;ger und " . $gleiter . " Gleiter enthalten.";?></p>
					</td>
				</tr>
				<tr>
					<td colspan="2">
						<hr>
					</td>
				</tr>
				<tr>
					<td>
<br>
						          <input type="hidden" size="10" name="bild" value='<?php printf("%s", htmlentities($bild).".gif"); ?>'/><input type="hidden" size="5" name="preis" value='<?php printf("%s", htmlentities($preis)); ?>'/><input type="hidden" name="variante1_1" value='<?php printf("%s", htmlentities($EinB. " mm")); ?>'/><input type="hidden" name="variante2_1" value='<?php printf("%s", htmlentities($EinH. " mm")); ?>'/><input type="hidden" name="dess" value='<?php printf("%s", htmlentities($dess)); ?>'/><input type="hidden" size="150" name="variante3_1" value='<?php printf("%s", htmlentities($variante3_1)); ?>'/><input  type="hidden" size="5" name="halter" value='<?php
      printf("%s", htmlentities($halter));
         ?>'/><input  type="hidden" size="5" name="mitnehmer" value='<?php
      printf("%s", htmlentities($mitnehmer));
         ?>'/><</td>
					<td><tt><font color="#666666">Schritt 4, Extras ausw&auml;hlen:</font></tt>
						<table width="462" border="0" cellspacing="2" cellpadding="0">
							<tr>
								<td>Klemmtr&auml;ger:</td>
								<td><input type="radio" name="klemm" tabindex="5" onchange="spezialvariante1()" ; value="nein" <?php printf("%s", ($klemm=='nein' ? " checked" : "")); ?>>nein</td>
								<td><input type="radio" name="klemm" tabindex="6" onchange="spezialvariante1()" ; value="ja" <?php printf("%s", ($klemm=='ja' ? " checked" : "")); ?>>ja [<?php echo "+ " . 6.30* $halter ?>0 &euro;]</td>
							</tr>
							<tr>
								<td>Wandlager:</td>
								<td><input type="radio" name="wand" tabindex="7" onchange="spezialvariante1()" ; value="links" <?php printf("%s", ($wand=='links' ? " checked" : "links")); ?>>links</td>
								<td><input type="radio" name="wand" tabindex="8" onchange="spezialvariante1()" ; value="rechts" <?php printf("%s", ($wand=='rechts' ? " checked" : "rechts")); ?>>rechts</td><td><input type="radio" name="wand" tabindex="8" onchange="spezialvariante1()" ; value="links und rechts" <?php printf("%s", ($wand=='links und rechts' ? " checked" : "rechts")); ?>>rechts</td>
							</tr>
							<td></td>
							<td></td>
							<td></td>
							<tr>
								<td colspan="3"></td>
							</tr>
						</table>
					</td>
				</tr>
				<tr>
					<td colspan="2">
						<hr>
					</td>
				</tr>
				<tr>
					<td></td>
					<td><font color="#666666"><tt>Schritt 5, Wunschartikel in den Warenkorb legen:</tt></font>
						<table width="463" border="0" cellspacing="2" cellpadding="0">
							<tr>
								<td></td>
								<td>&nbsp;Grundpreis f&uuml;r Ihr gew&auml;hltes Modell</td>
								<td><input size=6 value=0.00 name="Epreis_1" style="text-align:right;">&nbsp;EUR*</td>
							</tr>
							<tr>
								<td>+</td>
								<td>&nbsp;Mehrpreis f&uuml;r Ihre gew&auml;hlte Extras</td>
								<td><input size=6 value=0.00 name="preis3_1" style="text-align:right;">&nbsp;EUR*</td>
							</tr>
							<tr>
								<td>=</td>
								<td>&nbsp;Gesamtpreis f&uuml;r Ihr gew&auml;hltes Modell&nbsp;</td>
								<td><input size=6 value=0.00 name="Gpreis_1" style="text-align:right;">&nbsp;EUR*</td>
							</tr>
							<tr>
								<td></td>
								<td><input type="text" name="menge1" value="1" class="textfeld" style="width: 50px">St&uuml;ck<br />
									<input type="button" name="bestellen_1" value="Bestellung" class="schaltflache" onclick="javascript:kaufen1();"></td>
								<td></td>
							</tr>
							<tr>
								<td></td>
								<td><font size="-1" color="#ff3300">Alle Preise inkl. der gesetzlichen MwSt</font><font color="#ff3300">.<br>
									</font><a href="xaranshop_55_1.htm">zzgl. Versandkosten</a><br>
									<a href="mehrkosten.htm">zzgl. evtl. Mehrkosten</a><br>
								</td>
								<td></td>
							</tr>
						</table>
						<p></p>
					</td>
				</tr>
				<tr>
					<td></td>
					<td></td>
				</tr>
			</table>
			<p><tt>Alle Garnituren sind Ma&szlig;anlagen und k&ouml;nnen deshalb nicht umgetauscht oder zur&uuml;ckgenommen werden. Technische &Auml;nderungen sind vorbehalten. Preise f&uuml;r Sondergr&ouml;&szlig;en auf Anfrage</tt>.<br />
			</p>
			<h5>Haben Sie weitere Fragen zu unseren Produkten? Oder ben&ouml;tigen Sie ein Farbmuster? Dann klicken Sie bitte <a href="https://www.windeko.de/shop/xaranshop_24_1.php" target="bereich06">hier</a>.<br>
				*Alle Preise verstehen sich inklusive Mehrwertsteuer, wobei windeko.de nach &sect; 19 Abs. 1 UStG von der<br>
				Umsatzsteuer befreit ist. Daher wird auch keine Umsatzsteuer von windeko.de ausgewiesen.</h5>
			<script type="text/javascript">
var doc = document.garnitur;

function anz(a,c){
d = c;
r = 200 //rapport
a = parseFloat(a.replace(/,/gi,'.'));
b = Math.ceil(a/r)*r/10;
if (b<=100){
     b=100;}
if (doc.EinB.getAttribute("name", 0) == d){
doc.breite.value = b;}


function check () {
var B = doc.EinB.value;
if (H < 400 || H > 4000)
    { alert("Die Höhe liegt nicht zwischen 400 und 4000 mm!\n Bitte neu eingeben!");
      doc.EinH.focus();
      doc.EinH.value = "";
      return(false);       
}
return true;
}
}
  </script>
			<script type=text/javascript>
  function spezialvariante1()
  {
   var referenz = document.garnitur;
 



   
    // Mehrpreis
    // ------------------------------------------------------------
 var preis3 = parseFloat(0.00);
 var traeger = referenz.halter.value;
    //Klemm
     if(referenz.klemm[1].checked == true)
    {
    preis3 += parseFloat(6.3 * traeger);
    }
  
    var dess = referenz.dess.value; 
 
   referenz.preis3_1.value = parent.rundung(preis3);
//-------------Gesamtpreis mit Sonderausführung----------
   var Epreis = artikel1.preis 
   referenz.Epreis_1.value = parent.rundung(Epreis);
   var Gpreis = preis3 + parseFloat(Epreis);
   referenz.Gpreis_1.value = parent.rundung(Gpreis);
//-------------------------------------------------------

//--------Daten mit Sonderausführung senden--------------
    referenz.variante3_1.value = "<br>" + "Anlagengrundpreis : " + Epreis + "<br>" + "Modell " + dess + "<br>" ;
//-------------------------------------------------------
    artikel1.varianteauswahl3[0] = referenz.variante3_1.value;
    artikel1.variantepreis3[0] = referenz.preis3_1.value;
  }
  function variante3einschalten1()
  {
    var referenz = document.garnitur;
    artikel1.variantevorh3 = "ja";
    artikel1.varianteauswahl3 = new Array;
    artikel1.varianteauswahl3[0] = referenz.variante3_1.value;
    artikel1.variantepreis3 = new Array;
    artikel1.variantepreis3[0] = referenz.preis3_1.value;
  }
  window.setTimeout("variante3einschalten1()",250);
  window.setTimeout("spezialvariante1()",350);
</script>
			<script type="text/javascript">
artikel1 = new Object;
artikel1.id = 2;
artikel1.bezeichnung = "Edelstahlgarnitur mit Innenlauf Flag";
artikel1.kurzbeschreibung = "<FONT color=#ff0000>Maßanfertigung ! Kein Umtausch oder Rückgabe !</FONT>";
artikel1.abbildung =document.garnitur.bild.value;
artikel1.artnr = "3501Flag";
artikel1.mengeneinheit = "Stück";
artikel1.preis = document.garnitur.preis.value;
artikel1.mwst = 1;
artikel1.gewicht = 0.00;
artikel1.versandkosten = 0.00;
artikel1.mindestbestellmenge = 0.00;
artikel1.maximalbestellmenge = 0.00;
artikel1.mindermengenzuschlag = 0.00;
artikel1.staffelvorh = "nein";
artikel1.variantebezeichnung1 = "Breite :";
artikel1.variantebezeichnung2 = "";
artikel1.variantebezeichnung3 = "spezielle Ausführung:";
artikel1.variantevorh1 = "nein";
artikel1.variantevorh2 = "nein";
artikel1.variantevorh3 = "nein";
artikel1.benutzerdefiniert1 = "400&&4000";
artikel1.benutzerdefiniert2 = "";
artikel1.benutzerdefiniert3 = "";

                    </script>
			<script type="text/javascript">
  function kaufen1()
  {
    pruefe1();
  }
</script>
			<script type="text/javascript">
    function pruefe1()
    {
      var test1 = true;
      var test2 = true;
      var test3 = true;
      // Feld benutzerdefiniert 1
      // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      var pruefzahl = document.garnitur.EinB.value;
      if("379&&4001" != "")
      {
        if(pruefzahl>399&&2201>pruefzahl)
        {
          test1 = true;
        }
        else
        {
          var warntext = "Die Breite liegt nicht zwischen XXX und YYY mm, \nAnlage ist so nicht bestellbar!";
          var bedingung = "400&&4000";
          var pos = bedingung.indexOf("&");
          warntext = warntext.replace(/XXX/,bedingung.substring(0,pos));
          warntext = warntext.replace(/YYY/,bedingung.substr(pos+2));
          alert(warntext);
          test1 = false;
        }
      }
      // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      // Feld benutzerdefiniert 2
      // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 /*     var pruefzahl = document.fokus.EinH.value;
      if("399&&3001" != "")
      {
        if(pruefzahl>399&&3001>pruefzahl)
        {
          test2 = true;
        }
        else
        {
          var warntext = "Die Höhe liegt nicht zwischen XXX und YYY mm, \nAnlage ist so nicht bestellbar!";
          var bedingung = "400&&3000";
          var pos = bedingung.indexOf("&");
          warntext = warntext.replace(/XXX/,bedingung.substring(0,pos));
          warntext = warntext.replace(/YYY/,bedingung.substr(pos+2));
          alert(warntext);
          test2 = false;
        }
      }*/
      // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      // Feld benutzerdefiniert 3
      if(test1==true && test2==true )
      {
        parent.lege_in_warenkorb(artikel1, document.garnitur.menge1.value, document.garnitur.variante1_1.value, document.garnitur.variante2_1.value, document.garnitur.variante3_1.value);
      }
    }
  </script>
			</h5>
			<div>
				<font color="#339999"></font></div>
		</form>
		</p>
Edit, habe deb code gekürzt

[Edit Jörg: Code-Block repariert]

02.05.2008 23:44 | geändert von Jörg: 03.05.2008 10:15

6 Rudy

Bitte füg mal in connect.inc.php die Zeile

error_reporting(E_ALL);


ganz am Anfang ein.

02.05.2008 23:48

7 Peter

ist schon

03.05.2008 00:03

8 Jörg

Sollen sich die PG1 etc. auf diese Abfrage beziehen:

$sqlab= "select breite, gleiter, halter, PG1, PG2, PG3 from 3501Flag where breite = '$breite'";
   $res = mysql_query($sqlab) OR die(mysql_error());
   $num = mysql_num_rows($res);

   if ($num==0) echo "keine passenden Datensätze gefunden". "<br>";

   while ($dsatz = mysql_fetch_assoc($res))
   {
      $PG1 = $dsatz['PG1'];
      $PG2 = $dsatz['PG2'];
      $PG3 = $dsatz['PG3'];     
      $gleiter = $dsatz['gleiter'];
      $halter = $dsatz['halter'];      
         }

In dem Fall müsstest du die Variablen entsprechend mit einem $ kennzeichnen und das if Konstrukt nach deren Definition, also nach der oben aufgeführten while Schleife einfügen

if (!isset($preis)) {
   $preis = '148.00';
   if (substr($_POST['dessin'], 10, 1) == 1){
   $preis = $PG1;
   }
   elseif (substr($_POST['dessin'], 10, 1) == 2){
   $preis = $PG2;
   } elseif (substr($_POST['dessin'], 10, 1) == 3){
   $preis = $PG3;
   }
}

03.05.2008 10:31

9 Peter

Hallo Jörg,

Danke für Deine Antwort,
habe ich auch schon versucht,leider haut es nicht hin.

  // Datenbankabfrage
  
   $sqlab= "select breite, gleiter, halter, PG1, PG2, PG3 from 3501Flag where breite = '$breite'";
   $res = mysql_query($sqlab) OR die(mysql_error());
   $num = mysql_num_rows($res);

   if ($num==0) echo "keine passenden Datensätze gefunden". "<br>";

   while ($dsatz = mysql_fetch_assoc($res))
   {
      $PG1 = $dsatz['PG1'];
      $PG2 = $dsatz['PG2'];
      $PG3 = $dsatz['PG3'];     
      $gleiter = $dsatz['gleiter'];
      $halter = $dsatz['halter'];      
         }
    //Preis----------------------------------------
   if (!isset($preis)) {
   $preis = '148.00';
   if (substr($_POST['dessin'], 10, 1) == 1){
   $preis = $PG1;
   }
   elseif (substr($_POST['dessin'], 10, 1) == 2){
   $preis = $PG2;
   } 
   elseif (substr($_POST['dessin'], 10, 1) == 3){
   $preis = $PG3;
   }
}

?>

Irgendwo muß noch ein Fehler sein, die Abfrage ist OK, die Werte für PG1 bis PG3 werden mitgeändert. Nur mit der Zuweisung der PG zum preis ist fehlerhaft.
EDIT:
Kann ich es nicht auch in der Art wie:
$preis = "$PG" .(substr($_POST['dessin'], 10, 1);
lösen?

03.05.2008 16:05 | geändert: 03.05.2008 16:30

10 Rudy

Zitat von Peter

Kann ich es nicht auch in der Art wie:
$preis = "$PG" .(substr($_POST['dessin'], 10, 1);
lösen?

Das ginge so:

$preis = ${"PG".substr($_POST['dessin'], 10, 1)}

Edit: Der ganze Code:

  // Datenbankabfrage
  
   $sqlab = "SELECT gleiter, halter, PG1, PG2, PG3 FROM 3501Flag WHERE breite = '$breite'";
   $res = mysql_query($sqlab) || die(mysql_error());
   if (!mysql_num_rows($res)) { 
     echo "keine passenden Datensätze gefunden". "<br>";
   } else {
     list($gleiter, $halter, $PG1, $PG2, $PG3) = mysql_fetch_row($res);
      //Preis----------------------------------------
     if (!isset($preis)) {
       $preis = '148.00';
       $pg = substr($_POST['dessin'], 10, 1);
       if ($pg < 3 && $pg > 0) {
         $preis = ${"PG".$pg};
       }
     }
   }

wird die !isset($preis)-Bedingung überhaupt betreten?

03.05.2008 16:46 | geändert: 03.05.2008 16:59