Проблема с голосованием. вырвал из роутера...

Печать RSS
190

Автор
Оранжевые штаны
0
наверно я дурак.
вот обьясните мне

1 CODE
<?
$array1 = $_POST['answer'];
$result = array_diff ($array1, array(''));
if(count($result)> 0 ){ echo'Задействовано: '; echo count($result);}
			echo '<form action="?x=add" method="post">';
			echo 'Вопрос:<br />';
			echo '<input type="text" name="title" size="50" maxlength="100" /><br />';
			echo 'Ответ 1:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
			echo 'Ответ 2:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
			echo 'Ответ 3:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
			echo 'Ответ 4:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
			echo 'Ответ 5:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
			echo 'Ответ 6:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
			echo 'Ответ 7:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
			echo 'Ответ 8:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
			echo 'Ответ 9:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
			echo 'Ответ 10:<br /><input type="text" name="answer[]" maxlength="50" /><br />';
			echo '<input type="submit" value="Создать" /></form>';

?>
все работает отлично.

Добавлено через 01:38 сек.
2 CODE
<?
$title = check($_POST['title']); 
$answer = check($_POST['answer']); 
if (utf_strlen($title) >= 3 && utf_strlen($title) <= 100) { 
$answer = array_diff($answer,array('')); 
if (count($answer) > 0) { 
// ля ля ля ля ля
} else {echo'Ошибка! Отсутствуют варианты ответов!'; } 
} else {echo'Ошибка! Слишком длинный или короткий вопрос (от 3 до 100 символов)!'; }
?>
Форма таже и пишет
Ошибка! Отсутствуют варианты ответов!
ПОЧЕМУ?
Изменил: Николай (21.05.2012 / 19:30)

Старожил вапа, Кодер
0
потому check самопальная функция ротора и в твоем движке ее нет, как скомпилировалось это вообще - не понимаю
Автор
Оранжевые штаны
0
2. Borland.Delphi, вообще check я уже взял из роутера и проверку на кол-во символов так что не надо ля ля
Изменил: Николай (21.05.2012 / 19:40)

Старожил вапа, Кодер
0
check вернет тебе type string, то есть
$answer = check($_POST['answer']); // сюда уйдет строка а не число
дальше, интереснее, ты пихаешь эту переменную в другой тип, типа array, и возвращаешь на место строковой переменной массив. Полное нарушение типов
Автор
Оранжевые штаны
0
4. Borland.Delphi, ок кэп
что на счет этого сажешь?
<? 
if(isset($_POST['answer'])) {
$array1 = $_POST['answer']; 
$result = array_diff ($array1, array('')); 
if(count($result)> 0 ){ echo'Задействовано: '; echo count($result);}  }
            echo '<form action="?x=add" method="post">'; 
            echo 'Вопрос:<br />'; 
            echo '<input type="text" name="title" size="50" maxlength="100" /><br />'; 
            echo 'Ответ 1:<br /><input type="text" name="answer[]" maxlength="50" /><br />'; 
            echo 'Ответ 2:<br /><input type="text" name="answer[]" maxlength="50" /><br />'; 
            echo 'Ответ 3:<br /><input type="text" name="answer[]" maxlength="50" /><br />'; 
            echo 'Ответ 4:<br /><input type="text" name="answer[]" maxlength="50" /><br />'; 
            echo 'Ответ 5:<br /><input type="text" name="answer[]" maxlength="50" /><br />'; 
            echo 'Ответ 6:<br /><input type="text" name="answer[]" maxlength="50" /><br />'; 
            echo 'Ответ 7:<br /><input type="text" name="answer[]" maxlength="50" /><br />'; 
            echo 'Ответ 8:<br /><input type="text" name="answer[]" maxlength="50" /><br />'; 
            echo 'Ответ 9:<br /><input type="text" name="answer[]" maxlength="50" /><br />'; 
            echo 'Ответ 10:<br /><input type="text" name="answer[]" maxlength="50" /><br />'; 
            echo '<input type="submit" value="Создать" /></form>'; 
$title = ($_POST['title']);  
$answer = ($_POST['answer']);  
if (mb_strlen($title,'utf-8') >= 3 && mb_strlen($title,'utf-8') <= 100) {  
$answer = array_diff($answer,array(''));  
if (count($answer) > 0) {  
echo "OK";
} else {echo'Ошибка! Отсутствуют варианты ответов!'; }  
} else {echo'Ошибка! Слишком длинный или короткий вопрос (от 3 до 100 символов)!'; } 
?>
закидываешь в чистый test.php все работает
вставляешь в общию страницу настроек пишет : Отсутствуют варианты ответов
Изменил: Николай (21.05.2012 / 19:44)

Старожил вапа, Кодер
0
трассируй, я "общию страницу настроек" не вижу
Автор
Оранжевые штаны
0
Borland.Delphi (21 Мая 2012 / 19:40)
check вернет тебе type string, то есть
$answer = check($_POST['answer']); // сюда уйдет строка а не число
дальше, интереснее, ты пихаешь эту переменную в другой тип, типа array, и возвращаешь на место строковой переменной массив. Полное нарушение типов
полное нарушение типов?

вырвано из mpanel/votes.php
<?
case 'add':

			$uid = check($_GET['uid']);
			$title = check($_POST['title']);
			$answer = check($_POST['answer']);

			if ($uid == $_SESSION['token']) {
				if (utf_strlen($title) >= 3 && utf_strlen($title) <= 100) {
					$answer = array_diff($answer, array(''));

					if (count($answer) > 0) {
?>
хочешь сказать вантуз сделал как ты говоришь: Полное нарушение типов?

Старожил вапа, Кодер
0
7, вот почитай, http://www.php.su/functions/?array-diff там четко написано: функция работает только с массивами, а ты ему строку даешь

Добавлено через 00:57 сек.
пример 1, строка 3 там
Автор
Оранжевые штаны
0
Borland.Delphi (21 Мая 2012 / 19:46)
трассируй, я "общию страницу настроек" не вижу
http://lorinz.ru/254/

Старожил вапа, Кодер
0
обрати внимание на это $answer = array_diff($answer, array(''));
array('') - пустой массив, функция вернет тоже пустой массив, поэтому у тебя и ноль там получается. это как вариант. смотрю все на глаз, предупреждаю сразу, без компилятора, и второе, может банально где-то имена переменных совпали
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск