Zur Navigation

Übernahme in den Warenkorb funktioniert nicht [2]

11 Peter

Habe "var" entfernt, leider ohne Erfolg.

06.03.2008 21:20

12 Jörg Kruse

Dieser Fehler wird jetzt nicht mehr angezeigt. Dafür aber der nächste:

Fehler: referenz.preis_1 has no properties
Quelldatei: http://www.windeko.de/php/daten09.php
Zeile: 174

Lass dir in der Fehlerkonsole deines Browsers mal die JavaScript-Fehler anzeigen - diese musst du nach und nach abarbeiten

06.03.2008 21:51 | geändert: 06.03.2008 21:51

13 Peter

Habe das E in "referenz.Epreis_1.value " vergessen.

//-------------Gesamtpreis mit Sonderausführung----------
var Epreis = artikel1.preis
referenz.Epreis_1.value = parent.rundung(Epreis);
var Gpreis = preis3 + Epreis
referenz.Gpreis_1.value = parent.rundung(Gpreis);
//-------------------------------------------------------

Jetzt nur noch den Gesamtpreis und den Mehrpreis für Extras richtig berechnen, der zeigt den Grundpreis plus Grundpreis?!

69.0069.00

06.03.2008 22:06 | geändert: 06.03.2008 22:07

14 Peter

Bei der Berchnung des Mehrpreises für die Seitenführung per Radiobutton habe ich Probleme mit der Auswertung
 
<p>Seitenfuehrung [+ 16,00€]: <input type="radio" name="sf" onchange="spezialvariante1()";
    value="false"<?php
      printf("%s", ($sf=='false' ? " checked" : ""));
    ?>> nein  &nbsp;
    <input type="radio" name="sf"
    value="true"<?php
      printf("%s", ($sf=='true' ? " checked" : ""));
    ?>> ja<br>

Hier die "Auswertung" in der function spezialvariante1
 

var preis3 = 0;
     if(referenz.sf == true)
    {
      preis3 += 16.00;
    }

Wo muß ich den Fehler Suchen? Íst mein Ansatz überhaupt richtig?

06.03.2008 22:25

15 Jörg Kruse

Hier wird denke ich der String "true" übertragen, nicht der bool'sche Wert true:
value="true"

So würde es vielleicht funktionieren:
if(referenz.sf == "true")

PS: in PHP werden die Strings "" und "1" in false bzw. true konvertiert - möglicherweise ist dies auch bei JavaScript der Fall

06.03.2008 23:26 | geändert: 06.03.2008 23:28

16 Peter

Die Berechnung:
    if(referenz.sf.value == "true")
    {
      preis3 + 16.00;
    }
ergibt zumindesdens keine Fehlermeldung.

In der Variante3, wird alles eingetragen, was noch in den Warenkorb übermittelt werden soll. Hier werden die beiden Radiobutton als "undefined" gewertet.
 <br>Dessin 20000<br>Seitenfuehrung :undefined<br>Bedienung :undefined

Scheinbar muß ich erst die Button definieren, aber wie?


06.03.2008 23:36

18 Peter

Danke erstmal, Jörg,
werde versuchen es umzusetzen.

07.03.2008 00:33

19 Peter

Ich hab's
Bedienung: <input type="radio" name="bedien" onchange="spezialvariante1()";
    value="links"<?php
      printf("%s", ($bedien=='links' ? " checked" : "links"));
    ?>> links &nbsp;
    <input type="radio" name="bedien" onchange="spezialvariante1()";
    value="rechts"<?php
      printf("%s", ($bedien=='rechts' ? " checked" : "rechts"));
    ?>> rechts<br>
und für die Auswertung
 //Bedienung
 //---------------------------------------------
 var bedienseite = "links";
 if(referenz.bedien[0].checked == true)
  {
   /* erster angekreuzt */
   bedienseite = "links";
  }
else if(referenz.bedien[1].checked == true)
  {
   /* zweiter angekreuzt */
   bedienseite = "rechts";
  }
Auf die Iddee bin ich durchgekommen
http://forum.de.selfhtml.org/archiv/1999/3/t2615/

Was jetzt noch sehr merkwürdig ist, ist die Wertausgabe für den Gesamtpreis.
Diese zeigt entweder "NaN.00" oder setzt den Extrapreis vor den Grundpreis "1696.00".

Wenn ich aber den Artikel in den Warenkorb lege, wird alles richtig angezeigt!??
Was habe ich da übersehen?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Jalousie 25 mm</title>
<script type="text/javascript">
    function ShowImage(dessin)
     {
       document.getElementById('image').innerHTML = '<img src="' + dessin.substring(0,5) + '.gif" alt="">';
     }
</script>

 <?php
   include "connect.inc.php";
   ?>
<script type="text/javascript"> 
<!-- 
var retab=0; 
document.onkeydown=function(e){ 
txt=document.jalou; 
if(!e)e=window.event; 
code=(e.keyCode)?e.keyCode:e.which; 
el=(e.srcElement)?e.srcElement:e.target; 
if(el.tabIndex){ 
tab=Number(el.tabIndex); 
} 
if(code==13){ 
if(tab==txt.length-1){ 
alert('Bitte Tab statt Enter'); 
} 
else{ 
for (var i=0;i<txt.length;i++){ 
if(Number(txt[i].tabIndex)==(tab+1)){ 
txt[i].focus(); 
} 
} 
} 
retab=1 
return false; 
} 
else retab=0; 
} 
//--> 
</script>
<script type="text/javascript">
  if(!parent.xaranshopframesetgeladen)
  {
    ziel = "shop.html?" + document.URL;
    parent.location.replace(ziel);
  }
</script>
<script type="text/javascript">
  artikel = new Object;
</script>
<script type="text/javascript">
  function seitenWert(rObj) {
    for (var i=0; i<rObj.length; i++) if (rObj[i].checked) return rObj[i].value;
    return false;
  }
</script>
</head> 
<body class="hintergrund">

<?php
  // lokale Variablen setzen
  $vars = array("EinB", "breite", "EinH", "hoch", "pg", "preis", "dess", "dessin", "sf", "montage", "bedien", "variante1_1", "variante2_1", "variante3_1");
    //Array fuer dessin setzen
    $dessins = array('20000', '01501', '09000 weiss', '01060', '80120', '05110', '73441', '90601', '90801', '70101', '01690', '73281', '01670', '01680', '05761', '01580', '02110', '01990 gold metallic', '19260', '05180 zinkgelb', '01940 ginstergelb', '00430 maisgelb', '01790 hellrotorange', '05781', '73321', '01820 beigerot terracotta hell', '92941', '01860 rotorange', '02000', '04750 signalrot', '01870 bordeaux violett', '02050 hellrosa', '73361', '04900 glitzer violett', '10370 hellviolett metallic', '05670', '71440', '05920', '02040', '05791', '73461', '08840', '04910', '07600', '92911', '05170', '05710', '36781', '01780', '07760', '19230', '71620', '66030', '92881', '01950', '20070', '92921', '07050', '20110', '07100', '05380', '20830 perlweiss', '48061', '73251', '20050 beige', '90811', '02100', '02120', '01170', '01640');
  foreach ($vars as $var)
    $$var = $_POST[$var];
   //Array fuer montage setzen
    $montages = array('Standard', 'Standard mit Seitenfuehrung + 16,00', 'mit Klemmtraeger + 17,00', 'mit Klemmtraeger und Seitenfuehrung + 49,60');
  foreach ($vars as $var)
    $$var = $_POST[$var];    
  if ($sender)
    printf("Die Daten wurden von %s aus verschickt.",
           htmlentities($sender));
   if (!isset($breite))
     $breite = '60'; 
   if (!isset($hoch))
     $hoch = '80';  
   /*if (!isset($pg))
     $pg = '0';  */  
   if (!isset($preis))
     $preis = '69';  
   if (!isset($variante1_1))
     $variante1_1 = $EinB;    
   if (!isset($variante2_1))
     $variante2_1 = $EinB;  
   if (!isset($sf))
    $sf = 'false';
   if (!isset($_POST['dessin'])) {
    $dess = '20000';
  } else {
    $dess = $_POST['dessin'];
  }
   if (!isset($_POST['dessin'])) {
    $dessinimage = '20000';
  } else {
    $dessinimage = $_POST['dessin'];
  }
  // Datenbankabfrage
   $hochpg = $hoch + substr($_POST['dessin'], 4, 1);
   $gp = "h" . $hochpg;

   $sqlab= "select breite, $gp from jalou";  
   $sqlab .= " where breite like '" . $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))
   {
      $preis = $dsatz["$gp"];
         }
?>


<form name="jalou" action="daten09.php" method="post" onsubmit="if(retab==1)return false;">
			<br>
			<table width="599" border="1" cellspacing="2" cellpadding="0">
				<tr>
					<td width="60%"><input type="hidden" name="sender" value="daten09.php">
Breite in mm <input type="text"size="5" name="EinB" tabindex="1" onblur="anz(this.value,this.name),checkB()" 
value="<?php
      printf("%s", htmlentities($EinB));
         ?>"/><input type="hidden" name="breite" size="5"
  value="<?php
      printf("%s", htmlentities($breite));
         ?>" readonly /><br>
						<input type="hidden" name="sender" value="daten09.php">
H&ouml;he in mm <input type="text" size="5" name="EinH" tabindex="2" onblur="anz(this.value,this.name),checkH()"
    value="<?php
      printf("%s", htmlentities($EinH));
         ?>"/><input type="hidden" name="hoch" size="5" 
  value="<?php
      printf("%s", htmlentities($hoch));
    ?>" readonly /><br>
						<br>
					
Dessin: <select name="dessin"  onchange="ShowImage(this.options[this.selectedIndex].value);" tabindex="3">
							<?php
foreach ($dessins as $dessin) {
    echo '<option value="' . $dessin . '"';
    if ($dessin == $_POST['dessin']) {
        echo ' selected';
    }
    echo '>' . $dessin . '</option>';
}
?>"selected></option> 
  
						</select><br>
						<br />


						<?php
 echo "Die Preistabellenbreite der Jalousie betr&auml;gt : " . $breite . " cm";
 ?><br>
						<?php
 echo "Die Preistabellenh&ouml;he der Jalousie betr&auml;gt : " . $hoch . " cm";
 ?><br>						<?php
 echo "Der Grundpreis der Jalousie betr&auml;gt : " . $preis . " €";
 ?><br>
						<input type="submit" value="Grundpreis berechnen" onmousedown="retab=0;"> <br />
 <div class="klein"> Zwischenmaße sowie Jalousien mit kleineren Abmessungen als in der Preisliste aufgeführt, werden zum nächsthöheren Tabellenpreis berechnet.</div><br /> 
Montageart: <select name="montage" onchange= "spezialvariante1()" >		
					<?php
foreach ($montages as $montage) {
    echo '<option value="' . $montage . '"';
    if ($montage == $_POST['montage']) {
        echo ' selected';
    }
    echo '>' . $montage . '</option>';
}
?>"selected></option> 
  
						</select><br>
						<br /> 
          
						 Bedienung: <input type="radio" name="bedien" onchange="spezialvariante1()";
    value="links"<?php
      printf("%s", ($bedien=='links' ? " checked" : "links"));
    ?>> links &nbsp;
    <input type="radio" name="bedien" onchange="spezialvariante1()";
    value="rechts"<?php
      printf("%s", ($bedien=='rechts' ? " checked" : "rechts"));
    ?>> rechts<br>
						</p>
					</td>
					<td><div id="image" border="1"><img src="<?php echo $dessinimage?>.gif" alt=""></div></td>
					<td></td>
				</tr>
			</table>

	<HR noShade>	

Diese Felder werden "hidden" gesetzt<br />
Grundpreis<input type="text"size="5" name="preis"  
value="<?php
      printf("%s", htmlentities($preis));
         ?>"/>
Breite<input type="text" name="variante1_1" value="<?php
      printf("%s", htmlentities($EinB. " mm"));
         ?>"/>
H&ouml;he<input type="text" name="variante2_1" value="<?php
      printf("%s", htmlentities($EinH. " mm"));
         ?>"/>
Dessin<input type="text" name="dess" value="<?php
      printf("%s", htmlentities($dess));
         ?>"/>         
Varinate3<input type="text" size="150"name="variante3_1" value="<?php
      printf("%s", htmlentities($variante3_1));
         ?>"/><br />

<input type="text"   name="menge1" value="1" class="textfeld" style="width: 50px">Stück<br />
<input type="button" name="bestellen_1" value="Bestellung" class="schaltflache" onclick="javascript:kaufen1();"> 	
		
<script type="text/javascript">
var doc = document.jalou;

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

function checkB () {
var B = document.jalou.EinB.value;
if (B >= 400 && B <= 2200)
{
}
else { alert("Die Breite liegt nicht zwischen 400 und 2200 mm!\n Bitte neu eingeben!");
      document.jalou.EinB.focus();
      document.jalou.EinB.value = "";
   }

}
function checkH () {
var H = document.jalou.EinH.value;
if (H >= 400 && H <= 3000)
{
}
else { alert("Die Höhe liegt nicht zwischen 400 und 3000 mm!\n Bitte neu eingeben!");
      document.jalou.EinH.focus();
      document.jalou.EinH.value = "";      
}

}
function seitenfuehrung() {
seitenWert =  document.jalou.sf.value;
}
  </script>
<SCRIPT type=text/javascript>
  function spezialvariante1()
  {
   var referenz = document.jalou;
    // montage
    // ------------------------------------------------------------
    var eigenschaft01_text01 = "Standard";
    var eigenschaft01_text02 = "Standard mit Seitenfuehrung";
    var eigenschaft01_text03 = "mit Klemmtraeger";
    var eigenschaft01_text04 = "mit Klemmtraeger und Seitenfuehrung";
    var eigenschaft01_mehrpreis01 = 16.00;
    var eigenschaft01_mehrpreis01a = "16,00";
    var eigenschaft01_mehrpreis02 = 17.00;
    var eigenschaft01_mehrpreis02a = "17,00";
    var eigenschaft01_mehrpreis03 = 49.60;
    var eigenschaft01_mehrpreis03a = "49,60";    
    referenz.montage.options[0].value = eigenschaft01_text01 + "";
    referenz.montage.options[0].text  = eigenschaft01_text01 + "";
    referenz.montage.options[1].value = eigenschaft01_text02 + " + " + eigenschaft01_mehrpreis01a;
    referenz.montage.options[1].text  = eigenschaft01_text02 + " + " + eigenschaft01_mehrpreis01a;
    referenz.montage.options[2].value = eigenschaft01_text03 + " + " + eigenschaft01_mehrpreis02a;
    referenz.montage.options[2].text  = eigenschaft01_text03 + " + " + eigenschaft01_mehrpreis02a;
    referenz.montage.options[3].value = eigenschaft01_text04 + " + " + eigenschaft01_mehrpreis03a;
    referenz.montage.options[3].text  = eigenschaft01_text04 + " + " + eigenschaft01_mehrpreis03a;
 //Bedienung
 //---------------------------------------------
 var bedienseite = "links";
 if(referenz.bedien[0].checked == true)
  {
   /* erster angekreuzt */
   bedienseite = "links";
  }
else if(referenz.bedien[1].checked == true)
  {
   /* zweiter angekreuzt */
   bedienseite = "rechts";
  }


    var montageart = referenz.montage.value;
    var bedienung   = referenz.bedien.value;
    var dess = referenz.dess.value;  
     
    referenz.variante3_1.value = "<br>" + "Dessin " + dess+ "<br>" + "Montage :" + montageart + "<br>" + "Bedienung :" + bedienseite;
    // Mehrpreis
    // ------------------------------------------------------------
 var preis3 = 0;
 //montageart
    if(montageart == referenz.montage.options[1].value)
    {
      preis3 += parseFloat(eigenschaft01_mehrpreis01);
    }
    if(montageart == referenz.montage.options[2].value)
    {
      preis3 += parseFloat(eigenschaft01_mehrpreis02);
    }
    if(montageart == referenz.montage.options[3].value)
    {
      preis3 += parseFloat(eigenschaft01_mehrpreis03);
    }
 

    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 + Epreis
   referenz.Gpreis_1.value = parent.rundung(Gpreis);
//-------------------------------------------------------
    artikel1.varianteauswahl3[0] = referenz.variante3_1.value;
    artikel1.variantepreis3[0] = referenz.preis3_1.value;
  }
  function variante3einschalten1()
  {
    var referenz = document.jalou;
    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 = "Ma&szlig;jalousie 25 mm";
artikel1.kurzbeschreibung = "<FONT color=#ff0000>Maßanfertigung ! Kein Umtausch oder Rückgabe !</FONT>";
artikel1.abbildung = "";
artikel1.artnr = "jalou25";
artikel1.mengeneinheit = "Stück";
artikel1.preis = document.jalou.preis.value;
//artikel1.preis = 69.00;
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 = "H&ouml;he  :";
artikel1.variantebezeichnung3 = "spezielle Ausführung:";
artikel1.variantevorh1 = "nein";
artikel1.variantevorh2 = "nein";
artikel1.variantevorh3 = "nein";
artikel1.benutzerdefiniert1 = "399&&2201";
artikel1.benutzerdefiniert2 = "399&&3001";
artikel1.benutzerdefiniert3 = "";

                    </script>  

     		<TABLE cellSpacing=0 cellPadding=0 width=440 border=0>
<TBODY>
<TD>&nbsp;</TD>
<TD class="normal">&nbsp;Grundpreis für Ihr gewähltes Modell</TD>
<TD>&nbsp;<INPUT size=6 value=0.00 name="Epreis_1" style="text-align:right;"></TD>
<TD class="normal">&nbsp;EUR*</TD></TR>
<TR>
<TD class="normal">&nbsp;+</TD>
<TD class="normal">&nbsp;Mehrpreis für Ihre gewählte Extras</TD>
<TD>&nbsp;<INPUT size=6 value=0.00 name="preis3_1" style="text-align:right;"></TD>
<TD class="normal">&nbsp;EUR*</TD></TR>
<TR>
<TD>&nbsp;=</TD>
<TD class="normal">&nbsp;Gesamtpreis für Ihr gewähltes Modell&nbsp;</TD>
<TD>&nbsp;<INPUT size=6 value=0.00 name="Gpreis_1" style="text-align:right;"></TD>
<TD class="normal">&nbsp;EUR*</TD></TR></TBODY></TABLE>	 
  
  
<script type="text/javascript">
  function kaufen1()
   {
        parent.lege_in_warenkorb(artikel1, document.jalou.menge1.value, document.jalou.variante1_1.value, document.jalou.variante2_1.value, document.jalou.variante3_1.value);
      }
</script> 


    
</form> 
</body> 
</html> 

08.03.2008 18:19

20 Jörg Kruse

Diese zeigt entweder "NaN.00" oder setzt den Extrapreis vor den Grundpreis "1696.00".

Letzteres deutet daraufhin, dass die zu addierenden Werte nicht als Zahlen, sondern asl Strings interpretiert werden (oder zumindest einer von ihnen) - vielleicht hilft es, parseFloat() auch nochmal auf die erste Variable preis anzuwenden

08.03.2008 22:33