Hello,
So, hier nun Deine Grid-Funktion:
function make_grid($_data,$primary,$class='grid')
{
if (!is_array($_data)) return false;
if (!isset($_data[$primary])) return false;
$grid = '';
foreach($_data[$primary] as $key => $id)
{
foreach($_data as $field => $value)
{
if ($field != $primary)
{
$grid .= "<input class="$class"\n".
" type="text"\n".
" name="data[$field][$id]"\n".
" size="20"\n".
" value="".htmlentities($_data[$field][$id])."">\n";
}
}
$grid .= "<br />\n";
}
return $grid;
}
Nur so als Denkansatz.
Die passt zu fetch_data_grid.
$_data ist das Datenarray, dass Du damit aus der Tabelle holst
$primary ist der Name der Primärschlüsselspalte
$class ist der Name der CSS-Klasse für Deine Grid-Elemente
Ggf. musst Du das "\n" hinter dem Input wegnehmen, oder zumindest optional machen, denn sonst bekommst Du den Abstand zwischen den Input-Elementen nicht weg.
Bau Dir das Ganze in ein <form> und schau Dir an, was nach dem POST auf dem Server ankommt. Das kannst Du leicht, wenn Du als form-action entweder "http://selfhtml.bitworks.de/debug/kontrolle.php" eingibst, oder Dir selber eine Datei aufbaust, in der Du z.B. einfach nur phpinfo(); drinstehen hast.
Der nächste Schritt wäre dann ja der Aufbau des Update-Statements für die DB.
Nach Erzeugung des Datengrids aus der Tabelle wird dies in der Session gespeichert und dann erst das Input-Grid an den Client gesandt.
Wenn jetzt ein Post vom Formular zurückkommt, prüfst Du, ob unter der von Dir mitgesandten Formular-ID Daten in der Session vorhanden sind. Wenn nein, ist es entweder ein Doppelpost (schon abgearbeitet) oder ein Fake.
Nun gehst Du das Datenarray in der Session Element für Element durch und prüfst, ob die Daten im Post vorhanden sind und ob sie sich geändert haben. Das musst Du für jede Zeile tun. Wenn sich in der Zeile irgendwas geändert hat, wird sie ins Updatestatement aufgenommen, wenn sich nichts geändert hat, lässt Du die Zeile fürs Update unter den Tisch fallen.
Vergiss nicht, auf magic_quotes_gpc() zu achten (also die Masklierungen ggf. vor dem Vergleich wieder zu entfernen) und den Update-Value mit mysql_[real_]escape_string() zu escapen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau