"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

PHP/mysql: Formular als array übergeben

grOOvekill@ 23.07.2003 - 13:01 1307 22
Posts

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von grOOvekill@
Ach, du Sch*****! Okay, hab's ausgebessert, aber so funzt es leider auch nicht. Jedesmal wenn ich auf Speichern klicke, erscheint wieder der ursprüngliche Text an der Stelle. Aber danke trotzdem! ;)
hast es auch bei den diversen anderen stellen wo des $ fehlt ausgebessert? :) (btw: is ein ofter fehler, ich hab mal stundenlang gesucht, warum eine objekteigenschaft nicht übernommen wird, bis ich endlich bemerkt hab, dass das "$this->" davor fehlt... hmpf...


btw: is es nicht sinnvoller pro zeile einen submit-button zu machen, der als value die id übergibt?

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2297
Zitat von watchout
btw: is es nicht sinnvoller pro zeile einen submit-button zu machen, der als value die id übergibt?

Ich hab's ursprünglich mit einem Submit Button gemacht, hat aber auch nicht funktioniert. Welchen Vorteil hätte ein Submit Button gegenüber einem Link?

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von grOOvekill@
Ich hab's ursprünglich mit einem Submit Button gemacht, hat aber auch nicht funktioniert. Welchen Vorteil hätte ein Submit Button gegenüber einem Link?
den dass es funkt... oder verwendest du ein javascript?

check this:
Code: PHP
<body>
<?php
$db = mysql_connect("xxx","xxx","xxx");
mysql_select_db("xxx",$db);

if ($_POST['speichern'])
{
	foreach ($_POST['submit'] as $n => $dummy)
	{
		mysql_query("UPDATE table SET text='".$_POST[text][$n]."', data='".$_POST[data][$n]."' WHERE id='".$_POST[id][$n]."'"); 
	}
	echo "<b><center>Änderungen in Datenbank gespeichert!</center></b>";
}
?>
<table border=1 cellpadding=3 cellspacing=0 align=center bordercolor="#e0e0e0">
	<tr>
		<Th>id</a></th>
		<Th>text</a></th>
		<Th>pfad</a></th>
	</tr>
	<form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF ?>">
	<input type="hidden" name="speichern" value="1">
<?php         
	$result = mysql_query("SELECT * FROM table",$db);
	while ($zeile=mysql_fetch_array ($result))
	{
		echo ("
	<input type=\"hidden\" name=\"id\" value=\"$zeile[id]\">
	<tr>
		<td><center>$zeile[id]</center></td>
		<td><textarea name=\"text[]\" cols=50 rows=10>$zeile[text]</textarea></td>
		<td><input type=\"Text\" name=\"pfad\" size=\"50\" value=\"$zeile[pfad]\"></td>
	</tr>
	<tr>
		<td colspan=\"3\" align=\"center\"><input type=\"submit\" name=submit[] /></td>
	</tr>");
	}
?>
</table>
	</form>
</body>
müsste funken :)

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2297
Wow, funktioniert tatsächlich! Nur tut es genau das selbe wie mein Skript. :D Sprich, Änderungen werden nicht akzeptiert. Nach einem Klick auf den Submit Button steht wieder der alte Text dort. Kann es sein, daß ich in der mysql DB irgendwas einstellen muß, was sich eben auf dieses update-statement auswirkt?

btw: Javascript verwende ich nicht, ist auch nicht geplant.
Bearbeitet von grOOvekill@ am 23.07.2003, 15:12

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
gäbs die möglichkeit, dass du mir nen dump von der tabelle raufladst, dann kann ich des gleich testen und dir sagen worans liegt, aber so is das doch etwas schwer... (ich könnt dir jetzt ansagen, wie man normal troubleshooting macht, aber das is echt mühsam...)

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Code: PHP
<body>
<?php
$db = mysql_connect("localhost","root","");
mysql_select_db("test",$db);

if ($_POST['speichern'])
{
	foreach ($_POST['submt'] as $n => $dummy)
	{
		mysql_query("UPDATE tabele SET text='".$_POST[text][$n]."', pfad='".$_POST[pfad][$n]."' WHERE id='".$n."'");
	}
	echo "<b><center>Änderungen in Datenbank gespeichert!</center></b>";
}
?>
<table border=1 cellpadding=3 cellspacing=0 align=center bordercolor="#e0e0e0">
	<tr>
		<Th>id</a></th>
		<Th>text</a></th>
		<Th>pfad</a></th>
	</tr>
	<form method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'] ?>">
	<input type="hidden" name="speichern" value="1">
<?php		 
	$result = mysql_query("SELECT * FROM tabele",$db);
	while ($zeile=mysql_fetch_array ($result))
	{
		echo ("
	<tr>
		<td>
			<center>$zeile[id]</center>
		</td>
		<td>
			<textarea name=\"text[".$zeile['id']."]\" cols=50 rows=10>$zeile[text]</textarea>
		</td>
		<td><input type=\"Text\" name=\"pfad[".$zeile['id']."]\" size=\"50\" value=\"$zeile[pfad]\"></td>
	</tr>
	<tr>
		<td colspan=\"3\" align=\"center\">
			<input type=\"submit\" name=\"submt[".$zeile['id']."]\" value=\"Speichern\" />
		</td>
	</tr>");
	}
?>
</table>
	</form>
</body>
hf

Edit: achtung: bei mir heisst die table jetz tabele (mein) mysql hat table nicht so gemocht ;)

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2297
Mann, vielen Dank! Das Ding funktioniert. Ich hab zwar keine Ahnung, was da genau passiert (sind mir ein paar Sonderzeichen zuviel ;)), aber hauptsache es geht. Hätte mir echt nicht gedacht, daß das so ausartet. Danke nochmal an alle, die geholfen haben.

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
naja, das is eigentlich eh ganz simpel, es geht nur darum dass versucht werden muss alle daten ins post-array zu packen...
das problem dabei is, dass ja immer nur ein submit-button gedrückt werden kann, dadurch hätte das sbmit-array nur ein element
dem submit-button kann man in den value aber leider keine id reinschreiben, da der value das is was auch angezeigt wird
also, muss ich die id händisch reinschreiben, da hab ich aber gleich die aus der db genommen, erspart man sich ein hidden field

die foreach-schleife hab ich einfach nur deswegen genommen, weil sie schön selbständig nach dem einzigen vorhandenen key sucht...
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz