Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: и снова о данных из формы (продолжение)
 
 автор: Valick   (11.07.2008 в 01:11)   письмо автору
 
 

Вот такой код:

<?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>

   
 
 автор: Trianon   (11.07.2008 в 01:44)   письмо автору
 
   для: Valick   (11.07.2008 в 01:11)
 

Valick (10.07.2008 в 23:16) => Trianon (10.07.2008 в 21:49)
>Спасибо, немного непонятно для меня.
>Это я так понимаю объектно-ориентированный подход?
Да нет, какой еще ОО-подход.
Просто функцию нашел подходящую - кто ж виноват, что она данные в виде объекта возвращает?

Только лепить ярлыком на нее ник - не стоило... ну нет там ничего такого, что хоть чуть-чуть тянуло бы на авторство.

По остальному тексту - данные надо готовить к внедрению как в запрос (mysql_escape_string) так и в html-код (htmlspecialchars) . Естественно оба направления - независимо одно от другого.

И еще напрашивается мысль, что NULL-состояниями полей этот своеобразный редактор таблиц пока еще не освоился. А так, пример неплохой выходит.

   
 
 автор: Valick   (11.07.2008 в 02:21)   письмо автору
 
   для: Trianon   (11.07.2008 в 01:44)
 

что NULL-состояниями
угу, не пашет, как и остальные типы не проверяет... мне-то хорошо в моей таблице в основном варчар) но для меня пока главное это идея

кто ж виноват, что она данные в виде объекта возвращает
ну так объект же всётаки)) маленький - но объект, малюсенький - но подход))

а функцию так назвал - это я для себя (к своей тоже ник пришпандорил), чтоб не забывать к чему стремится.

   
 
 автор: sim5   (11.07.2008 в 05:19)   письмо автору
 
   для: Trianon   (11.07.2008 в 01:44)
 

Trianon, поздравляю!

   
 
 автор: Valick   (11.07.2008 в 11:00)   письмо автору
 
   для: Trianon   (11.07.2008 в 01:44)
 

Что-то не так. В одной таблице скрипт работает, в другой нет.

   
 
 автор: Valick   (11.07.2008 в 11:06)   письмо автору
 
   для: Valick   (11.07.2008 в 11:00)
 

Нашёл... название таблицы в Апдейт не передаётся
Меняем на:

      $query="UPDATE $table_name
          SET ".$key."='".$value."' 
          WHERE ".$id."='".$mass."'";

   
 
 автор: Trianon   (11.07.2008 в 11:10)   письмо автору
 
   для: Valick   (11.07.2008 в 11:06)
 

:))))

Неплохо было бы имена таблиц и полей заключить в `обратные` косые кавычки.
Если уж эти имена являются данными приложения.
$query="UPDATE `$table_name`
          SET `$key`='$value' 
          WHERE `$id`='$mass'"; 

Про экранирование я уже дышал.

   
 
 автор: Valick   (11.07.2008 в 11:20)   письмо автору
 
   для: 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:48)   письмо автору
 
   для: Valick   (11.07.2008 в 11:20)
 

Читаю про экранирование наткнулся на mysql_qw думаю как лучше сделать.

   
 
 автор: Trianon   (11.07.2008 в 11:09)   письмо автору
 
   для: Valick   (11.07.2008 в 11:00)
 

>Что-то не так. В одной таблице скрипт работает, в другой нет.
Дамп структуры в студию. Иначе куда смотреть-то?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования