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

Форум PHP

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

 

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

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

тема: как правильно обновлять данные компании на сайте
 
 автор: usa   (08.12.2011 в 14:53)   письмо автору
 
 

Добрый день!
На страничке, где выводится информация предприятия, предлагается сообщить об ошибке.
<form action="pu_action.php" method="get" name="f2">
<p>Заметили неточность - сообщите об ошибке!</p>
<input type='hidden' name='title' value='<?php echo $myrow3['title']; ?>'>
<input type='hidden' name='licence' value='<?php echo $myrow3['licence']; ?>'>
<input type='hidden' name='accreditation' value='<?php echo $myrow3['accreditation']; ?>'>
<input type='hidden' name='address' value='<?php echo $myrow3['address']; ?>'>
<input type='hidden' name='tel' value='<?php echo $myrow3['tel']; ?>'>
<input type='hidden' name='fax' value='<?php echo $myrow3['fax']; ?>'>
<input type='hidden' name='site' value='<?php echo $myrow3['site']; ?>'>
<input type='hidden' name='email' value='<?php echo $myrow3['email']; ?>'>
<input type='hidden' name='full_name' value='<?php echo $myrow3['full_name']; ?>'>
<input type='hidden' name='short_name' value='<?php echo $myrow3['short_name']; ?>'>
<input type='hidden' name='id_pu' value='<?php echo $myrow3['id_pu']; ?>'>
<input type='submit' name='submit' value='Сообщить'></form>

Далее выводится форма, в которой можно внести изменения
<form name="add" method='post' action='pu_add.php'>
<table width="650" cellspacing="5" cellpadding="5">
 <tr>
  <td width="200" valign="top"><b>Название организации:</b></td>
  <td width="550" align="left" style='background-color:#f0f0f0'>
   <input value= "<?php echo $_GET['title']; ?>" type="text" name="title" size="80" style='border:1px solid red'>
   <p class=sm><i><strong>Например:</strong></i> Профессиональное училище № 29 п. Вурнары</p>
  </td>
 </tr>
...
</table>
<input name="id_pu" type="hidden" value="<?php echo $_GET['id_pu']; ?>">
   <br>
   <center>
     <label>
     <input type="submit" name="submit" id="submit" value="Сохранить изменения">
<strong><font color="#FF0000">Организация будет добавлена после проверки редактором портала.</font></strong>
     </label>
   </center>
</form>

Далее еще один файл записи данных в БД
if  (isset($_POST['title']))         
{$title = $_POST['title']; if ($title == '') {unset ($title);}  }
if  (isset($_POST['licence']))        
{$licence = $_POST['licence']; if ($licence == '') {unset ($licence);}}
if  (isset($_POST['accreditation']))       
 {$accreditation = $_POST['accreditation']; if ($accreditation == '') {unset ($accreditation);}}
if  (isset($_POST['address']))          
{$address = $_POST['address']; if ($address == '') {unset ($address);}}
if  (isset($_POST['tel']))         
 {$tel = $_POST['tel']; if ($tel == '') {unset ($tel);}}
if  (isset($_POST['fax']))          
{$fax = $_POST['fax']; if ($fax == '') {unset ($fax);}}
if  (isset($_POST['site']))          
{$site = $_POST['site']; if ($site == '') {unset ($site);}}
if  (isset($_POST['email']))         
 {$email = $_POST['email']; if ($email == '') {unset ($email);}}
if  (isset($_POST['full_name']))         
 {$full_name = $_POST['full_name']; if ($full_name == '') {unset ($full_name);}}
if  (isset($_POST['short_name']))          
{$short_name = $_POST['short_name']; if ($short_name == '') {unset ($short_name);}}
if  (isset($_POST['id_pu']))          
{$id_pu = $_POST['id_pu']; if ($id_pu == '') {unset ($id_pu);}}
?>


<?php 
if (isset($title) && isset($licence) && isset($accreditation) && isset($address) && isset($tel
&& isset(
$fax) && isset($site) && isset($email) && isset($full_name) && isset($short_name)
&& isset(
$id_pu))
{
/*Здесь мы пишем, что можно заносить информацию в базу*/
$result mysql_query ("UPDATE bd SET title='$title', licence='$licence', 
accreditation='
$accreditation', address='$address', tel='$tel', fax='$fax', site='$site', email='$email', 
full_name='
$full_name', short_name='$short_name' WHERE id_pu=$id_pu");
if (
$result == 'true') {echo "<p>Информация о вашем ПУ обновлена!</p>";}
else {echo 
"<p>Информация о вашем ПУ не обновлена!</p>";}
}          
else 
{
echo 
"<p>Вы ввели не всю информацию, поэтому рубрика не может быть добавлена в базу</p>";
}
?>

Код работает. Запись вносится в БД. НО вот в чем дело - любой может внести коррективы, я имею ввиду это может быть не представитель той самой организации. Поэтому необходимо сразу не записывать в БД, а проверять в начале модератором.
В соседней ветке предлагалось модератору сделать интерфейс, чтобы после одобрения из доп. таблицы данные абдейтились в основной, а в доп. либо грохать, либо оставлять для потомков.
А как это сделать практически? С учетом, что в нынешней есть и другие поля (код города, региона и т.д.), которые не обновляются в вышеизложенном запросе.
И может есть более простое решение с использованием уже готового запроса через UPDATE?

  Ответить  
 
 автор: Aidaho   (08.12.2011 в 15:07)   письмо автору
 
   для: usa   (08.12.2011 в 14:53)
 

Просто не трогать эти поля да и все.
Можно их даже убрать из правки

  Ответить  
 
 автор: usa   (10.12.2011 в 00:35)   письмо автору
 
   для: Aidaho   (08.12.2011 в 15:07)
 

жду ответа как решить поставленную задачу

  Ответить  
 
 автор: SerG7   (10.12.2011 в 15:09)   письмо автору
 
   для: usa   (10.12.2011 в 00:35)
 

Чувствуется твердая рука Е.Попова...
<?
if  (isset($_POST['title']))    {$title $_POST['title']; if ($title == '') {unset ($title);}  }
..........
$title=!empty($_POST['title']) ? trim($_POST['title']) : NULL;


if (isset(
$title) && isset($licence) && isset($accreditation));
............
if (isset(
$title &&  $licence && $accreditation));

кстати пост http://forum.profit-partner.ru/viewtopic.php?t=2435&p=28160#p28183
short_name='$short_name' WHERE id=$" . mysql_real_escape_string($id) . "");

содержит ошибку
WHERE `id`='".intval($id)."'   ");

а по поводу вопроса.....распределите права доступа к БД и не надо никаких доп таблиц и модерации админом...

  Ответить  
 
 автор: Valick   (10.12.2011 в 19:25)   письмо автору
 
   для: SerG7   (10.12.2011 в 15:09)
 

и не надо никаких доп таблиц и модерации админом
а вам что жалко немного места на диске?
и даже если не принимать во внимание участие модератора, то всегда в любой момент можно посмотреть историю изменения и "откатить" до нужного состояния
опять же главная проблема не в этом, а в том что автор и сам до конца не знает чего он хочет и как это должно работать, написание кода это примерно 15% всей работы, остальное это проектирование и составление алгоритма
и если Попов сказал "плодите и размножайте", то никому неизвестный я всегда настаивал на том что необходимо основательно погрузиться в теорию и чтение книг прежде чем кодить в темную голову :)

  Ответить  
 
 автор: SerG7   (11.12.2011 в 11:53)   письмо автору
 
   для: Valick   (10.12.2011 в 19:25)
 

Насчет истории запросов клиента и истории модерации полностью согласен ...

  Ответить  
 
 автор: mirage   (10.12.2011 в 11:24)   письмо автору
 
   для: usa   (08.12.2011 в 14:53)
 

Ну и обновляйте в основной таблице только те поля которые нужны , в запросе UPDATE не обязательно же должны участвовать все поля.. А так можно обойтись без дополнительной таблицы создать к основной таблице еще одно свойство например check_company установить тип данных BOOLEAN. 0-организация еще не одобрена, 1- одобрена.

P.S в коде не видно элементарных проверок данных перед выполнением sql запроса... они у Вас есть ?
Да еще в функции isset, переменные можно перечислять через запятую.

  Ответить  
 
 автор: usa   (10.12.2011 в 19:20)   письмо автору
 
   для: mirage   (10.12.2011 в 11:24)
 

P.S в коде не видно элементарных проверок данных перед выполнением sql запроса... они у Вас есть ?

Вот эта проверка достаточна?
$result = mysql_query ("UPDATE bd SET title='$title', licence='$licence', accreditation='$accreditation', 
address='$address', tel='$tel', fax='$fax', site='$site', 
email='$email', full_name='$full_name', short_name='$short_name' 
WHERE id=$" . mysql_real_escape_string($id) . "");

Еще вопрос. Вы писали
создать к основной таблице еще одно свойство например check_company установить тип данных BOOLEAN. 0-организация еще не одобрена, 1- одобрена.
BOOLEAN - значение ставить 1? А значение по умолчанию какое поставить? Или изначальные все данные, которые в БД сейчас ставть 1 - одобрены. А потом к примеру как узнать что кто-то изменил данные?

  Ответить  
Rambler's Top100
вверх

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