Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Простая голосовалка. Исп. MySQL, Какой-то глюк. Помогите разобраться. 
V
    Опции темы
zluka
Дата 24.9.2008, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 27.7.2006

Репутация: нет
Всего: 2



Вот форма:
Код

<html>
 <head>
  <title>Vote</title>
 </head>
 <body>
 <pre>
 Нравиться ли Вам наш дизайн?
  <form action="vote.php" method="GET">
    <input type="radio" name=vybor value="fuflo"> фуфло
    <input type="radio" name=vybor value="tak_sebe"> так себе
    <input type="radio" name=vybor value="nicho_tak"> ничо так
    <input type="radio" name=vybor value="nihrenovo"> нихреново
    <input type="radio" name=vybor value="super"> супер!
  
    <input type="submit" value="Vote!">
  </form>
  </pre>
 </body>
</html>


Вот таблица "vote" из БД "php":
Код

+------------+-------+
| vybor       | count |
+------------+-------+
| fuflo         |    95 |
| tak_sebe |    94 |
| nicho_tak |     7 |
| nihrenovo|    40 |
| super       |    49 |
+------------+-------+

И сам скрипт:
Код

<?php

$vybor = $_GET['vybor'];
echo "Ваш выбор: ".$vybor;
//-------------Коннект-----------------------------------------------
$dblocation = "127.0.0.1";
$dbname = "php";
$dbuser = "root";
$dbpasswd = "";
$dbcnt = @mysql_connect($dblocation, $dbuser, $dbpasswd);

mysql_select_db($dbname);
//---------------Записует выбор юзера----------------------------
$query_count = mysql_query("SELECT count FROM vote WHERE vybor = '$vybor'");
$rez = mysql_result($query_count, 0); //сколько голосов на данный момент
$rez = $rez + 1; //к текущим голосам еще +1

$query_set = mysql_query("UPDATE vote SET count = $rez  WHERE vybor = '$vybor'");

//---------------Выводим результаты-------------------------------
$query = mysql_query("SELECT * FROM vote");

$rows = mysql_num_rows($query);
$fields = mysql_num_fields($query);

echo "<br>Результаты: ";
echo "<pre>";

for ($i=0; $i<$rows; $i++)
{
    for ($j=0; $j<$fields; $j++)
    {
        echo mysql_result($query, $i, $j)."\t";
    }
    echo "\n";
}

echo "</pre>";
?>

И вот проблема. Когда начинаю голосовать, например выбираю == "fuflo ", нажимаю "голосовать", все ок, но после выбора 10-20 раз одного и того же, перестает добавлять +1. Прошу помощи.

Это сообщение отредактировал(а) zluka - 24.9.2008, 18:52


--------------------
user posted image
PM MAIL   Вверх
skyboy
Дата 24.9.2008, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(zluka @  24.9.2008,  17:48 Найти цитируемый пост)
но после выбора 10-20 раз одного и того же

что в запросе делает зарезервированное слово "count" без обратных кавычек? что в логе ошибок сервера? а в логах MySQL? Почему экранирован вызов mysql_connect и где mysql_error? предположения: исчерпываются соединения с MySQL; проблемы с зависишими скриптами/запросами. 
PM MAIL   Вверх
password
Дата 24.9.2008, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 23.9.2008
Где: Украина, Сумы

Репутация: нет
Всего: 8



Не используй зарезирвированных слов.
Да и тут можно было проще:

Вместо:
//---------------Записует выбор юзера----------------------------
$query_count = mysql_query("SELECT count FROM vote WHERE vybor = '$vybor'");
$rez = mysql_result($query_count, 0); //сколько голосов на данный момент
$rez = $rez + 1; //к текущим голосам еще +1
$query_set = mysql_query("UPDATE vote SET count = $rez  WHERE vybor = '$vybor'");

написать:
//---------------Записует выбор юзера----------------------------
$query_set = mysql_query("UPDATE `vote` SET `count` = `count`+1  WHERE `vybor` = '$vybor'");
PM MAIL Skype   Вверх
zluka
Дата 24.9.2008, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 27.7.2006

Репутация: нет
Всего: 2



Хм.. ситуациая немного проясняеться) 
Заменил строку, которую мне написал password
И добавил mysql_error:
Код

$query_set = mysql_query("UPDATE `vote` SET `count` = `count`+1  WHERE `vybor` = '$vybor'");

if (!$query_set)
{
   echo mysql_error()."\n";
}

Вот что вывело:
Код

Ваш выбор: nicho_tak

Duplicate entry '92' for key 1

Результаты: 
fuflo    95    
tak_sebe  94    
nicho_tak  91    
nihrenovo  92    
super    93    


Добавлено через 13 минут и 36 секунд

Все. Проблема решена. Нужно было удалить auto_increment и PRIMARY KEY с поля count.
Всем спасибо.


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.