Ну это пример работы. Если разберетесь, дальше будет легче. Начнем с вывода.
PHP |
<?php # Тут я думаю понятно, если нет, спрашивайте. Единица для примера, id=1 $result = mysql_query ("SELECT * FROM cart WHERE user_id='1'",$db); if($result) { echo "<table>"; # Функция mysql_fetch_assoc() выдает результат запроса в виде ассоциативного массива. Сделайте $myrow = mysql_fetch_assoc($result); # тут вот так: print_r($myrow); и будет наглядно. # Это для передачи id, в Вашей схеме все может быть по другому echo "<input name=\"id\" type=\"hidden\" value=\"1\" />"; # Здесь из массива извлекаются пары ключ => значение. # То есть $name это название поля таблицы, а $value то, что в этом поле записано foreach($myrow as $name => $value) # Дальше на стороне клиента собираем такой же массив из пар #ключ => значение в суперглобасльном массиве $_POST, #который передадим на сервер. В начале скрипта поставьте print_r($_POST['user']); и будет видно echo "<tr><td>user[".$name."]</td> <td> <input name=\"user[".$name."]\" type=\"text\" value=\"".$value."\" /><br /></td></tr>"; echo "</table>"; } |
То есть этот скрипт читает все поля строки с id=1 из таблицы в БД, формирует инпуты с именами, состоящими из элементов массива user['имя поля'] и значениями value="то, что записано в ячейке". Браузер клиента формирует переменную $_POST['user'], которая содержит этот массив.
Дальше на сервере получаем этот массив и делим его обратно с точностью до наоборот, то есть формируем из него запрос.
PHP |
<? # Если нажата кнопка if(isset($_POST['user'])) { # инициализируем (присваиваем значение) переменную $input. #За одно обрабатываем все элементы массива функцией mysql_escape_string, что бы избежать SQL инъекций $input = isset($_POST['user'])?array_map("mysql_escape_string",$_POST['user']):null; # Ну это для выбора нужной строки в таблице $id = isset($_POST['id'])?$_POST['id']:null; # Разбираем массив на пары ключ => значение. #А так как массив ассоциативный и состоит из # "название поля" => "то, что там было написано", томожно сделать запрос. foreach($input as $filed => $value) $set[] = "`".$filed."`='".$value."'"; # Вот тут сделайте так: echo implode(", ", $set); и увидите что получилось. # Ну и сам запрос на обновление тех полей, значения которых есть в массиве. То есть в данном случае всех. mysql_query ("UPDATE cart SET ".implode(", ", $set)."WHERE id='".(int)$id."'"); } |
Ну вот, если еще не понятно, не стесняйтесь, спрашивайте.