Zur Navigation

Ändern einer mysql-tabelle durch html-tabelle [2]

11 Jörg Kruse

Ich mache das Form um die ganze Zeile

Das heißt so?

<table><form><tr><td></td></tr></form></table>

Ein Form kann nicht direkt innerhalb einer der Elemente table oder tr platziert werden, nur innerhalb einer td oder außen um ein table herum

13.02.2006 22:03 | geändert: 13.02.2006 22:04

12 dobberph

Ich glaube das Problem ist, dass danach noch ein extra DeleteForm in dersselben Zeile kommt, also so:
<table>
<tr>
<form>
<td></td>
<td></td>
<td></td>
</form>
<td><form><input type=delete></form></td>
</tr>
</table>

Kann es sein, dass es deswegen nicht geht?
Das mit dem deleteform geht allerdings nicht anders, weil es für jede Zeile einen Deletebutton braucht.

Mfg,
DerTobi

13.02.2006 22:16

13 dobberph

Ist zwar nicht unbedingt sinnvoll, aber ich mach das Form jetzt um jede Zelle:

echo " <td nowrap ".$disabled." valign=\"middle\" bgcolor=\"$bgColor\">";
echo " <form method=\"POST\" action=\"".$sess->url ("$PHP_SELF")."\">";
echo " <input type=\"hidden\" name=\"action\" value=\"change\">";
echo " <input type=\"hidden\" name=\"id\" value=".$mitglied->id.">";
echo " <input border=\"0\" name=\"nachname\" type=\"text\" size=\"12\" maxlength=\"12\" value=\"".$mitglied->nachname."\">";
echo " </form>";
echo " </td>\n";

Problem ist jetzt noch, dass in dieser Zelle nach dem Input irgendwie noch ein Zeilenwechsel steht, so dass das Inputfeld nach oben versetzt ist.
Woher kann das kommen?

Mfg,
DerTobi

14.02.2006 08:33

14 dobberph

Ah, ich hab um das Form noch ein <p></p> eingefügt, jetzt gehts...

Mfg,
DerTobi

14.02.2006 08:42

15 dobberph

Einzige Sache, die mir noch fehlt (das Wichtigste eigentlich):

Wie krieg ich es hin, dass wenn ein Feld nicht mehr fokussiert ist, aber nicht mit Enter bestätigt wurde, das Form trotzdem ausgeführt wird, dass um die Zelle ist.

Sprich, wenn der User das Feld verändert und dann in ein anderes Feld klickt, soll trotzdem erst das Form ausgeführt werden...

Mfg,
DerTobi

14.02.2006 09:03

16 Jörg Kruse

Das ginge vielleicht mit JavaScript onblur / onchange und submit(). Um die Formulare anzusprechen, werden diese mit dem name Attribut eindeutig bezeichnet (z.B. "form1", "form2" etc.). Beim Verlassen (onblur) eines Eingabefeldes wird das Formularfeld abgeschickt

<td>
<form method="post" name="form1" action="">
<input name="wert" type="text" value="" onblur="document.form1.submit();">
</form>
</td>
<td>
<form method="post" name="form2" action="">
<input name="wert" type="text" value="" onblur="document.form2.submit();">
</form>
</td>

14.02.2006 09:39 | geändert: 14.02.2006 09:44

17 dobberph

Hm, hat document auch nen Namen, oder steht da wirklich document?
Hab von Javascript nich soviel Ahnung...

klappt nämlich noch nicht

Zur Zeit sieht die Zeile so aus:
echo "<p><form name='form1' method=\"POST\" action=\"".$sess->url ("$PHP_SELF")."\">";

echo "<input border=\"0\" name=\"nachname\" type=\"text\" size=\"12\" maxlength=\"12\" value=\"".$mitglied->nachname."\" onblur='document.form1.submit();'>";

echo "</form>";

Mfg,
DerTobi

14.02.2006 09:54 | geändert: 14.02.2006 10:09

18 Jörg Kruse

Bei mir funktioniert auch dein Code - beim Verlassen des Eingabefeldes wird das Formular abgeschickt. Die Namen der forms sind auch alle eindeutig?

14.02.2006 10:37

19 dobberph

Komplett steht bei mir:

echo "<td nowrap ".$disabled." valign=\"middle\" bgcolor=\"$bgColor\">";
echo "<p><form method=\"POST\" name=\"formo\" action=\"".$sess->url ("$PHP_SELF")."\">";
echo "<input type=\"hidden\" name=\"action\" value=\"change\">";
echo "<input type=\"hidden\" name=\"id\" value=".$mitglied->id.">";
echo "<input border=\"0\" name=\"nachname\" type=\"text\" size=\"12\" maxlength=\"12\" value=\"".$mitglied->nachname."\" onblur=\"document.formo.submit();\">";
echo "</form></p>";
echo "</td>\n";

Ich habe mehrere Forms (pro Spalte halt) aber habe nur dem hier einen Namen gegeben, kanns daran liegen?

Mfg,
DerTobi

14.02.2006 14:37

20 dobberph

Hm, die Zeile für sich genommen funktionieren bei mir auch...

DerTobi

14.02.2006 14:43