Проблема с голосованием. вырвал из роутера...
1.
Николай (21.05.2012 / 19:06)
наверно я дурак.
вот обьясните мне
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 символов)!'; }
?>
Форма таже и пишет
Ошибка! Отсутствуют варианты ответов!
ПОЧЕМУ?
2.
Антон (21.05.2012 / 19:34)
потому check самопальная функция ротора и в твоем движке ее нет, как скомпилировалось это вообще - не понимаю
3.
Николай (21.05.2012 / 19:40)
2.
Borland.Delphi, вообще check я уже взял из роутера и проверку на кол-во символов так что не надо ля ля
4.
Антон (21.05.2012 / 19:40)
check вернет тебе type string, то есть
$answer = check($_POST['answer']); // сюда уйдет строка а не число
дальше, интереснее, ты пихаешь эту переменную в другой тип, типа array, и возвращаешь на место строковой переменной массив. Полное нарушение типов
5.
Николай (21.05.2012 / 19:42)
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 все работает
вставляешь в общию страницу настроек пишет : Отсутствуют варианты ответов
6.
Антон (21.05.2012 / 19:46)
трассируй, я "общию страницу настроек" не вижу
7.
Николай (21.05.2012 / 19:48)
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) {
?>
хочешь сказать вантуз сделал как ты говоришь: Полное нарушение типов?
8.
Антон (21.05.2012 / 19:51)
7, вот почитай,
http://www.php.su/functions/?array-diff там четко написано: функция работает только с массивами, а ты ему строку даешь
Добавлено через 00:57 сек.
пример 1, строка 3 там
9.
Николай (21.05.2012 / 19:54)
Borland.Delphi (21 Мая 2012 / 19:46)
трассируй, я "общию страницу настроек" не вижу
http://lorinz.ru/254/
10.
Антон (21.05.2012 / 20:03)
обрати внимание на это $answer = array_diff($answer, array(''));
array('') - пустой массив, функция вернет тоже пустой массив, поэтому у тебя и ноль там получается. это как вариант. смотрю все на глаз, предупреждаю сразу, без компилятора, и второе, может банально где-то имена переменных совпали
11.
Николай (21.05.2012 / 20:05)
8.
Borland.Delphi,
Вот тебе 2 кода:
Мой код:
<?
$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) {
//123213123
echo'Голосование успешно создано!';
} else {echo'Ошибка! Отсутствуют варианты ответов!'; }
} else {echo'Ошибка! Слишком длинный или короткий вопрос (от 3 до 100 символов)!'; }
?>
Код роутера. т.е. вантуза
<?
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) {
} else {
show_error('Ошибка! Отсутствуют варианты ответов!');
}
} else {
show_error('Ошибка! Слишком длинный или короткий вопрос (от 3 до 100 символов)!');
}
} else {
show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
?>
ну найди 100500 отличий!
12.
Антон (21.05.2012 / 20:07)
Trance Mission (21 Мая 2012 / 20:05)
ну найди 100500 отличий!
борзый? ну ок, сам решай
13.
Николай (21.05.2012 / 20:08)
Borland.Delphi (21 Мая 2012 / 20:07)
борзый? ну ок, сам решай
причем тут борзый я пишу нормально, просто я тебе глаза открыл что код от роутера и мой код полностью индеетичны а результаты РАЗНЫЕ!
14.
Удаленный (21.05.2012 / 20:19)
13, ты просто дoлбoёб )))
15.
Николай (21.05.2012 / 20:23)
Рашид (21 Мая 2012 / 20:19)
13, ты просто дoлбoёб )))
прощай
16.
Удаленный (21.05.2012 / 20:25)
Я же тебе написал рабочий код) сказал в каком направлении двигаться, вроде и не маленький
17.
Николай (21.05.2012 / 20:28)
16.
Рашид, пост 9 ридми. скачай вставь свой код и если все будет ок я прям тебе плюс и 50ка чатлов
URL:
https://visavi.net/topics/32077