Inputfeld zu Formularfeld hinzufügen und per PHP abfragen
uNited20
- javascript
Hallo,
ich hab ein Problem mit dem folgenden Quelltext:
<html>
<head>
<script language="JavaScript" type="text/javascript">
<!--
function newCosts()
{
NewRow = document.getElementById('row').lastChild.cloneNode(true);
document.getElementById('row').appendChild(NewRow);
var i = document.getElementById('row').childNodes.length - 1;
for(j=0; j<document.getElementById('row').lastChild.getElementsByTagName('row').length; j++)
{
if (j==0)
var newname ='vcosts[' + i + '][use]';
else if (j==1)
var newname ='vcosts[' + i + '][name]';
else if (j==2)
var newname ='vcosts[' + i + '][descr]';
else
var newname ='vcosts[' + i + '][costs]';
document.getElementById('row').lastChild.getElementsByTagName('input')[j].setAttribute('name', newname) ;
}
}
//-->
</script>
</head>
<body>
<form method="post" action="test.php">
<table align="center" class="cell" id="row" cellpadding="0px" cellspacing="2px" border="0px">
<tr>
<td>Benutzen:
<select name="vcosts[0][use]" class="list">
<option label="Ja" value="1" selected="selected">Ja</option>
<option label="Nein" value="0">Nein</option>
</select>
</td>
<td>Bezeichnung: <input type="text" name="vcosts[0][name]" class="list" value="" style="width:100px" /></td>
<td>Beschreibung: <input type="text" name="vcosts[0][descr]" class="list" value="" style="width:150px" /></td>
<td>Betrag: <input type="text" name="vcosts[0][cost]" class="list" value="0" style="width:40px" /></td>
</tr>
</table>
<div style="padding:10px; text-align: center">
<input type="button" value=" Neue Kosten hinzufügen " onClick="newCosts()" class="button">
<input type="submit" class="button" value=" Speichern " />
</div>
</form>
</body>
So mein Problem ist: Wenn ich das Formular abschicke und die $_POST - Variable auslese per PHP, z.B. einfach einen Dump des $_POST - Arrays mache ( print_r($_POST); ), werden die hinzugefügten Felder nicht mit übergeben.
Kann mir deshalb jemand erklären, wo mein Fehler liegt und mir eine Lösung posten bzw. wenn es irgendwo ein vorgefertigtes Script mir den Link nennen.
Danke schonmal im Voraus. MfG uNited20
Hi,
<table align="center" class="cell" id="row" cellpadding="0px" cellspacing="2px" border="0px">
mal abgesehen davon, was die Attribute align, cellpadding, cellspacing und border im HTML-Code überhaupt verloren haben: Warum fütterst Du drei Viertel davon mit ungültigen Werten?
So mein Problem ist: Wenn ich das Formular abschicke und die $_POST - Variable [...]
Parameter. Variablen haben nichts damit zu tun.
[...] auslese per PHP, z.B. einfach einen Dump des $_POST - Arrays mache ( print_r($_POST); ), werden die hinzugefügten Felder nicht mit übergeben.
Wie hast Du überprüft, dass sie überhaupt hinzugefügt werden? Nach allem, was ich sehe, hat das letzte <tbody>-Element der Tabelle bzw. die Whitespace-Node zwischen </tbody> und </table> keine Nachfahren namens <row>.
Kann mir deshalb jemand erklären, wo mein Fehler liegt
Von welchem Optimismus stammt der Singular?
Cheatah
Solche sinnlosen Posts wollte ich vermeiden, aber es gibt immer wieder Leute die ihren Senf zu Nichtigkeiten geben müssen. Entweder kannst du einen bei dem Problem helfen und erklärst es einen ordentlich oder lässt es einfach. Danke. Ich würde es nämlich gern verstehen.
P.S.: Warum füttern mit falschen Parametern? Erklär es mir mal kurz!
Hi,
P.S.: Warum füttern mit falschen Parametern? Erklär es mir mal kurz!
wenn Du keine Hilfe von mir willst, solltest Du Rückfragen vermeiden.
Cheatah
Ich kann nix mit reinen Antworten wie: "Das ist falsch.", welche ohne jegliche Ausführung und Erläuterung gegeben werden anfangen. Ich brauch eine Lösung die mir erklärt wird, um beim nächsten Mal bescheid zu wissen, das nicht wieder in euren Augen sinnlose Frage kommt. Ich persönlich bin kein Fan von JavaScript und überlasse das gern anderen sich mit JavaScript zu beschäftigen.
Das Problem ist einfach ich brauch ein JavaScript, welches mir dynamisch ein oder mehrere Input - Felder zu einem bestehenden Formular hinzufügt und diese Werte, welche in den Feldern dann eingegeben werden, per PHP abgefragt werden können, wenn man das Formular dann abschickt. Da ich bei einem größer Projekt ja noch eine Datenbank dahinter stehen hab. Deshalb auch vielleicht die überflüssigen Attribute für die Tabelle, da ich euch nicht das komplette Projekt hier posten kann, sondern nur einen Schnipsel daraus. So und mein Versuch scheitert nun mal und deshalb brauch ich eine Lösung mit einer Erklärung. Mit Ungefähr-Aussagen kann ich nix anfangen.
Servus,
Solche sinnlosen Posts wollte ich vermeiden [...]
Cheatah liefert dir die Antwort PLUS weitere sinnvolle Hinweise aber du mimst lieber die beleidigte Leberwurst...
Hättest du auf irgendeine sinnvolle Weise dein Script debugged, wüsstest du, warum dein Code nicht funzt[TM].
Zum Debugging eignet sich besonders die Firebug-Erweiterung für Firefox; die per default vorhandene Fehler-Konsole tuts hier aber auch schon.
Gruss
Patrick
Hallo,
Kann mir deshalb jemand erklären, wo mein Fehler liegt und mir eine Lösung posten
ich würde die Namen der neuen Formularfelder überprüfen per js-Testfunktion, deine Umbenneung scheint nicht zu funktionieren.
beim IE gibt es noch zu beachten, dass er gerne ein <tbody>-Element in der Tabelle hat.
<input type="button" value="test" onClick="test1(this)" class="button">
function test1(butt) {
var s="alle elements:";
var el=butt.form.elements;
for (var i=0; i<el.length;i++) {
s+="\n"+i+" "+el[i].name;
}
alert(s);
}
Gruß plan_B
<input type="button" value="test" onClick="test1(this)" class="button">
function test1(butt) {
var s="alle elements:";
var el=butt.form.elements;
for (var i=0; i<el.length;i++) {
s+="\n"+i+" "+el[i].name;
}
alert(s);
}
Danke, jetzt seh ich meinen Fehler. Das ist sehr hilfreich.