ситема голосования - передача данных с формы в функцию и обработка даных

Alexander_14

Новичок
ситема голосования - передача данных с формы в функцию и обработка даных

Здравствуйте!
Я пишу простую систему голосования, то есть у меня есть форма для голосования::
PHP:
<form action="/contacs/votes/" method="POST" >
	<?php if ($question !== false) {?>
	<?php foreach ($question as $it):?>
	<table border="0" width="100%">
	<tr>
		<td id="golos_head" width="100%">Голосування</td>
	</tr>
	
	<tr>
		<td id="question" width="100%"><?php echo $it['question'];?></td>
	</tr>
	<tr>
		<td id="line_golos"><input type="radio" name="vote" value=1><?php echo $it['one'];?></td>
	</tr>
	<tr>
		<td id="line_golos"><input type="radio" name="vote" value=2><?php echo $it['two'];?></td>
	</tr>
	<tr>
		<td id="line_golos"><input type="radio" name="vote" value=3><?php echo $it['three'];?></td>
	</tr>
	<tr>
		<td id="button"><input type="submit" value="Голосовать" class="button"></td>
	</tr>
	</table>
	
	<?php endforeach;?>
	<?php }?>
и соответственно обработка ( по которой вообщем и вопрос):
PHP:
function votes()
	{
		switch (?????)
		{
		case "????":
			mysql_query ("UPDATE votes SET first = first+1");
		break;
		case "????":
			mysql_query ("UPDATE votes SET sec = sec+1");
		break;
		case "????":
			mysql_query ("UPDATE votes SET third = third+1");
		}
			
		
			
}
как мне передать в функцию данные формы чтобы switch их обработал и внес в БД соответствующий результат??? Тоесть какой параметр надо передать в switch и case соответственно????
 

iSlayter

Новичок
Re: ситема голосования - передача данных с формы в функцию и обработка даных

PHP:
function votes() {
    $vote = mysql_real_escape_string($_POST['vote']);
    switch ($vote):
        case 1:
            mysql_query('UPDATE votes SET first = first+1');
        break;
        
        case 2:
            mysql_query('UPDATE votes SET sec = sec+1');
        break;
        
        case 3:
            mysql_query('UPDATE votes SET third = third+1');
        break;
    endswitch;
}
ответил только потому что в своё время кто-то вроде Mr. Max'a отпостил в тему подобное сообщение. подумал я про себя тогда, мол "му..ак он!", но на самом деле это не так. му..аков тут, к счастью, мало. так вам отвечают первый и последний раз. в дальнейшем внимательно прислушивайтесь к советам. мимо мануала не проходите. читайте комменты на страницах мануала.
 

iSlayter

Новичок
Автор оригинала: Апокалипсис
iSlayter
причём тут escape string ? у него $vote в switch идёт
написано специально для того, чтобы у него возник вопрос, "а что это? и зачем это здесь нужно? и нужно ли вообще?".

Судя по всему в его скриптах так всё в запросы и лезет. В заданном пользователем виде.

// было бы хорошо, еслиб модераторы удалили это сообщение и вышестоящее.
 

iSlayter

Новичок
Апокалипсис, Вы ошибаетесь, в таком случае нужно давать ссылку www\.phpfaq\.ru\/(.*) и www\.phpnet\.ru\/(.*)
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
iSlayter
$vote = mysql_real_escape_string($_POST['vote']);
я б не ескейпил то, что нужно сразу "кастрировать" к int. Это так. вобщем.

Ну неужели в Туториале по формам на офф.сайте непонятно написано?... ;)
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
iSlayter
Если тип данных неверный, невижу смысла их ескейпить.
Если ожидается на входе int считаю что данные нужно не ескейпить/проверять тип и т.д
А принудительно приводть к нужному типу а уж потом решать что делать с данными данными.

Правда в данном случае, как заметил Апокалипсис, проверки и т.д ненужны.
 

Ralph

Дикий столяр
Автор оригинала: iSlayter
результат будет немного не таким, каким его ожидает увидеть автор кода :)
Включите логику:

1.Автор кода ВСЕГДА должен ожидать подвоха от пользователя и соответственно на это реагировать

2.Имеем:форму с фиксированными значениями ответа.Получаем:нечто совсем не соответствующее ЛЮБОМУ варианту ответа.Вывод:явно преднамеренное вмешательство в работу скрипта.Действие:не догадываться,что якобы имел в виду пользователь,а сразу отвергнуть ответ как некорректный
 

Sluggard

Новичок
>> я б не ескейпил то, что нужно сразу "кастрировать" к int. Это так. вобщем.
Война религий. А Вы - это только Вы. Тоже в общем.

Ralph, так а Вы, собственно, как делаете?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Sluggard
Это ты сейчас к чему сказал?
Что предлагаешь?
Так-же, как тут советовали, "догадываццо" и пытаться определить
ввод пользователя который решил руками поправить данные в форме?
Тем-более данные, которые статически "вбиты" в форму?
 

Sluggard

Новичок
Mr_Max
Как раз я никому ничего не предлагал. :)

С одной стороны - приводить к int, с другой - эскейпить и подставлять в запрос. Мне ближе второй способ.
На запрос: /page/4)0/
- в первом способе пользователь увидит страницу с id = 4 (естественно, если такая существует).
- во втором способе пользователь получит сообщение «Странница не существует», что, ИМХО, логичнее. Если пользователь набивал адрес руками, то полезет в адресную строку. Что имел в виду пользователь 4, 40 или 400, я не берусь гадать.
 
Сверху