|
|
|
| Вот такой код:
<?php
// *******************************************************************
// Функция определения первичного ключа таблицы из результата запроса
// *******************************************************************
function trianon_name_id($result)
{
for($i = 0;$k = mysql_fetch_field($result, $i); ++$i)
if($k->primary_key)
return $k->name;
return false;
}
// *******************************************************************
// Устанавливаем соединение с базой данных
include_once ("conect.php");
// Проверяем пердачу данных ПОСТ
if(isset($_POST['new']) & isset($_POST['check']) & isset($_POST['id']))
{
// ВНИМАНИЕ!!! Здесь необходима функция проверки корректности переданных данных
$check=$_POST['check'];
$new=$_POST['new'];
$id=$_POST['id'];
foreach($check as $num=>$mass)
{
echo ("обновляем <br>");
foreach($new[$mass] as $key=>$value)
{
echo ("строка <b>".$mass."</b> столбец <b>".$key."</b> новое значение <b>".$value."</b><br>");
$query="UPDATE usl
SET ".$key."='".$value."'
WHERE ".$id."='".$mass."'";
$name=mysql_query($query);
}
}
}
// Имя таблицы
$table_name="usl";
// Формируем запрос к БД
$query="SELECT *
FROM $table_name";
$name=mysql_query($query);
// Получаем имя первичного ключа
$id=trianon_name_id($name);
while ($row=mysql_fetch_assoc($name))
{
$keyval = $row[$id];
unset($row[$id]);
$new[$keyval]=$row;
}
?>
<form action='show.php' method='POST'>
<input type="hidden" name="id" value="<?php echo $id;?>">
<table border="0" cellpadding="0" cellspacing="0">
<?php foreach($new as $num => $mass)
{?>
<tr>
<td>
<input type="checkbox" name="check[]" value="<?php echo $num;?>"></td>
<?php foreach($mass as $key=> $value)
{?>
<td>
<input type="text" name="new[<?php echo $num;?>][<?php echo $key;?>]"
value="<?php echo ($new[$num][$key]);?>">
</td>
<?php }} ?>
</tr>
<tr>
<td><input type="submit" name="save" value="Сохранить" ></td>
</tr>
</table>
|
| |
|
|
|
|
|
|
|
для: Valick
(11.07.2008 в 01:11)
| | Valick (10.07.2008 в 23:16) => Trianon (10.07.2008 в 21:49)
>Спасибо, немного непонятно для меня.
>Это я так понимаю объектно-ориентированный подход?
Да нет, какой еще ОО-подход.
Просто функцию нашел подходящую - кто ж виноват, что она данные в виде объекта возвращает?
Только лепить ярлыком на нее ник - не стоило... ну нет там ничего такого, что хоть чуть-чуть тянуло бы на авторство.
По остальному тексту - данные надо готовить к внедрению как в запрос (mysql_escape_string) так и в html-код (htmlspecialchars) . Естественно оба направления - независимо одно от другого.
И еще напрашивается мысль, что NULL-состояниями полей этот своеобразный редактор таблиц пока еще не освоился. А так, пример неплохой выходит. | |
|
|
|
|
|
|
|
для: Trianon
(11.07.2008 в 01:44)
| | что NULL-состояниями
угу, не пашет, как и остальные типы не проверяет... мне-то хорошо в моей таблице в основном варчар) но для меня пока главное это идея
кто ж виноват, что она данные в виде объекта возвращает
ну так объект же всётаки)) маленький - но объект, малюсенький - но подход))
а функцию так назвал - это я для себя (к своей тоже ник пришпандорил), чтоб не забывать к чему стремится. | |
|
|
|
|
|
|
|
для: Trianon
(11.07.2008 в 01:44)
| | Trianon, поздравляю! | |
|
|
|
|
|
|
|
для: Trianon
(11.07.2008 в 01:44)
| | Что-то не так. В одной таблице скрипт работает, в другой нет. | |
|
|
|
|
|
|
|
для: Valick
(11.07.2008 в 11:00)
| | Нашёл... название таблицы в Апдейт не передаётся
Меняем на:
$query="UPDATE $table_name
SET ".$key."='".$value."'
WHERE ".$id."='".$mass."'";
|
| |
|
|
|
|
|
|
|
для: Valick
(11.07.2008 в 11:06)
| | :))))
Неплохо было бы имена таблиц и полей заключить в `обратные` косые кавычки.
Если уж эти имена являются данными приложения.
$query="UPDATE `$table_name`
SET `$key`='$value'
WHERE `$id`='$mass'";
|
Про экранирование я уже дышал. | |
|
|
|
|
|
|
|
для: Trianon
(11.07.2008 в 11:10)
| | Экранирование я хочу оформить функцией или это лишнее?
Кстати запрос на обновление пойдёт этот или лучше собрать такой:
$query="UPDATE `$table_name`
SET `$key1`='$value1' ,`$key2`='$value2' , `$key3`='$value3' ... `$keyN`='$valueN'
WHERE `$id`='$mass'";
|
| |
|
|
|
|
|
|
|
для: Valick
(11.07.2008 в 11:20)
| | Читаю про экранирование наткнулся на mysql_qw думаю как лучше сделать. | |
|
|
|
|
|
|
|
для: Valick
(11.07.2008 в 11:00)
| | >Что-то не так. В одной таблице скрипт работает, в другой нет.
Дамп структуры в студию. Иначе куда смотреть-то? | |
|
|
|