Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с include, не пойму что не так 
V
    Опции темы
s0lman
Дата 11.2.2008, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



Всем привет.
Имеется
config.php
Код

<?
$host = "localhost";
$database = "base";
$user = "root";
$pass = "";
$errorf="log/error.log";
$connectf="connect.php";
$functionsf="functions.php";
?>

functions.php
Код

function query($connect_id,$errorf,$string) {
          $query_id = mysql_query($string,$connect_id);
          $errno = mysql_errno();
          $errtext = mysql_error();
          if (!$query_id){
                 add_error_log($errorf,"Неправильный запрос SQL: ".$string,$errno,$errtext);
          }
          return $query_id;
     }

connect.php
Код

подключение к БД

reg.php
 
Код

форма регистрации

и наконец index.php
Код

<?
Error_Reporting(E_ALL & ~E_NOTICE);
 include_once( "config.php" );
 include_once($functionsf);
 include_once ($connectf);
 include_once("reg.php");
?>


Вопрос. Когда пытаюсь зарегистрировать нового пользователя получаю ошибку: неизвестна функция  query. Почему?
Если перенести include из index.php в reg.php то все отлично работает.
Спасибо.


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
MoLeX
Дата 11.2.2008, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(s0lman @  11.2.2008,  14:44 Найти цитируемый пост)
 include_once($functionsf); include_once ($connectf);


может надо
Код

<?
Error_Reporting(E_ALL & ~E_NOTICE);
 include_once("config.php");
 include_once ("connect.php");
 include_once("functions.php");
 include_once("reg.php");
?>


Это сообщение отредактировал(а) MoLeX - 11.2.2008, 14:48


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
s0lman
Дата 11.2.2008, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



пробовал - не работает. проблема не в этом....


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
skyboy
Дата 11.2.2008, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(s0lman @  11.2.2008,  13:44 Найти цитируемый пост)
Когда пытаюсь зарегистрировать нового пользователя получаю ошибку: неизвестна функция  query. Почему?Если перенести include из index.php в reg.php то все отлично работает.

у тебя в reg.php не вызывается query часом?
PM MAIL   Вверх
GeneralElectric
Дата 11.2.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



Вообще-то, очень странно видеть сообщение об отсуствующей функции без сообщения о неудавшейся попытке подключить файл.

во-первых, сделай так, чтобы в functions.php выводилось что-нибудь.
во-вторых, обратись к нему напрямую, и посмотри - выведет ли.
потом обратись к индексу и посмотри.

вообще, я думаю, дело здесь в опечатках/невнимательности.

Если не заработает, сообщения об ошибке СКОПИРУЙ сюда

Добавлено через 3 минуты
s0lman, слушай, ты всегда query так и вызываешь - с тремя параметрами?
Не лень каждый раз их писать? там же только запрос нужен? А коннект - если уж и нужен, то можно сделать необязательным. 
Что лежит в $errorf, я не очень догадываюсь, но уверен, что она тоже не нужна
PM MAIL   Вверх
MoLeX
Дата 11.2.2008, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



query()
это вроде зарезирвированая фу-ция. и если заново ее попытаться создать разве не будет ошибки? 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
skyboy
Дата 11.2.2008, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(MoLeX @  11.2.2008,  14:27 Найти цитируемый пост)
это вроде зарезирвированая фу-ция.

в смысле? в мане ни слова о функции с таким именем. недокументированные возможности? 0_о
PM MAIL   Вверх
MoLeX
Дата 11.2.2008, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



О_о а она у меня есть, вот скриншот
user posted image

РНР 5 версии, редактор - phpDesigner 2008


на счет мана - у меня тоже ее нет, а в редакторе есть  smile 

Это сообщение отредактировал(а) MoLeX - 11.2.2008, 15:36


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
s0lman
Дата 11.2.2008, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



Цитата(skyboy @ 11.2.2008,  15:19)
у тебя в reg.php не вызывается query часом?

Вызывается. После проверки валидности полей.

В файле reg.php
Код

...
if(!isset($_GET['step'])){ 
if(query($connect_id,$errorf,"INSERT INTO user (ID,NAME,PASS) VALUES ('','Petya1','pas')"))echo "<script type='text/javascript'> alert('added'); </script>" ;

<form name="form1" id="form1" method="post" action="reg.php?step=1">
...

в этом месте функция выполняется

Код

...
if($_GET['step']=="1"){
/*строка 48*/ if(($_POST['pass']==$_POST['confpass'])&&($_POST['user']!="")&&($_POST['pass']!="")){
    if(query($connect_id,$errorf,"INSERT INTO user (ID,NAME,PASS) VALUES ('','".$_POST['user']."','".$_POST['pass']."')")) 
...

здесь получаю ошибку 
Fatal error: Call to undefined function: query() in z:\home\baza.com\www\reg.php on line 48




--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
skyboy
Дата 11.2.2008, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



я правильно понял: делаешь include($functions) в index.php, а функцию пытаешься вызвать в reg.php?
PM MAIL   Вверх
s0lman
Дата 11.2.2008, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



Цитата(skyboy @ 11.2.2008,  16:33)
я правильно понял: делаешь include($functions) в index.php, а функцию пытаешься вызвать в reg.php?

Верно, я вызываю функцио в reg, но reg тоже подключаю через include в индексе. как и functios.

Возможно причина в том что в reg выполняется два шага: сначала заполняется форма, а во втором шаге выполняются проверки  запрос.
После отсылки данных (if($_GET['step']=="1")) функция не определяется. Только почему...


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
GeneralElectric
Дата 11.2.2008, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



СТОП. Описываемые события происходят при одном и том же запуске index.php, или при РАЗНЫХ?
PM MAIL   Вверх
s0lman
Дата 11.2.2008, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



Цитата(GeneralElectric @ 11.2.2008,  16:53)
СТОП. Описываемые события происходят при одном и том же запуске index.php, или при РАЗНЫХ?

Одном и том же


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
sTa1kEr
Дата 11.2.2008, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(s0lman @  11.2.2008,  17:42 Найти цитируемый пост)

Возможно причина в том что в reg выполняется два шага: сначала заполняется форма, а во втором шаге выполняются проверки  запрос.

Возможно вы подключаете functions.php только на первом шаге?

Добавлено через 1 минуту и 26 секунд
Цитата(MoLeX @  11.2.2008,  16:34 Найти цитируемый пост)
О_о а она у меня есть, вот скриншот

Это не функция, а метод класса mysqli, а ее полный эквивалент в виде функции называется mysqli_query()
PM MAIL   Вверх
s0lman
Дата 11.2.2008, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



Цитата(sTa1kEr @ 11.2.2008,  17:43)

Возможно вы подключаете functions.php только на первом шаге?


А каким образом подключить functions.php на втором шаге после отправки данных?


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
GeneralElectric
Дата 11.2.2008, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



s0lman, а о какой тогда отсылке данных и о каких двух шагах идет речь?
В любом случае, копать, разумеется, в сторону многошаговости.
Как именно помочь отладке, я написал в самом первом сообщении.
PM MAIL   Вверх
s0lman
Дата 11.2.2008, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



Цитата(GeneralElectric @ 11.2.2008,  17:53)
s0lman, а о какой тогда отсылке данных и о каких двух шагах идет речь?
В любом случае, копать, разумеется, в сторону многошаговости.
Как именно помочь отладке, я написал в самом первом сообщении.

К functions.php я обращался, все отлично работает до одного момента.
Структура reg.php
Код
http://forum.vingrad.ru/forum/topic-195631.html
<?
if(!isset($_GET['step'])){ // здесь функция с functions.php без проблем вызывается
?>
<form name="form1" id="form1" method="post" action="reg.php?step=1">
...
хтмл код формы
...
<input type="submit" value="Register">
<?};
if($_GET['step']=="1"){ // а вот здесь функцию не видит: Fatal error: Call to undefined function: query() in z:\home\baza.com\www\reg.php on line 48

...
}



--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
GeneralElectric
Дата 11.2.2008, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



s0lman. То, что я тебе сейчас напишу, возможно, тебе не очень понравится, но это объективный факт.
Ты не получишь на форуме ответа на свой вопрос. Это вопрос не того типа.
Проблема твоя не связана ни с поведением, ни с настройками, ни с синтаксисом РНР. Она заключается исключительно в твоем коде. Как ты его написал - так он и работает. 
Ошибка у тебя, очевидно, логическая. Где-то ты файл не инклюдишь (кстати, я так и не понял твою реплику про "отлично работает". functions.php у тебя что-то выводит, когда step=1?) или функцию не определяешь. Имена файлов у тебя в переменных, значение которых ты не контролируешь.  А надо контролировать. 
Надо пошагово выполнять свои скрипты и смотреть - где пойдет не так, как ожидалось. Этот процесс называется отладкой. И это единственный способ найти ошибку.

Добавлено через 4 минуты и 24 секунды
Тот факт, что при разных значениях запроса ты утверждаешь, будто все исполняется при одном и том же вызове index.php должен заставить тебя задуматься - праильно ли ты представляешь себе работу веб-приложения.
поскольку если программа запускается при step=1 и без переменной step - это, очевидно, два вызова
PM MAIL   Вверх
Golda
Дата 12.2.2008, 00:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Цитата(s0lman @  11.2.2008,  22:22 Найти цитируемый пост)
<form name="form1" id="form1" method="post" action="reg.php?step=1">


Ну вот, в этом и проблема. После submit данные отправляются не в index.php, а непосредственно в reg.php, в котором functions.php не подлючена. Отсюда и ошибка. И как раз на шаге 1.

Это сообщение отредактировал(а) Golda - 12.2.2008, 00:10


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3662 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.