Dynamisches Formular, Werte werden nicht übergeben

devconproductions

Grünschnabel
Hallo,

ich habe hier ein dynamisches Formular zur Rechnungserstellung, das beliebig mittels PHP in der Anzahl der Felder erweitert werden kann. Ich habe zum einen ein feld menge und die Leistung und darunter dann positionen, z.B. Autoreparatur ist die Leistung und die Unterpositionen sind "Austausch Stoßdämpfer" und "Scheinwerfer", die Unterpositionen werden dann übermittelt wenn man auch die Checkboxen davor aktiviert hat, dies wird durch ein Javascript hochgezählt und dadurch errechnen sich die Schleifendurchläufr für die Datenbankanfrage. Mein Problem ist das die Hauptpositionen übertragen werden die Unterpositionen aber nicht. Ich kann nicht erkennen wieso, hat hier jemand einen Tip oder sieht sofort den Fehler. Hier der Quellcode(Die Klasse beeinhaltet nur die DB Anbindung)
Code:
<?	
require("../../class/milleguv.class.php");
$selectrnr=$Connection->query("SELECT * FROM payout");	if (mysql_num_rows($selectrnr)==0) $rnr=110; //Wenn DB leer dann Generierung Rechnungsnummer
if (mysql_num_rows($selectrnr)!==0) while($row = mysql_fetch_object($selectrnr)){$rnr=$row->rnr+1;} //Wenn RNR vorhanden dann hochzählen

if (isset($submit))
{
// if($kdb=='') echo "Es muss einen Rechnungsempfänger geben";							
 $select=$Connection->query("INSERT INTO payout(kdb,rnr,rday,rmonth,ryear,netto7,netto16,mwst7,mwst16,paypercent,summe,paytarget,status) 
	VALUES('$kdb','$rnr','$r_day','$r_month','$r_year','$netto7','$netto16','$mwst7','$mwst16','$paypercent','$summe','$paytarget','$status')"); 
	 
for ($x=0;$x<$posfor;$x++) 
{	 
$selectpos=$Connection->query("INSERT INTO positions(menge,leistung,preis,gesamt,rnr) 
 VALUES('$menge','".$_POST["leistung$x"]."','$preis','$gesamtpreis','$rnr')"); 

}

for ($i=0;$i<$cposfor;$i++) 
{
$selectchildpos=$Connection->query("INSERT INTO childpositions(crelpositions,cposten,cleistung)  VALUES('".$_POST["leistung$i"]."','".$_POST["cposten$i"]."','".$_POST["cleistung$i"]."')"); 
	}
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="JavaScript">
        <!--
		function addpos()
		{
			var ausgabe=0;
			
			 for (i=0;i<5;i++)
			 {

				if (document.payform.positions[i].checked)
				{
					ausgabe += parseFloat(document.payform.positions[i].value);
				}
			}
			document.payform.posfor.value=ausgabe;
		}
		
		
		function addcpos()
		{
			var causgabe=0;
			var i=0;

		    for (i=0;i<25;i++)
			{
				if (document.payform.cpositions[i].checked)
				{
					causgabe += parseFloat(document.payform.cpositions[i].value);
				}
			}
			document.payform.cposfor.value=causgabe;
		}
       //-->
    </script>
	
	
	
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" >
<title>Unbenanntes Dokument</title>
<link href="../../config/css/css.css" rel="stylesheet" type="text/css" >
</head>

<body >
<form id="payform" name="payform" method="post" action="http://milleguv.millepondo.de/site/guv/testdynform.php">


<? for ($z=0;$z<5;$z++) { ?>
  <table width="950" style="display:block">
  <tr>
    <td colspan="5" bgcolor="#3E414F">&nbsp;</td>
  </tr>
  <tr>
    <td width="27">&nbsp;</td>
    <td width="125">Menge</td>
    <td width="400">Leistung</td>
    <td width="98">Preis/St&uuml;ck</td>
    <td width="276">Gesamtpreis</td>
  </tr>
  
  <tr>
    <td><input name="positions" type="checkbox" id="positions" value="1" onclick="addpos()"></td>
    <td><input name="menge<? echo $z ?>" type="text" value="2" size="10" /></td>
    <td><input name="leistung<? echo $z ?>" type="text" id="leistung" value="Webhosting" size="60" ></td>
    <td><input type="text" name="preis<? echo $z ?>" onblur="addiere(document.payform.menge<? echo $z; ?>.value,document.payform.preis<? echo $z; ?>.value)"></td>
    <td><input type="text" name="gesamtpreis<? echo $z ?>" ></td>
  </tr>

<? for ($i=0;$i<5;$i++) { ?> 
  <tr>
    <td><input name="cpositions" type="checkbox" id="cpositions" value="1" onclick="addcpos()" ></td>
    <td><input name="cposten<? echo $i ?>" type="text" id="cposten" ></td>
    <td><input name="cleistung<? echo $i ?>" type="text" id="cleistung" size="100"></td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
<? } ?>
    <? } ?>
</table>

 <p>&nbsp;</p>
 
 <p>
   <input name="posfor" type="text" id="posfor" > 		<!-- Liefert den Werte für die Abbruchbedingung der Schleife für Positions-->
   
    <input name="cposfor" type="text" id="cposfor" > 	<!-- Liefert den Werte für die Abbruchbedingung der Schleife für Child Positions-->
 </p>
<input type="submit" value="Rechnung speichern und drucken" name="submit">
</form>


</body>
</html>
 
Was ich zumindest sehe, ist, dass du bei positions und cpositions nicht wie bei den anderen Feldern $i an den Namen des Feldes ranhängst.
 
Das hat auch seinen Grund, und ich habe auch herausgefunden das wenn ich die unterpositionen aus der einen schleife rausnehme, dann geht das auch aber dann erfüllt das formular nicht mehr seinen Sinn
 
Wenn du mehrere Formularfelder mit demselben Namen in einem Formular hast, dann wird immer maximal eines davon übermittelt.... es mag also sein, dass du deinen Grund hast, bringen tut es trotzdem nichts.

Wenn du mehrere Formularfelder mit identischem Namen verwenden willst, hänge an den Namen eckige Klammern ran []
 
Zurück