Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите с циклом
Форумы портала PHP.SU » » Вопросы новичков » Помогите с циклом

Страниц (2): [1] 2 »
 

1. blblago - 21 Марта, 2013 - 19:53:39 - перейти к сообщению
Скрипт голосование.

Редактирование голосование, вывод вопросов в цикле, после редактирование обновлением записей в базе. Как объяснить mysql какие поля обновить. ?
2. Vinyl - 21 Марта, 2013 - 20:51:01 - перейти к сообщению
В затруднении
3. blblago - 21 Марта, 2013 - 21:42:42 - перейти к сообщению
Циклом выводятся, данные с базы. После нажатие на кнопку нужно обновить значение в базе !

PHP:
скопировать код в буфер обмена
  1.   $
  2.      while($poll_answer=mysql_fetch_array($row_answer)){
  3.          
  4.      echo '<tr><td width="40%" align="right" class="table"><b>Ответ:</b></td>
  5.          
  6.                    <td width="60%" bgcolor="#434343" class="message_text"><input name="rejoin" type="text" value='.$poll_answer['name'].'></td></tr>';
  7.    
  8.         }
  9.        
4. Vinyl - 21 Марта, 2013 - 21:50:20 - перейти к сообщению
Эхх... Понятия не имею, что там у Вас за $i=0 до цикла, что за $i++ после, а также на какую кнопку Вы нажимаете, но у меня есть один добрый друг-экстрасенс. Он предположил, что у Вас есть скрипт голосования, в котором есть баг - после процесса голосования отображаются неверные результаты голосования, т.к. не учтен последний голос самого проголосовавшего.

Так и есть? Тогда проблема очевидна. Участок кода, добавляющий голос в базу данных, расположен ниже участка кода, который делает выборку. Решение столь же очевидно - перенести участок кода, отвечающий за добавление голоса, выше участка кода с выборкой.

Экстрасенс ошибся?Бывает. Тогда опишите проблему подробнее.
5. blblago - 21 Марта, 2013 - 21:57:03 - перейти к сообщению
Извините если не коректно описываю проблему.

Голосование работает исправно. В моем скрипте существует несколько опросов. Так же я хочу добавить возможность редактирования существующего голосование, и вопросов. Так как вопросом может быть быть несколько, как отредактированные вопросы обновит в базе ?
6. Vinyl - 21 Марта, 2013 - 21:59:53 - перейти к сообщению
А скрипт-то Вы писали? Если да, то проблем вообще быть не должно, а если нет, то код и структуру БД в студию, тогда, возможно, Вам помогут. На данном этапе разговора я Вам даже ничего посоветовать не могу, т.к. не имею представления, как работает Ваш скрипт и как организовано хранение данных в Базе.
7. blblago - 21 Марта, 2013 - 22:00:08 - перейти к сообщению
Это рабочий код ! Тут выводиться вопрос и ответы на голосование. Нужно что бы после изменение вопросов они обновились в базе !

PHP:
скопировать код в буфер обмена
  1.    <table border="0" cellpadding="2" cellspacing="1" width="100%">
  2.     <form method="POST">
  3.     <tr>
  4.          <td width="40%" align="right" class="table"><b>Вопрос:</b></td>
  5.          <td width="60%" bgcolor="#434343" class="message_text"><input name="query" type="text" value="<?echo $poll_name['name'];?>"></td>
  6.         </tr>
  7.     <tr>
  8.          <td width="10%"></td><td width="90%" class="message_text"><font color="#008000"><b>Варианты ответа:</b></font></td>
  9.         </tr>
  10.        
  11. <?    
  12.  
  13.      while($poll_answer=mysql_fetch_array($row_answer)){
  14.          
  15.      echo '<tr><td width="40%" align="right" class="table"><b>Ответ:</b></td>
  16.          
  17.                    <td width="60%" bgcolor="#434343" class="message_text"><input name="rejoin" type="text" value='.$poll_answer['name'].'></td></tr>';
  18.    
  19.         }
  20.        
  21. ?>
  22.  
  23.     <tr><td width="40%" align="right" class="table"><b>Статус:</b></td><td width="60%">
  24.     <select size="1" name="active" class="button">
  25.     <option value="1" <? echo (($poll_name['active']=="1")?'selected=selected':'');?> >Активен</option>
  26.     <option value="2" <? echo(($poll_name['active']=="2")?'selected=selected':'');?> >Не активен</option>
  27.     <option value="3" <? echo(($poll_name['active']=="3")?'selected=selected':'');?> >Скрыт</option>
  28.     </select>
  29.     </td></tr>
  30.     <tr><td width="40%"></td><td width="60%" ><input name="submit" type="submit" value="Редактировать" class="button"></td></tr>
  31.    
  32. </form>
  33.  
  34.         </table>
8. Vinyl - 21 Марта, 2013 - 22:06:24 - перейти к сообщению
А структура БД?
9. blblago - 21 Марта, 2013 - 22:09:58 - перейти к сообщению
Спасибо за то что Вы уделяете мне время ! Мне надо организовать редактирование голосование. Открывается такое окно ! http://petromi[dot]com/get/48c0cf3bbd[dot]png в нем выводятся вопрос и ответы (количество разное) как после редактирование записать из в базу !
10. Vinyl - 21 Марта, 2013 - 22:19:26 - перейти к сообщению
То есть, сейчас при нажатии на "редактировать" голосование не редактируется, так? Тогда мне нужен остальной код, который идет до того, что Вы выше написали + структура базы данных (имена таблиц и полей). Если выше этого кода ничего нет, значит файл инклюдится из другого места и мне нужен код из этого места, т.к. в Вашем коде отсутствует, как минимум, mysql_select_db, которая необходима перед mysql_fetch_array, а так же не объявлена $poll_name['name'].
11. blblago - 21 Марта, 2013 - 22:21:02 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  if(isset($_POST['submit'])){
  2.  
  3.        $poll_act=mysql_fetch_array(mysql_query("SELECT * FROM `gb_polls` WHERE active='1' "));
  4.  
  5.      if(isset($_POST['active']) && $_POST['active']==1 && $poll_act)
  6.          {
  7.        $error='<div align="center" class="text"><b>Уже существует активное голосование, отключите его!</b></div>';
  8.      }
  9.          else
  10.          {
  11.         mysql_query("UPDATE `gb_polls_answer` SET name='".$_POST['rejoin']."' WHERE id_poll='".intval($_GET['id'])."'") or die(mysql_error());
  12.       mysql_query("UPDATE `gb_polls` SET active='".$_POST['active']."', name='".$_POST['query']."' WHERE id_poll='".intval($_GET['id'])."'") or die(mysql_error());
  13.                    echo '<body  onLoad="setInterval(\'window.close()\',0)" >
  14.                 <body onUnload ="window.opener.document.location=\''.$_SERVER['PHP_SELF'].'?a=votes_view\' ;return false;">';
  15.                                    
  16.      }
  17.    }

(Добавление)

(Добавление)
Голосование редактируется, я не знаю как организовать редактирование вопросов !
(Добавление)
Мне легче было бы, показать в Skype, тут вопрос на минуту. Просто я в PHP любитель, а не спец. Огорчение
(Добавление)
Осталась одна проблема, не работает код.

PHP:
скопировать код в буфер обмена
  1.         $rejoin = array (1 => 'January', 'February');
  2.        
  3.                  foreach ($rejoin as $key)
  4.             {
  5.  
  6.                         mysql_query("UPDATE `gb_polls_answer` SET name='".$key."' WHERE id_poll='102'") or die(mysql_error());
  7.                 }
12. avtor.fox - 22 Марта, 2013 - 00:19:08 - перейти к сообщению
blblago пишет:
Осталась одна проблема, не работает код.

Не смотрел код и Вам не советую.
И на будущее. Пока Вы не научитесь приводить текст ошибки, так и будете ходить вокруг да около.
13. Vinyl - 22 Марта, 2013 - 07:24:59 - перейти к сообщению
avtor.fox пишет:
Пока Вы не научитесь приводить текст ошибки, так и будете ходить вокруг да около.
+1
14. blblago - 22 Марта, 2013 - 07:32:45 - перейти к сообщению
В массиве два значение, при INSERT все ключи массива записываются в базу. При UPDATE обновляются все записи вторым ключом. Как провести проверку на ошибки ?

PHP:
скопировать код в буфер обмена
  1.     $rejoin = array (1 => 'January', 'February');
  2.        
  3.                  foreach ($rejoin as $key)
  4.             {
  5.  
  6.                         mysql_query("UPDATE `gb_polls_answer` SET name='".$key."' WHERE id_poll='102'") or die(mysql_error());
  7.                 }
15. imya - 22 Марта, 2013 - 09:06:20 - перейти к сообщению
А разве можно одному ключу присваивать 2 значения ? Это первое.

Второе - отделите вывод от обработки, это значительно упростит разборку кода в дальнейшем.

 

Powered by ExBB FM 1.0 RC1