Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: реализация вывода переменной
Форумы портала PHP.SU » PHP » Программирование на PHP » реализация вывода переменной

Страниц (2): [1] 2 »
 

1. haveFun - 08 Января, 2010 - 07:57:53 - перейти к сообщению
в общем тема такая.
есть страничка head.php с ячейкой (основной поле сайта) в которой выводится
CODE (text):
скопировать код в буфер обмена
  1. <?php  echo $contents ?>

есть форма, как бы для регистрации
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. $out.='<form action="q.php" method="POST">';
  4. $out.='<table width="100%" height="100%" align="center" border="1">';
  5. $out.=' <tr><td width="260" align="right" span style="padding:0px 30px;">Enter your nickname: </td><td width="260"><input type="text" name="uname"> <input type="submit" value="Проверить"></td><td><?echo $unu?></tr>';
  6. $out.=' <tr><td align="right" span style="padding:0px 30px;">Enter the password: </td><td><input type="password" name="upassword"></td><td><? echo $upu ?></td><tr>';
  7. $out.=' <tr><td align="right" span style="padding:0px 30px;">Confirm the passwod: </td><td><input type="password" name="upassword2"><td></tr>';
  8. $out.=' <tr><td align="right" span style="padding:0px 30px;">Enter your e-mail: </td><td><input type="text" name="uemail"></td><td><? echo $umu ?></td></tr>';
  9. $out.=' <tr><td align="right" span style="padding:0px 30px;">Confirm your e-mail: </td><td><input type="text" name="uemail2"></td><td><? echo $test ?></td></tr>';
  10.  
  11. $out.=' <tr><td align="right" span style="padding:0px 30px;">Сколько спутников у Юпитера?</td><td><input type="text" name="upiter"></td><td><? echo $uuu ?></td></tr>';
  12. $out.=' <tr><td><? echo $za ?></td><td><br><input type="submit" value="Зарегистрироваться!"></td></tr>';
  13. $out.='</table>';
  14. $out.=' </form>';
  15. ...
  16. $contents = $out;
  17. require("head.php"); ?>
  18.  

при нажатии на "регистрироваться", активируется страничка q.php в которой выполняются всякие там условия...
CODE (text):
скопировать код в буфер обмена
  1. <?
  2. if ((!($_POST["upassword"] != $_POST["upassword2"])) && (!($_POST["upassword"] != NULL))) {
  3.                 if ((!($_POST["uemail"] != $_POST["uemail2"])) && (!($_POST["uemail"] != NULL))) {
  4.                         if ($_POST["upiter"] == "63")
  5.                                 {$za = "zaebis!";}
  6.                         else $uuu = "Почитайте википедию.";
  7.                         }
  8.                 else $umu = "некорректный e-mail!";
  9.                 }
  10.         else $upu = "некорректный пароль!";
  11.  
  12. require("registration.php");
  13. ?>
  14.  

разумеется переменные, которые по идее должны из q.php грузануться в registration.php не отображаются в соответствующих ячейках изза апострофов. как бы это дело обойти, что б к примеру в случае несоответствия кол-ва спутников Юпитера, рядом печаталось "почитайте вику"?

ps: я не очень профессиональный кодер, ниодного языка не знаю, третий день вообще что-то делаю, а курсовой сделать хочется. Подмигивание

для наглядности привожу скрин:
2. alpha_beta - 08 Января, 2010 - 10:33:20 - перейти к сообщению
Курсовая расчитана обычно на год (бывают правда и удивительные исключения), а ты хочешь сделать все менее чем за неделю. Даж помогать не хочется таким лентяям.
3. RomAndry - 08 Января, 2010 - 10:47:07 - перейти к сообщению
в q.php у тебя "каша" из проверок.
раздели каждую проверку и делай постепенно все и проверяй сразу
4. haveFun - 08 Января, 2010 - 18:26:59 - перейти к сообщению
alpha_beta пишет:
Курсовая расчитана обычно на год (бывают правда и удивительные исключения), а ты хочешь сделать все менее чем за неделю. Даж помогать не хочется таким лентяям.

я бы не торопился с выводами, товарищ. сдача в июне, а курс веб-программирования начнется только в следующем семестре (февраль). мб я и лентяй в какой-то степени, но не на столько как ты себе представляешь ))
RomAndry пишет:
в q.php у тебя "каша" из проверок.
раздели каждую проверку и делай постепенно все и проверяй сразу

а kasha="0" не пойдет в моем случае? это я к тому что ответ на мой вопрос получился ооочень доходчивый))

вот кстати по новому переписал
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?
  3.         if ((!($_POST["upassword"] == $_POST["upassword2"])) && (!($_POST["upassword"] != NULL)))
  4.                 {
  5.                         if ((!($_POST["uemail"] == $_POST["uemail2"])) && (!($_POST["uemail"] != NULL)))
  6.                                 {
  7.                                         if ($_POST["upiter"] == "63")
  8.                                                 {
  9. $link = mysql_connect('localhost','root','pass') or die("Could not connect");
  10. mysql_select_db('user', $link ) or die ('Не могу выбрать БД');
  11. $query = "INSERT INTO eblans VALUES(NULL,'$uname','$upassword','$uemail')";
  12. $result = mysql_query($query);
  13. if($result) {echo "Даные внесены в базу данных";} else {echo "Ошибка, данные не были внесены в БД";}
  14. mysql_close;
  15. $contents = "thx for registration! ,)";
  16. require("index.php");
  17. //$za = "zaebis";
  18.                                                 }
  19.                                         else $uuu = "Почитайте википедию.";
  20.                                 }
  21.                         else $umu = "некорректный e-mail!";
  22.                 }
  23.         else $upu = "некорректный пароль!";
  24.  
  25. require("registration.php");
  26. ?>
  27.  

единственное что вылетает - "некорректный пароль". в формах пишу одинаковые пассы, то есть они равны и не пустые, а условие {...} не выполняется. может где-то в if(...) что-то не верно написал? никаких ошибок не вылетает.
5. Мелкий - 08 Января, 2010 - 19:32:48 - перейти к сообщению
alpha_beta пишет:
Курсовая расчитана обычно на год (бывают правда и удивительные исключения)

По моим наблюдениям аналогично, курсовая - на один семестр, а не на год.

haveFun пишет:
в формах пишу одинаковые пассы, то есть они равны и не пустые,

Ну, а в коде проверяете, что бы они были не равны и нулевые.
PHP:
скопировать код в буфер обмена
  1.         if ((!($_POST["upassword"] == $_POST["upassword2"])) && (!($_POST["upassword"] != NULL)))

$_POST["upassword"] == $_POST["upassword2"] => true
(!true) => false
Есть false, значит && теряет смысл проверять дальше. Прерывание. Всё!
6. Hunter - 09 Января, 2010 - 15:19:41 - перейти к сообщению
Мелкий
у меня была подобная поблема, две величины были равными по значению, одна из формы, другая из БД.. в if при сравнении почему-то ни как не признавалось их равенство..я даже специально выводил в их браузер чтобы убедиться что они равны..сколько не искал ошибку так и не нашел.. все удалил подчистую, написал заново но гораздо медленнее и внимательнее .. и все заработало Подмигивание
7. JustUserR - 09 Января, 2010 - 15:41:23 - перейти к сообщению
Hunter пишет:
Я даже специально выводил в их браузер чтобы убедиться что они равны
Этот метод не всегда помогает так как переменные могут быь разного типа и выглядть в браузере будут одинаково только за счет одинаковости в toString (При преобразовании в строку)
Hunter пишет:
Написал заново но гораздо медленнее и внимательнее .. И все заработало
В действительности частичное или полное переписывание кода как правило дает заментые улучшения и в функциональности и в структуре программы
haveFun Вам для сведения скажу что пустая переменная и NULL-переменная это совершенно разные вещи - если в форме было поле но его не заполнили то это будет пустая переменная (Проверка if(!empty()) или просто if()) а если такой переменной вообще не было то она NULL (Проверка if(isset) или if(==NULL)

alpha_beta пишет:
Даж помогать не хочется таким лентяям
А тебе не надоело постоянно обвинять других - не знаешь не пиши Улыбка
8. Hunter - 09 Января, 2010 - 15:53:04 - перейти к сообщению
JustUserR пишет:
Этот метод не всегда помогает так как переменные могут быь разного типа и выглядть в браузере будут одинаково только за счет одинаковости в toString (При преобразовании в строку)

но у меня же в условии стояла проверка на равенство а не на идентичность?)
9. JustUserR - 09 Января, 2010 - 16:12:54 - перейти к сообщению
Hunter А может где в конце был символ \n ? Ведь в HTML он не является символом перевода строки и его можно не заметить Поэтому уж если и сравнивать через вывод в браузер то надо обрамлять дополнительно в одиночные кавычки - чтобы точно видеть начало и окончание содержимого переменной
10. Мелкий - 09 Января, 2010 - 17:18:23 - перейти к сообщению
JustUserR пишет:
Поэтому уж если и сравнивать через вывод в браузер то надо обрамлять дополнительно в одиночные кавычки - чтобы точно видеть начало и окончание содержимого переменной

а лучше - var_dump(). Тип скажет, длину строки - тоже Улыбка

Hunter пишет:
но у меня же в условии стояла проверка на равенство а не на идентичность?)

но таки у вас проверка на неравенство! !($a==$b) аналогично $a!=$b
отрицание уберите, в общем Улыбка
11. biperch - 09 Января, 2010 - 18:09:21 - перейти к сообщению
haveFun пишет:
$out.="<form action="q.php" method="POST">";

$out.="<table width="100%" height="100%" align="center" border="1">";

$out.=" <tr><td width="260" align="right" span style="padding:0px 30px;">Enter your nickname: </td><td width="260"><input type="text" name="uname"> <input type="submit" value="Проверить"></td><td><?echo $unu?></tr>";

$out.=" <tr><td align="right" span style="padding:0px 30px;">Enter the password: </td><td><input type="password" name="upassword"></td><td><? echo $upu ?></td><tr>";

$out.=" <tr><td align="right" span style="padding:0px 30px;">Confirm the passwod: </td><td><input type="password" name="upassword2"><td></tr>";

$out.=" <tr><td align="right" span style="padding:0px 30px;">Enter your e-mail: </td><td><input type="text" name="uemail"></td><td><? echo $umu ?></td></tr>";

$out.=" <tr><td align="right" span style="padding:0px 30px;">Confirm your e-mail: </td><td><input type="text" name="uemail2"></td><td><? echo $test ?></td></tr>";


незнаю как оно там дальше но я наблюдаю офигенное количество """""" без \
12. JustUserR - 09 Января, 2010 - 19:25:05 - перейти к сообщению
biperch Может вам надо выключить magic_quoues_gpc чтобы не было лавинообразного экранирования спецсимволом
И когда вы выводите на экран то слеши последнего уровня никогда не будут видны (А будут видны начиная с тех которые были сами заэкранированы - типа \\ )
13. haveFun - 11 Января, 2010 - 01:19:17 - перейти к сообщению
в общем господа, перебрал я все заново, проверка проходит на ура, пользователи добавляются в бд, но!
опять та самая проблема меня настигла, из за которой я тему эту и поднял.

на страничке q.php, на которой выполняется проверка условий, при неправильности проверки
PHP:
скопировать код в буфер обмена
  1.  
  2. if ($u=="63")
  3.               {добавление в бд}
  4.               else $_POST["uuu"] = "rtfm!"; require("registration.php");
  5.  

(если u=="фиг" например) переменная uuu должна принимать значение 4х веселых букв, и после этого грузиться страничка регистрации, на которой эта переменная должна отображаться в соответствующей ячейке:
PHP:
скопировать код в буфер обмена
  1.  
  2. $uuu = $_POST["uuu"];
  3. ...таблица, все дела...
  4. $out.='
  5. <tr>
  6.    <td> // 1 ячейка
  7.       Сколько спутников у Юпитера?
  8.    </td>
  9.    <td> // 2 ячейка
  10.       <input type="text" name="upiter">
  11.    </td>
  12.    <td> // 3 ячейка
  13.       <? echo $uuu ?>
  14.    </td>
  15. </tr>';
  16.  

и отображаться в третьей ячейке в виде rtfm!
прогружается registration.php
надпись rtfm не отображается Недовольство, огорчение
я что-то не так с $_post намудрил? как это подправить?
14. JustUserR - 11 Января, 2010 - 08:06:26 - перейти к сообщению
haveFun Наверное дело в том что вы неправильно используете функцию require - она работает таким образом что не подключается файла в момент выполнения во время выполнения определеного условия - а делает это при запуске программы и при этом просто заменяет оператор на содержимое указанного файла
Если вам нужна вставка по условию то замените на include Об этом можете почитать здесь http://www.php.su/functions/?require
15. haveFun - 11 Января, 2010 - 18:46:57 - перейти к сообщению
да нет, если я вместо
PHP:
скопировать код в буфер обмена
  1. else {$_POST["uuu"] = "rtfm!"; require("registration.php");}

напишу
PHP:
скопировать код в буфер обмена
  1.  else {echo "rtfm!"; require("registration.php");}

, то у меня на страничке отобразиться rtfm, и загрузится страница регистрации. а мне нужно что бы сообщение отображалось в определенной ячейке.

я могу конечно что-то путать ввиду своего непрофессионализма, но если эхо выводиться, должна выводиться и пременная Не понял

UPD: замена require на include ни к чему не привела.

 

Powered by ExBB FM 1.0 RC1