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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Уникальное голосование

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Возникает ошибка...
Romero
Отправлено: 15 Января, 2011 - 21:49:44
Post Id


Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Здравствуйте! и так, я начал писать скрипт уникального голосования. все вроде работало на локальной машине (у таблицу из IP вписывало номер опроса и ip пользователя). но как только выгрузил в сеть, обнаружил баг... В базу данных записывало данные только первого проголосовавшего пользователя. Уже остальных не записывает. Оказывается ошибка запроса, который вставляет данные в базу данных. Такая ошибка не возникает только у первого проголосовавшего. Уже всё, что знал, перепробовал... Вот код:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?  
  2. include('config.php');
  3.  $ip=$_SERVER['REMOTE_ADDR'];
  4.  
  5.  if($_POST['do']=='') {
  6.    
  7.        
  8.    $selectque=mysql_query("SELECT * FROM tquestions ORDER BY RAND() LIMIT 1");
  9.     $arrque=mysql_fetch_array($selectque);
  10.    
  11.    echo '<form method="post">',$arrque['question'],'<br /> ' ;
  12.          
  13.           $selectans=mysql_query("SELECT * FROM tanswers WHERE qid='$arrque[id]' ORDER BY id");
  14.           while($r2=mysql_fetch_array($selectans)){
  15.          
  16.             echo '<input type="radio" name="answer" id="answer" value="',$r2['id'],'" />',$r2['answer'],' <br />';};
  17.             echo '
  18. <input name="rid" type="hidden" value="'.$arrque['id'].'" />';
  19.          
  20.             echo '<input type="submit" name="do" id="do" value="Голосувати" /><br>
  21.                  </form>';      
  22.         }
  23.        
  24.         if($_POST['do'] != '') {
  25.                      $id=$_POST['rid'];
  26.                          
  27.                 $q_pip=mysql_query("SELECT * FROM ip WHERE pip='$id' AND ip='$ip'");
  28.      
  29.      if(mysql_num_rows($q_pip)==1) {  echo 'Ви вже голосували!<br>';
  30.                                         $q41 = @mysql_query("SELECT * FROM tanswers WHERE qid='$_POST[rid]'");
  31.                                          while ($r6=mysql_fetch_array($q41)) {
  32.                                          echo 'За варіант "', $r6['answer'], '" проголусувало ',$r6['votes'], ' опитуваних <br> ';}};
  33.    
  34.    
  35.                  
  36.         if(mysql_num_rows($q_pip)<1) {  
  37.                        mysql_query("INSERT INTO ip VALUE ('$id' ,'$ip') ") ;
  38.           $q3 = mysql_query("UPDATE tanswers SET votes=votes+1 WHERE id='$_POST[answer]'");
  39.            
  40.          
  41.          if($q3 != FALSE) {
  42.           $q4 = @mysql_query("SELECT * FROM tanswers WHERE qid='$_POST[rid]'");
  43.            if(!$q4) {echo "Неможливо провести операції з БД! Запит 2";} ;
  44.           $q5 = @mysql_query("SELECT SUM(votes) FROM tanswers WHERE qid='$_POST[rid]'");
  45.             if(!$q5) {echo "Неможливо провести операції з БД! Запит 3";} ;
  46.             echo 'Результати опитування:<br>';
  47.              while ($r3=mysql_fetch_array($q4)) {
  48.               // if ($r3['votes']==0) {$percent=0;} else {$percent=}
  49.                  echo 'За варіант "', $r3['answer'], '" проголусувало ',$r3['votes'], ' опитуваних <br> ';
  50.              
  51.                } }} }
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. ?>
 
 Top
Prizrak177
Отправлено: 15 Января, 2011 - 22:23:11
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




Чесно код не смотрел. Но судя по описанию ошибки - некорректные параметры столбца id в базе данных и там выдается ошибка о дублировании ключа.

Покажи ошибку из базы, а также проверь стоит ли автоинкримент.
 
 Top
Champion Супермодератор
Отправлено: 16 Января, 2011 - 09:06:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Ну про ужасность кода я писать не буду, потому что это будет много.
А напишу вот такую ссылку http://phpfaq[dot]ru/debug - это чтоб найти ошибку.
А по поводу кода не знаю. Может быть книжку Макконнелла стоит почитать. Называется Совершенный код.
 
 Top
Romero
Отправлено: 16 Января, 2011 - 15:47:04
Post Id


Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




2 Prizrak177: Не... в структуре базы данных все толково.
2 Champion: Ну да. с этим я согласен... буду усовершенствоваться в плане кода

и ещё. ошибка возникает при втором голосовании с другого ip у строчке 37 приведенного мною кода.
(Добавление)
2 Prizrak177: мда... извиняюсь, именно в БД проблема. Ключ, я так понимаю, и мешал толковой работе скрипта. Спасибо Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB