Перейти к содержимому



Не могу разобрать в чём ошибка

#1 Tgl2203

Tgl2203
  • Пользователь
  • 1 сообщений
  • Репутация: 0
0

Отправлено 10 Июнь 2009 - 13:30

Попытался своими руками сотворить скрипт голосования. Обрабатывает его та же страница, на которой он был показан. Но тут PHP вообще перестал понимать что такое $_GET!

Форма такая(ну, конечно, она тоже генерируется, но я тут для наглядности вывел просо html):
<form action="index.php" method="GET" name="id_opros">
Чтобы спасти мир надо...
<label><input type='radio' name='id_opros' value='1'/>Меньше мусорить</label>
<label><input type='radio' name='id_opros' value='2'/>Стать добрее</label>
<label><input type='radio' name='id_opros' value='3'/>Перестать убивать редких животных</label>
<input type="submit" value="voting" />
</form>

Код обработчика такой:

<?php 
if(isset($_GET['id_opros'])) {
$id_opros = $_GET['id_opros'];
if ($id_opros == "") {
unset($id_opros);
}
}

if (isset($id_opros)) {
$result = mysql_query("SELECT golosov FROM golosovanie WHERE  id='$id_opros'", $db);
$myrow = mysql_fetch_array($result);
$plus = $myrow['golosov'];
$plus = $plus++;
if ($golos = mysql_query("UPDATE golosovanie SET golosov='$plus' WHERE  id='$id_opros'", $db)) {
echo "Спасибо за ваш голос!";
}
else {
echo "Произошла ошибка";
}
}


?>

Проверил всё, но не работает... Что делать?

 

 

  • 0

#2 v1ex

v1ex
  • Пользователь
  • 225 сообщений
  • Репутация: 0

Отправлено 10 Июнь 2009 - 13:33

О_О
$id_opros; = $_GET['id_opros']


А что конкретно не работает?

Гы, нашел:
$plus = $plus++;
исправьте на
$plus++;
или на
$plus = ++$plus;

  • 0

#3 Евгений

Евгений
  • Пользователь
  • 481 сообщений
  • Репутация: 0

Отправлено 10 Июнь 2009 - 13:40

$result = mysql_query("SELECT golosov FROM golosovanie WHERE id='$id_opros'", $db) or die(mysql_error());

посмотри может выскочит что

if ($golos = mysql_query
это вообще по моему не правильно... во первыйх mysql_query вносить под if и если сравниват то знак ==, а не =
  • 0

#4 v1ex

v1ex
  • Пользователь
  • 225 сообщений
  • Репутация: 0

Отправлено 10 Июнь 2009 - 13:47

это вообще по моему не правильно... во первыйх mysql_query вносить под if и если сравниват то знак ==, а не =

Все тут правильно. Тут запрос возвращает результат в переменную $golos, а потом проверяется не пустая ли переменная $golos. Ведь PHP это не строготипизированный язык ;)
Ведь ты наверняка вот так делаешь, а это одно и тоже:
while ($row = mysql_fetch_array($res))

  • 0

#5 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 11 Июнь 2009 - 00:20

Tgl2203, пишем так:
index.php
<?php

if(isset($_GET['voting']))
{
	$opros = intval($_GET['id_opros']);
	$sql = "UPDATE golosovanie SET golosov=golosov+1 WHERE id={$opros}";
	if(mysql_query($sql,$db)) echo "Спасибо за ваш голос!";
		echo "Произошла ошибка";
}
?>

<form action="" method="GET">
Чтобы спасти мир надо...
<label><input type='radio' name='id_opros' value='1'/>Меньше мусорить</label>
<label><input type='radio' name='id_opros' value='2'/>Стать добрее</label>
<label><input type='radio' name='id_opros' value='3'/>Перестать убивать редких животных</label>
<input type="submit" name="voting" value="voting" />
</form>

P.s. но учтите что поля golosov и id_opros должны быть int

Вообще я бы вам советовал пересмотреть представление опросов. В вашем случае, чтобы провести новый опрос, вам придётся очистить таблицы.
Сделайте проще. Есть таблица голосований(id, вопрос), таблица вариантов и количества ответов(id_вопроса, ответ, количество проголосовавших)
  • 0


Оформление форума – IPBSkins.ru