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

Форум PHP

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

 

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

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

тема: Не передаются данные в MySQL
 
 автор: hakkol   (30.06.2015 в 12:18)   письмо автору
 
 

Доброго времени суток. Есть форма модерации сообщений, в которой выводятся из mysql имя юзера, его email, тема сообщения, само сообщение, время добавления сообщения и ip, кнопка "удалить сообщение", а так же чекбокс, благодаря которому мы одобряем сообщение, для вывода в основную ленту новостей. Проблема с чекбоксом. Когда пользователь заполняет форму и отправляет ее, чекбоксу присваивается значение 0. Смысл в том, чтобы при постановке "флажка" значение переменной $moderation менялась на 1 и переписывалась в таблице.


<?php
    
require_once 'login.php';
    
$db_server mysql_connect($db_hostname$db_username$db_password);

    if (!
$db_server) die("Unable to connect to MySQL: " mysql_error());

    
mysql_select_db($db_database$db_server)
  or die(
"Невозможно выбрать базу данных: " mysql_error());

    if (isset(
$_POST['delete']) && isset($_POST['link']))
      {
    
$link  get_post('link');
    
$query "DELETE FROM all_news WHERE link='$link'";

      if (!
mysql_query($query$db_server))    
    echo 
"Сбой при удалении данных: $query<br>" .
    
mysql_error() . "<br><br>";
      }

    if (isset(
$_POST['moderation']))
        { 

      
$moderation get_post('moderation');

      
$query "UPDATE all_news SET moderation='0' WHERE moderation='$moderation' ";
      
$result mysql_query($query);

      if (!
$result) die ("Сбой при доступе к базе данных: " mysql_error());
        }

      
$query  "SELECT * FROM all_news";
      
$result mysql_query($query);

      if (!
$result) die (": " mysql_error());
      
$rows mysql_num_rows($result);
  
      for (
$j $j $rows ; ++$j)
      {
        
$row mysql_fetch_row($result);
        echo <<<_END
          <pre>
        <b>Имя</b> 
$row[0]
        <b>Email</b> 
$row[1]
        <b>Наименование новости</b> 
$row[2]
        <b>Текст новости</b> 
$row[3]
        <b>Ссылка на источник</b> 
$row[4]
          </pre>
          <form action="moderation.php" method="post">
              <input type="hidden" name="delete" value="yes">
              <input type="hidden" name="link" value="
$row[4]">
              <input type="submit" value="DELETE RECORD"><br><br>
          </form>
          <form action="moderation.php" method="post">
          <b>Добавить новость в ленту новостей</b><input type="checkbox" name="moderation" value="
$moderation"><br>
          <input type="submit">
          </form>
_END;
  }
  
  
mysql_close($db_server);

    function 
get_post($var)
    {
        return 
mysql_real_escape_string($_POST[$var]);
    }

  function 
moderation($moderation)
  {
      if (
$moderation == "on")
      {
        
$moderation '1';
      }

      else 
$moderation '0';
  }
?>

  Ответить  
 
 автор: indexer   (01.07.2015 в 13:38)   письмо автору
 
   для: hakkol   (30.06.2015 в 12:18)
 

<? php
$query 
"UPDATE all_news SET moderation='0' WHERE moderation='$moderation' ";


если по русски то

всем записям в таблице all_news где moderation равно (1/0) установить moderation значение 0 


http://www.spravkaweb.ru/mysql/sql/update

  Ответить  
 
 автор: hakkol   (01.07.2015 в 15:52)   письмо автору
 
   для: indexer   (01.07.2015 в 13:38)
 

я уже обнаружил это ошибку, после SET ставлю запись moderation='$moderation' а после WHERE moderation='0', в базу данных записываются пустые значения, попробовал в форме изменить value='$moderation' на checkbox='$moderation', если я хоть у одной записи ставлю галочу, то в таблице all_news, значение moderation у всех строк принимает значение 'on'...

  Ответить  
 
 автор: indexer   (01.07.2015 в 16:06)   письмо автору
 
   для: hakkol   (01.07.2015 в 15:52)
 

Нужен еще один признак
Например ID записи

  Ответить  
 
 автор: hakkol   (01.07.2015 в 16:10)   письмо автору
 
   для: indexer   (01.07.2015 в 16:06)
 

подскажите тогда, как задать этот ID? работал с базой кник, там все было удобно сортировать по isbn, а как присваивают ID записям на тех же форумах я не знаю...

  Ответить  
 
 автор: indexer   (01.07.2015 в 16:21)   письмо автору
 
   для: hakkol   (01.07.2015 в 16:10)
 


 <? php
$query 
"UPDATE all_news SET moderation='$moderation' WHERE moderation='0' AND id='$id_field' "


id это автоинкрементное поле

если вы изначально меняете только те поля у которых moderation=0

то с полем id вы меняете только те поля у которых moderation=0 И id = определенному значению. А id уникально и следовательно меняется только 1 запись.

  Ответить  
 
 автор: hakkol   (02.07.2015 в 11:46)   письмо автору
 
   для: indexer   (01.07.2015 в 16:21)
 

добавил id в таблицу, добавил в строку AND id='$id', значение $moderation не передаются таблице, как был 0, так и остался 0...

  Ответить  
 
 автор: indexer   (02.07.2015 в 12:01)   письмо автору
 
   для: hakkol   (02.07.2015 в 11:46)
 

<?php echo $query;


выдает сформированный запрос?

  Ответить  
 
 автор: hakkol   (02.07.2015 в 12:13)   письмо автору
 
   для: indexer   (02.07.2015 в 12:01)
 

да, выдает, но id='' и еще я заметил один косяк со своей стороны - вчера я писал, что в инпуте чекбокса заменил value='$moderation' на checkbox=''$moderation'', хотя хотел на checked=''$moderation'', вообще тогда не понимаю, что за значение 'on' передавалось в таблицу

  Ответить  
 
 автор: hakkol   (02.07.2015 в 15:40)   письмо автору
 
   для: indexer   (02.07.2015 в 12:01)
 

еще попробовал сделать следующее - сделать инпут скрытой кнопкой, у которого value='1', значение moderation так же не отправляется, убираю "AND id='$id' " и единица отправляется всем полям

  Ответить  
 
 автор: hakkol   (03.07.2015 в 08:25)   письмо автору
 
   для: indexer   (02.07.2015 в 12:01)
 

Задачу решил, нужно было перед запросом добавить строку $id = get_post('id'); а в форме <input type="hidden" name="id" value="$row[0]"> , до этого просто не передавалось значение ID, теперь все работает

  Ответить  
 
 автор: indexer   (03.07.2015 в 12:59)   письмо автору
 
   для: hakkol   (03.07.2015 в 08:25)
 

....
Еще есть такая штука называется session туда можно отправить id.

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

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