3Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
13
13
ZUGRIFFE
637
637
EMPFEHLEN
-
15.04.12 19:23 #1
Mitglied Silber
- Registriert seit
- Apr 2010
- Beiträge
- 57
Hallo Leute,
ich will mit einem Submit-Button mehrere Datensätze updaten.
Das Update an sicht klappt auch,allerdings nur beim ersten Datensatz, die anderen werden nicht mit geupdatet. Ich denke das Schleife nicht durchläuft.
Habe auch nach viel suchen im Netz keine alternativen zu meiner Schleife gefunden, da der Aufbau einer Schleife im Grund ja immer gleich ist.
Hier mein Code, entweder ich hab einen Denkfehler oder es ist nur ein Schusselfehler.
Vielen Dank.
PHP-Code:echo <<<HTML
<input type="submit" name="update" value="update" >
HTML;
// Anzahl Datensätze
$anzahl = mysql_num_rows( $abz_result );
// Datensatz Ändern
if(isset($_POST['update'])){
for ($a = 0; $a < $anzahl; $a++) {
$id[$a] = $_POST['id'];
$query = "UPDATE fahrzeuge SET
ersteller='".$_SESSION['user']."',
auto ='".$_POST['auto']."',
WHERE id='".$id[$a]."'";
$result = mysql_query( $query) OR die( mysql_error() );
}
}
-
15.04.12 19:49 #2
1.) Formulareingaben immer mit mysql_real_escape_string() bearbeiten, sonst kann man schwere Schäden anrichten.
Deine Schleife führt jetzt $anzahl mal exakt dieselbe Aktion durch.
$id[$a] = $_POST['id'] ist ein wenig Sinnfrei, weil du so ein Array mit $anzahl Einträgen erstellst, wobei jedes Feld denselben Eintrag hat (nämlich $_POST['id']).
Was steht denn in $_POST['id']?Tutorials.de Blog: Stacks und Queues
Wie wird Dir schneller geholfen?
*Bitte nur den Codeausschnitt posten. Keiner mag sich durch hunderte Zeilen Code wühlen.
*Code in Tags setzen, dadurch aktiviert man Syntaxhighlighting. [php][/php] [java][/java]...
*Code formatieren! Einrücken und Absätze machen erhöhen die Lesbarkeit ungemein, nicht nur für uns, auch für Dich
*Den Fehler klar beschreiben. Mit "funktioniert nicht" weiß keiner was anzufangen.
-
15.04.12 22:05 #3
Mitglied Gold
- Registriert seit
- Jun 2011
- Beiträge
- 218
Ich kann dir bei sowas nur von einer Schleife abraten.
Lahmt bei mehreren 1.000 Updates in einer Schleife extremst, so läuft es bei mir perfekt in einem einzigen Query:
Code :1 2 3 4 5
INSERT INTO fahrzeuge (id, ertsteller, auto) VALUES (1, 'a', 'b'), (2, 'c', 'd'), (3, 'e', 'f') ON DUPLICATE KEY UPDATE ersteller=VALUES(ersteller), auto=VALUES(auto)
Aber aufpassen, wenn die ID nicht vorhanden ist, macht er ein INSERT.
Nur bei einer vorhandenen ID macht er ein UPDATE.Tutorials: Ajax JSON Chat PHP
-
16.04.12 11:01 #4
Mitglied Silber
- Registriert seit
- Apr 2010
- Beiträge
- 57
Hallo Leute,
erstmal Danke für eure Hilfe.
Habe nochmal meinen Quelltext überarbeitet.
In $_POST['id'] steht die ID des Datensatzes.
Das mit dem Insert ändere ich wenn das Script geht, sonst bau ich mir vielleicht zu viele Fehler ein.
Es scheint ja auch zu gehen da der erste Datensatz immer aktualisiert wird.PHP-Code:<?php
error_reporting(E_ALL);
while ($data = mysql_fetch_array( $result ) )
{
echo <<<HTML
<form action={$_SERVER['SCRIPT_NAME']} method="post">
<tr>
<td>{$abz_data['id']}</td>
<td>{$abz_data['user']}</td>
<td>{$abz_data['auto']}</td>
<tr>
</form>
HTML;
}
echo <<<HTML
<input type="submit" name="update" value="update" >
HTML;
// Anzahl Datensätze
$anzahl = mysql_num_rows( $abz_result );
// Datensatz Ändern
if(isset($_POST['update'])){
for ($a = 0; $a < $anzahl; $a++) {
$query = "UPDATE fahrzeuge SET
ersteller='".mysql_real_escape_string($_SESSION['user'])."',
auto ='".mysql_real_escape_string($_POST['auto'])."',
WHERE id='".mysql_real_escape_string($_POST['id'])."'";
$result = mysql_query( $query) OR die( mysql_error() );
}
}
?>Geändert von syntax (16.04.12 um 15:41 Uhr)
-
16.04.12 15:09 #5
Mitglied Silber
- Registriert seit
- Nov 2006
- Beiträge
- 96
Bist du dir sicher, dass das Script bei dir einwandfrei läuft?
versuche mal das:
PHP-Code:<?php
error_reporting(E_ALL);
echo "<form action={$_SERVER['SCRIPT_NAME']} method=\"post\">";
while ($data = mysql_fetch_array($result)) {
echo "
<tr>
<td>{$data['id']}</td>
<td>{$data['user']}</td>
<td>{$data['auto']}</td>
<tr>";
}
echo "<input type=\"submit\" name=\"update\" value=\"update\" >";
// Anzahl Datensätze
$anzahl = mysql_num_rows( $result );
// Datensatz Ändern
if(isset($_POST['update'])){
for ($a = 1; $a < $anzahl; $a++) {
$query = "UPDATE `fahrzeuge` SET
`ersteller`='".mysql_real_escape_string($_SESSION['user'])."',
`auto` ='".mysql_real_escape_string($_POST['auto'])."',
WHERE `id`='".$_POST['id']."'";
$result = mysql_query($query);
mysql_error();
}
}
?>Geändert von grillfleisch (16.04.12 um 15:18 Uhr)
-
16.04.12 15:43 #6
Mitglied Silber
- Registriert seit
- Apr 2010
- Beiträge
- 57
Hab es oben nochmal geändert.
Wie gesagt er updatet den ersten Datensatz die anderen werden ignoriert und ich bekomme auch keine Fehler ausgegeben.
Habe es auch mir $a = 1 probiert.
-
16.04.12 16:00 #7
Mitglied Silber
- Registriert seit
- Nov 2006
- Beiträge
- 96
Sind die IDs zufällig 1,2,3,4,5.... bis Anzahl der Datensätze, oder sind da Lücken dazwischen? Wenn keine Lücken dazwischen sind, dann ändere mal
aufPHP-Code:`id`='".$_POST['id']."'
, sonst benutzt er doch immer nur eine ID.PHP-Code:`id`='".$a."'
-
16.04.12 18:55 #8Tutorials.de Blog: Stacks und Queues
Wie wird Dir schneller geholfen?
*Bitte nur den Codeausschnitt posten. Keiner mag sich durch hunderte Zeilen Code wühlen.
*Code in Tags setzen, dadurch aktiviert man Syntaxhighlighting. [php][/php] [java][/java]...
*Code formatieren! Einrücken und Absätze machen erhöhen die Lesbarkeit ungemein, nicht nur für uns, auch für Dich
*Den Fehler klar beschreiben. Mit "funktioniert nicht" weiß keiner was anzufangen.
-
16.04.12 20:25 #9
Mitglied Silber
- Registriert seit
- Nov 2006
- Beiträge
- 96
-
18.04.12 12:53 #10
Mitglied Silber
- Registriert seit
- Apr 2010
- Beiträge
- 57
Hallo Leute,
habs jetzt hinbekommen. Mein letztes Problem ist das wenn ich die Datensätze update, ich die Seite aktualisieren muss damit ich den aktuellen eintrag sehe.
Wie kann ich nach dem Update die Datensätze neu auslesen?
Muss ich dazu eine Schleife bauen?
Ich habe gelesen das ich meine Update-Anweisung über mein SQL-Select setzen soll, das hat allerdings nicht geklappt.
PHP-Code:<?php
include("connect.php");
?>
<table>
<?
$result = mysql_query ("SELECT id, auto FROM fahrzeuge" );
$count=mysql_num_rows($result);
while ( $data = mysql_fetch_array( $result ) ){
?>
<form action="<? $_SERVER['SCRIPT_NAME'] ?>" method="post">
<tr>
<td><? $id[]=$data['id']; ?><? echo $data['id']; ?></td>
<td><input type="text" name="auto[]" id="auto" value="<? echo $data['auto']; ?>"></td>
</tr>
<?php
}
?>
<tr>
<td><input type="submit" name="update" value="update"></td>
</tr>
</table>
</form>
<?
if(isset($_POST['update'])){
for($i=0;$i<$count;$i++){
mysql_query("UPDATE fahrzeuge SET
auto='$auto[$i]' WHERE id='$id[$i]'");
}
}
?>
-
18.04.12 13:00 #11
Mitglied Gold
- Registriert seit
- Jun 2011
- Beiträge
- 218
Erst Updaten dann Auslesen?
Tutorials: Ajax JSON Chat PHP
-
18.04.12 13:06 #12
Mitglied Silber
- Registriert seit
- Apr 2010
- Beiträge
- 57
Wie gesagt das hab ich schon probiert, dann schreibt er aber keine Daten in die DB.
Wahrscheinlich weil ich bei
Kein Post habe, aber wie schreib ich das POST?PHP-Code:auto='$auto[$i]'
Diese Variante ist Falsch.
PHP-Code:auto='$_POST[$auto[$i]]'
-
18.04.12 13:53 #13
Mitglied Silber
- Registriert seit
- Nov 2006
- Beiträge
- 96
1. Updaten wenn update gesetzt wurde.
Das kommt an den Anfang
dann würde ich dir empfehlen, wie vor mir schon einer, deine Datensätze zu entschärfen!PHP-Code:<?php
include("connect.php");
if(isset($_POST['update'])){
for($i=0;$i<$count;$i++){
mysql_query("UPDATE fahrzeuge SET auto='$auto[$i]' WHERE id='$id[$i]'");
}
}
?>
<table>
...
PHP-Code:mysql_real_escape_string()
Mit $_POST bekommst du deine Daten.
du wirst aber keine Daten bekommen. Da in deinem Formular auch was nicht stimmt.PHP-Code:if(isset($_POST['update'])){
for($i=0;$i<$count;$i++){
mysql_query("UPDATE fahrzeuge SET auto='mysql_real_escape_string($_POST['auto'])' WHERE id='$i'");
}
}
Änder bitte den input namen auf "auto"
ohne []PHP-Code:name="auto"
-
18.04.12 14:04 #14
Mitglied Silber
- Registriert seit
- Nov 2006
- Beiträge
- 96
Hier nochmal eine zusammenfassung.
Bring mal bitte ein wenig Ordung in deinen Code. Der ist ziemlich fehlerhaft. Schon allein deine Tabellen und Formular Syntax.
PHP-Code:<?php
include("connect.php");
$result = mysql_query ("SELECT id, auto FROM fahrzeuge" );
$count = mysql_num_rows($result);
if(isset($_POST['update'])){
for($i=0; $i<$count; $i++){
mysql_query("UPDATE `fahrzeuge` SET `auto`='".mysql_real_escape_string($_POST['auto'])."' WHERE `id`='".$i."' ");
}
}
?>
<form action="<? $_SERVER['SCRIPT_NAME'] ?>" method="post">
<table>
<?
while ( $data = mysql_fetch_array( $result ) ){
?>
<tr>
<td><? $id[]=$data['id']; ?><? echo $data['id']; ?></td>
<td><input type="text" name="auto" id="auto" value="<? echo $data['auto']; ?>"></td>
</tr>
<?php
}
?>
<tr>
<td><input type="submit" name="update" value="update"></td>
</tr>
</table>
</form>
Ähnliche Themen
-
mehrere Zeilen/(rows) updaten
Von Nobody33 im Forum PHPAntworten: 2Letzter Beitrag: 23.09.09, 16:47 -
auf die schnelle mehrere Tabellen Updaten
Von Erks im Forum PHPAntworten: 0Letzter Beitrag: 15.01.08, 11:48 -
PHP und Datensätze updaten
Von matzseesi im Forum PHPAntworten: 1Letzter Beitrag: 09.12.03, 21:42 -
Mehrere Tables updaten
Von manjunja im Forum Relationale DatenbanksystemeAntworten: 6Letzter Beitrag: 17.09.03, 15:24 -
mehrere input felder updaten
Von nautiLus` im Forum PHPAntworten: 8Letzter Beitrag: 24.08.03, 17:16




Zitieren

Login