Всем привет!!! Всех с прошедшими и наступающими праздниками!!!! Есть такая проблемка: - из базы выбирается инфа и циклом подставляется в теги <input>; - пользователь меняет инфу и нажимает сохранить; - инфа методом пост летит в файл обработчик вот дамр $_POST Array ( [ided8] => 8 [country8] => ууу [city8] => ккккккк [scool8] => кпппп [year_begin8] => 4566 [year_finish8] => 6666 [ided6] => 6 [country6] => ррр [city6] => ттттт [scool6] => йййй [year_begin6] => 1212 [year_finish6] => 1212 [ided7] => 7 [country7] => ссссс [city7] => яяяяя [scool7] => ффффф [year_begin7] => 4545 [year_finish7] => 4545 [submit] => Cохранить ) вводом разделены строки БД КАК теперь эти данные UPDATE-ом засунуть в таблицу (данные создаются динамически, а что бы названия переменных отличались к ним дописывается id строки)
1. не дописывать id а сохранять сразу в массив HTML: <input name="id[ed8]" type="text"/> <input name="country[ed8]" type="text"/> можно еще так, мне было бы даже удобнее HTML: <input name="data[ed8][id]" type="text"/> <input name="data[ed8][country]" type="text"/> 2. UPDATE table SET field=value WHERE id =; Запросы, конечно, придется для каждой записи отдельные делать. Но нет ничего сложного в том чтобы делать UPDATE сразу для всех свойств одной записи.
да плевать сколько полей. (ты их кстати не путай с строками БД) формат как я сказал. в последнем случае: count($_POST['data']) вернет тебе число строк count($_POST['data']['someindex'] вернет число полей если надо отсеять пустые поля, без цикла никуда не денешься. PHP: <?php $_POST = array('data' => array( '1e' => array('field1' => '', 'field2' => '2') , '2e' => array('field1' => '1', 'field2' => '2') , '3e' => array('field1' => '2', 'field2' => '2') , '4e' => array('field1' => '', 'field2' => '') ) ); // PHP 5.3 array_walk($_POST['data'], function (&$row, $id) { array_walk($row, function ($field, $name) use (&$row) { if (!$field) { unset($row[$name]); } }); return $row; });
Как запихнуть это в массивы то понятно, спасибо за идею Суть в том как этими массивами запросом UPDATE обновить БД??? Вывести их циклом и подставить в запрос данные??? UPDATE table SET field=value WHERE id =;
да именно взять циклом и подставить в запрос. Только сделать надо несколько умнее и сформировать 1 запрос для 1 записи, а не для 1го поля. т.е. ты должен получить [sql]UPDATE table SET field=value, field2=value2, field3=value3 WHERE id = 'чего-то там'[/sql]