Tabbele+Formular+Array Probleme

hugoea

Grünschnabel
Tabelle+Formular+Array Probleme

Moin erstmal.

habe da 2-3 kleine Prob's mit meinem Formular in einer dynamisch Tabelle.
Also, ich habe in PHP/Smarty ein Formular in einer Tabelle erstellt, die je nach Eingabe eine weiter Zeile erhalten soll, das mache ich mittels js (siehe Code gekürzt).
Im PHP/Smarty ist dabei die 1. Zeile schon vorgegeben.
Soweit funktioniert auch alles, zumindest bekomme ich jedes mal eine neue Zeile.
Wenn ich dann den SUBMIT-Button drücke, um die Werte zu erhalten, wird jedoch nur der Wert aus dem PHP-Teil ausgegeben

hier erstmal der js Codeausschnitt

Code:
function ZellenEinfuegen()
{	
	var t=document.getElementsByTagName('tr');
	for (var x=0; x < t.length; x++) 
	{}
	var tr = document.getElementById('prod_mehrf').insertRow(x-1);
	
	.	
	.
	.
	var td2 = document.createElement('td');
	var inp2 = document.createElement('input');
  		inp2.setAttribute('type','text');
  		inp2.setAttribute('id','markem');
  		inp2.setAttribute('name','markeman[]');  		
		inp2.setAttribute('size','10');		
		td2.align = 'center';
	td2.appendChild(inp2);
	tr.appendChild(td2);
	.
	.
	.
	var td9 = document.createElement('td');
	var inp9 = document.createElement('input');
  		inp9.setAttribute('type','text');
  		inp9.setAttribute('name','preis[]');  		
		inp9.setAttribute('size','4');
		inp9.setAttribute('maxlength','7');
		inp9.setAttribute('onclick','ZellenEinfuegen();');			
		td9.align = 'center';
	td9.appendChild(inp9);
	tr.appendChild(td9);
	.
	.
	.
}

die gekürzte PHP/Smarty
Code:
<table id="prod_mehrf"; width:"100%";>		
	<tr style="text-align:center;">{*Tab-Kopf*}
		...
		<th width:"89px";>{*Markenname*}
			Markenname		
		</th>
		...
		<th width:"69px";>{*Preis*}
			Preis		
		</th>
		...	
	</tr>		
	<form action='index.php?section=eing_mehrf' method='post'>
	<tr style="text-align:center;">{*Tabelle*}
		...
		<td>
			<p width:"89px";>{*Markenname*}
				<input type ='text' id='markem' name ='markeman[]' size='10'>	
			</p>
		</td>
		...
		<td>					
			<p width:"69px";>{*Preis*}
				<input type ='text' name ='preis[]' size='4' maxlength='7' onclick=ZellenEinfuegen();>		
			</p>
		</td>
		...
	</tr>
	<tr>
		<td colspan="3";>
			<p>
				<input type='submit' name='einf_mehr' value='Einf&uuml;gen'>
			</p>
		</td>
	</tr>
	</form>		
</table>

um die ausgabe zu testen:

Code:
	print_r($_POST['markeman']);

Bsp:
die 1. Zeile ist ja schon da, da gebe ich abc ein, -> eine neue Zeile wird erstellt
in die neue, also 2. Zeile gebe ich def ein -> Submit-Button gedrückt ->
Ausgabe:

Code:
Array
(
    [0] => abc
)

Das war das grössere Problem

Das Kleine ist, wenn die 2. Zeile erstellt wird, ist ein grösserer Abstand zwischen der 1. und 2. Zeile, als wenn eine weiter erstellt wird, zwischen der 2. und 3. Zeile.

Hoffe, ihr könnt mir da ein wenig helfen, da es gerade mein Anfänge mit JS sind und ich nicht schon Aufgeben möchte.

Danke schoneinmal

Grüsse
HugoEA
 
Zuletzt bearbeitet:
Platziere mal die <form>-Tags ausserhalb de Tabelle, das dürfte nicht nur beide Probleme beheben, sondern das Dokument auch valder machen ;)
 
Hi,

noch was Grundsätzliches zum Markup: Zwischen den einzelnen HTML-Attributen wird kein Semikolon gesetzt, nach einem Attribut ein Gleichheitszeichen und kein Doppelpunkt notiert, und zu guter letzt darin keine Einheit (px) angegeben.

Code:
<table id="prod_mehrf"; width:"100%";>		
	<tr style="text-align:center;">{*Tab-Kopf*}
		...
		<th width:"89px";>{*Markenname*}
			Markenname		
		</th>
 
Jup, ok, geändert, danke für den Hinweis.:)

Also, das mit den Werten funktioniert wunderbar.
Nur die Lücke zwischen der 1. und 2. Zeile ist immer noch grösser als de zwischen den restlichen.

Wenn das noch weg ist, kann der Haken kommen :rolleyes:
 
so, habe herausgefuden, woran das mit der grösseren Zeile lag, die <p>-Tags waren noch drinn.

So, dann danke nochmal an alle.
 
so, habe herausgefuden, woran das mit der grösseren Zeile lag, die <p>-Tags waren noch drinn.
Deshalb brauchst du sie aber nicht zu entfernen, sondern lediglich das folgende Stylesheet einsetzen, um die Polsterungseigenschaften des p-Elements auf null zu setzen:

Code:
p {
margin:0;
padding:0;
}
 

Neue Beiträge

Zurück