2017-07-07 5 views
0

Ich habe ein Formular, das von Benutzern bearbeitet werden kann. Wenn Änderungen vorgenommen werden, möchte ich nur diese Änderungen aktualisieren. Ein Mitarbeiter hat "Speichern" gedrückt, bevor die ganze Seite geladen wurde, was bedeutet, dass das Skript die Formularfelder als leer sah und die Felder durch leere ersetzt hat.Update nur bearbeitet/geändert Felder

Aktuelle Code ist:

$res= mysql_query ("UPDATE table SET site='$site', the1='$the1' WHERE id='$id'"); 

die Hilfe hier schätzen .....

+2

geändert wurde *** Bitte [hört auf, mysql_ * '-Funktionen zu verwenden] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php). *** [Diese Erweiterungen] (http: //php.net/manual/en/migration70.removed-exts-sapis.php) wurden in PHP 7 entfernt. Erfahren Sie mehr über [prepared] (http://en.wikipedia.org/wiki/Prepared_statement) Statements für [ PDO] (http://php.net/manual/en/pdo.prepared-statements.php) und [MySQLi] (http://php.net/manual /en/mysqli.quickstart.prepared-statements.php) und erwäge die Verwendung von PDO, [es ist wirklich ziemlich einfach] (http://jayblanchard.net/demystifying_php_pdo.html). –

+0

[Little Bobby] (http://bobby-tables.com/) sagt *** [Ihr Skript ist für SQL Injection Attacks gefährdet.] (Http://stackoverflow.com/questions/60174/how-can- i-prevent-sql-injection-in-php) ***. Sogar [die Zeichenfolge zu entkommen] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) ist nicht sicher! –

+0

Sie müssen die Variable auf der Serverseite validieren, bevor Sie die Abfrage ausführen. –

Antwort

0

Sie schreiben müssen JavaScript-Skript für Änderungen Prüfungsdaten und senden Daten nur geändert. Zum Beispiel können Sie vorherige Daten im Daten-Prev-Value-Attribut speichern.

<input type="text" name="my_field" id="field_id" value="old_value" data-prev-value="old_value"> 

Auf einreichen, vergleichen Sie

$('#field_id').val() != $('#field_id').attr('data-prev-value') 

und wenn sie gleich keine Daten an Array hinzufügen und es an den Server senden. Hier

0

ist ein Vorschlag:

$res= mysqli_query("SELECT * from table where id ='$id'"); 

das Ergebnis-Array Fetch. Nachdem Sie diese Daten ausgewählt haben, müssen Sie sie mit Ihren POST-Daten vergleichen. Wenn Ihre Datenbank Daten abgerufen hat und Ihre Daten nicht übereinstimmen, werden Sie einen neuen Wert eingeben.

0

Eine andere Lösung könnte sein, den Wert aller Felder als den aktuellen Wert in der Datenbank festzulegen. Auf diese Weise wissen sie, was der aktuelle Wert ist und würden leichter wissen, was geändert werden soll. Wenn das Formular abgeschickt wird, werden die Informationen im Formular einfach erneut übermittelt, unabhängig davon, ob sie geändert wurden oder nicht.

Zum Beispiel:

<input type="text" name="firstname" value="<?php echo $row['firstname']; ?>" required> 

wenn das Formular abgeschickt wird, wird es die gleichen Daten halten, die derzeit dort waren, oder aktualisieren, wenn der Wert im Eingabefeld

Verwandte Themen