Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Mehrere Daten auf einmal updaten? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Mehrere Daten auf einmal updaten?


 
ffjj
13-03-2010, 21:19 
 
Hi,
ich bin neu hiere und hoffe ihr könnt mir helfen.

Ich möchte mehrere Daten aus einer MySQL-Datenbank auf einmal updaten (ändern).
Dafür habe ich zwei scripte geschrieben:

Das erste Script:

<?php
$query = " SELECT id, forname, lastname
FROM kunden_tb
";

$result = mysql_query( $query, $connect ) OR die( mysql_error() );
$row=mysql_fetch_object($result);
?>

<form action="update.php" name="editfrm" enctype="text/plain" method="post">

<?php
while ( $row=mysql_fetch_object($result) )
{
echo "<table>
<tr>

<td>
<input type='text' name='id' value='$row->id' >
</td>

<td>
<input type='text' name='forname' value='$row->forname' >
</td>

<td>
<input type='text' name='lastname' value='$row->lastname' >
</td>

</tr>";
}
?>
<tr>
<td colspan="3" align="center">
<input type="submit" name="submit" value=" Make Changes " />
</td>
</tr>
</table>
</form>

Die aus der Datenbank ausgelesenen Werte werden mittels der Formular an die Datei update.php weitergeleitet:

Update.php:

$id[x] = $_POST['id'];
$forname[x] = $_POST['forname'];
$lastname[x] = $_POST['lastname'];

$query = " SELECT id, forname, lastname
FROM kunden_tb
";

$result = mysql_query( $query, $connect ) OR die( mysql_error() );

$number = mysql_num_rows($result);

echo mysql_error();

for($x=0;$x<$number;$x++)
{
$query2 = " UPDATE kunden_tb
SET forname='$forname[$x]', lastname='$lastname[$x]'
WHERE id='$id[$x]'
";

$result2 = mysql_query( $query2, $connect ) OR die( mysql_error() );
}

echo mysql_error();

?>


Es werden aber keine Daten in der Datenbank aktualisiert.
Warum?

 
wahsaga
13-03-2010, 23:03 
 
$id[x] = $_POST['id'];
$forname[x] = $_POST['forname'];
$lastname[x] = $_POST['lastname'];
Kannst du mal erklären, was dieser Code bewirken soll?
Sieht nach absolutem Blödsinn aus.


Hast du das error_reporting vernünftig eingestellt, wie es in den Regeln steht?
Das sollte dir deinen Code ordentlich um die Ohren hauen ...

 
ffjj
14-03-2010, 00:24 
 
Ja, du hast recht.
Das ist auch absolouter Unsinn.

Lass mich bitte Schritt für Schritt vorgehen.


<input type='text' name='name[$x]' value='$row->name' >


Da in der Variablen "name" mehrere Namen (jeweils aus einer Datensatz bzw row) gespeichert werden, versuche ich die Werte in einer Array nämlich "name[]" zu speichern.
Die Werte in dem Array name[] übergebe ich die Dati update.php.

Hier versuche ich die Werte wie folgt benutzen:

PS: $number ist die Anzahl der ausgelesenen Datensätze.


for($x=0;$x<$number;$x++)
{
$id[$x] = $_POST['id'][$x];
$name[$x] = $_POST['name'][$x];

$query2 = " UPDATE kunden_tb SET name='$name[$x]' WHERE id='$id[$x]'
";

$result2 = mysql_query( $query2, $connect ) OR die( mysql_error() );
}


Ist diese Vorgehenweise überhaupt richtig?

 
TobiaZ
17-03-2010, 19:18 
 
Also Ansatz ist generell richtig. Ein paar Feinheiten kann an verbessern:

$number ist die Anzahl der ausgelesenen Datensätze.
Und wer sagt dir, dass $_POST['name'] genauso viele Elemente enthält?

$name[$x] = $_POST['name'][$x];Ist ja nur ein Alias, also eigentlich erstmal überflüssig.

Enthält $query2 das, was du erwartest? (Warum eigentlich Query2? Brauchst du $query noch mal?

$result2 = mysql_query( $query2, $connect ) OR die( mysql_error() );Funktionierst?

Hilft dir das weiter, oder hast du noch eine konkrete Frage?

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:36 Uhr.