Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Ошибки "Undefined variable"

Ответить
Настройки темы
[решено] Ошибки "Undefined variable"

Аватара для FoXLee

Новый участник


Сообщения: 20
Благодарности: 1

Профиль | Отправить PM | Цитировать


Здравствуйте. Сделал небольшой набор кодов для того, чтобы можно было добавлять, смотреть, обновлять и удалять данные из таблиц, код работает, но в некоторых местах выдает уведомление: "Undefined variable" и кое-где не работает как надо.

Ошибка: Notice: Undefined variable: display_block in C:\apache\localhost\www\sel_bydate.php on line 31

PHP код: Выделить весь код

<?
$db_name 
"GoDB";
$table_name "vacansies";
$connection = @mysql_connect("localhost""root""qwerty")
or die(
"Невозможно подключиться MySQL.");
$db = @mysql_select_db ($db_name$connection)
or die (
"Невозможно выбрать базу данных.");
$sql "SELECT * FROM $table_name ORDER BY date DESC";
$result = @mysql_query($sql$connection)
or die(
"Невозможно выполнить запрос.");

while (
$row mysql_fetch_array($result)) {

$vac_id $row['vac_id'];
$vac_name $row['vac_name'];
$age $row['age'];
$formation $row['formation'];
$exp $row['exp'];
$duties $row['duties'];
$conditions $row['conditions'];
$contacts $row['contacts'];
$date $row['date'];

$display_block .= "
<p><strong>$vac_name</strong><br>
<strong>Требования: </strong> Возраст: $age $formation $exp<br>
<strong>Обязанности: </strong> $duties<br>
<strong>Условия: </strong> $conditions $contacts<br>
<strong>Дата добавления вакансии: </strong> $date
</p>
"
;


}

?>
<html>
<head>
<title>Список Вакансий (сортировка по номеру)</title>
</head>
<body>
<h1>Список Вакансий</h1>
<?
echo "$display_block";
?>
<p><a href ="index.php">Назад</a></p>
</body>
</html>

Ошибка: Notice: Undefined variable: option_block in C:\apache\localhost\www\pick_modvac.php on line 15

PHP код: Выделить весь код

<?
$db_name 
"GoDB";
$table_name "vacansies";
$connection = @mysql_connect("localhost""root""qwerty")
or die(
"Невозможно подключиться MySQL.");
$db = @mysql_select_db ($db_name$connection)
or die (
"Невозможно выбрать базу данных.");
$sql "SELECT vac_id, vac_name, date FROM $table_name ORDER BY date";
$result = @mysql_query($sql$connection)
or die(
"Невозможно выполнить запрос.");
while (
$row mysql_fetch_array($result)) {
    
$vac_id $row['vac_id'];
    
$vac_name $row['vac_name'];
    
$date $row['date'];
    
$option_block .= "<option value=\"$vac_id\">$vac_name, $date</option>";
}
$display_block "
<FORM METHOD=\"post\" ACTION=\"show_modvac.php\">
<p><strong>Вакансия:</strong>
<select name=\"vac_id\">
$option_block
</select>
<p><INPUT TYPE=\"SUBMIT\" NAME=\"submit\" VALUE=\"Изменить\"></P>
</form>
"
;
?>
<html>
    <head>
        <title>Управление вакансиями: Изменение вакансии</title>
    </head>
    <body>
        <h1>Управление вакансиями</h1>
        <h2><em>Изменение вакансии - Выбор из списка</em></h2>
        <p>Выберите вакансию из списка, чтобы изменить записанную информацию</p>
        <? echo "$display_block"?>
        <p><a href="index.php">Возврат к главному меню</a></p>
    </body>
</html>

Ну и самый главный гемор, который весь вечер вчерашний пытался вылечить (поскольку только он мешает нормальной работе "системы управления БД"):
На странице при открытии, в полях ввода должны уже находиться данные, которые хранятся в базе данных для выбранной вакансии. Чтобы было удобно обновлять информацию, не вбивая её всю заново. При открытии вместо данных из базы данных в полях ввода ошибка:
<br /> <b>Notice</b>: Undefined variable: vac_name in <b>C:\apache\localhost\www\show_modvac.php</b> on line <b>38</b><br />

в каждом поле соответственно вместо "vac_name" и линии другие переменные. НО в первом поле (vac_id - "номер вакансии") есть цифра 1 - т.е. первое поле заполнилось как надо. Далее код этой страницы:

PHP код: Выделить весь код

<?
$db_name 
"GoBD";
$table_name "vacansies";
$connection = @mysql_connect("localhost""root""qwerty")
or die(
"Невозможно подключиться MySQL.");
$db = @mysql_select_db ($db_name$connection)
or die (
"Невозможно выбрать базу данных.");
$sql "SELECT vac_id, vac_name, age, formation, exp, duties, conditions, contacts, date
FROM $table_name
WHERE vac_id = \"vac_id\"
"
;
$result = @mysql_query($sql$connection)
or die(
"Невозможно выполнить запрос.");
while (
$row mysql_fetch_array($result)) {
    
$vac_id $row['vac_id'];
    
$vac_name $row['vac_name'];
    
$age $row['age'];
    
$formation $row['formation'];
    
$exp $row['exp'];
    
$duties $row['duties'];
    
$conditions $row['conditions'];
    
$contacts $row['contacts'];
    
$date $row['date'];
}
?>
<html>
    <head>
        <title>Управление вакансиями: Изменение вакансии</title>
    </head>
    <body>
        <h1>Управление вакансиями</h1>
        <h2><em>Изменение вакансии</em></h2>
        <FORM METHOD="post" ACTION="do_modvac.php">
            <INPUT TYPE="hidden" name="vac_id" value="<? echo "$vac_id"?>">
            <P><STRONG>Номер вакансии :</STRONG><BR>
            <INPUT TYPE="text" NAME="vac_id" VALUE="<? echo "$vac_id"?>" SIZE=5 MAXLENGHT=5></p>
            <P><STRONG>Должность :</STRONG><BR>
            <INPUT TYPE="text" NAME="vac_name" VALUE="<? echo "$vac_name"?>" SIZE=100 MAXLENGHT=150></p>
            <P><STRONG>Возраст :</STRONG><BR>
            <INPUT TYPE="text" NAME="age" VALUE="<? echo "$age"?>" SIZE=20 MAXLENGTH=100</p>
            <P><STRONG>Образование :</STRONG><BR>
            <INPUT TYPE="text" NAME="formation" VALUE="<? echo "$formation"?>" SIZE=100 MAXLENGTH=150</p>
            <P><STRONG>Опыт работы :</STRONG><BR>
            <INPUT TYPE="text" NAME="exp" VALUE="<? echo "$exp"?>" SIZE=100 MAXLENGTH=150</p>
            <P><STRONG>Обязанности :</STRONG><BR>
            <INPUT TYPE="text" NAME="duties" VALUE="<? echo "$duties"?>" SIZE=100 MAXLENGTH=150</p>
            <P><STRONG>Условия :</STRONG><BR>
            <INPUT TYPE="text" NAME="conditions" VALUE="<? echo "$conditions"?>" SIZE=100 MAXLENGTH=150</p>
            <P><STRONG>Контакты :</STRONG><BR>
            <INPUT TYPE="text" NAME="contacts" VALUE="<? echo "$contacts"?>" SIZE=100 MAXLENGTH=150</p>
            <P><STRONG>Дата добавления вакансии (ГГГГ-ММ-ДД) :</STRONG><BR>
            <INPUT TYPE="text" NAME="date" VALUE="<? echo "$date"?>" SIZE=10 MAXLENGTH=10</p>
            <P><INPUT TYPE="SUBMIT" NAME="submit" VALUE="Обновить"></P>
            <p><a href="pick_modvac.php">Назад</a></p>
            <p><a href="index.php">Возврат к главному меню</a></p>
        </FORM>
    </BODY>
</HTML>


Отправлено: 15:14, 11-09-2008

 

Аватара для FoXLee

Новый участник


Сообщения: 20
Благодарности: 1

Профиль | Отправить PM | Цитировать


Coutty, Вы были правы, $row не существовал из-за vac_id = \"vac_id\", вместо vac_id = \"$vac_id\" . Я заменил echo $vac_name на echo $row['vac_name'] и все заполнилось без проблем, ну и убрал из кода вывод запроса sql и отображение $row

Рабочий код:
PHP код: Выделить весь код

<?
$db_name 
"jobnav";
$table_name "vacansies";
$connection = @mysql_connect("localhost""root""qwepoi")
or die(
"Невозможно подключиться MySQL.");
$db = @mysql_select_db ($db_name$connection)
or die (
"Невозможно выбрать базу данных.");
$sql "SELECT vac_id, vac_name, age, formation, exp, duties, conditions, contacts, date
FROM $table_name
WHERE vac_id = \"$vac_id\"
"
;
$result = @mysql_query($sql$connection)
or die(
"Невозможно выполнить запрос.");
$row mysql_fetch_array($result);
?>
<html>
    <head>
        <title>Управление вакансиями: Изменение вакансии</title>
    </head>
    <body>
        <h1>Управление вакансиями</h1>
        <h2><em>Изменение вакансии</em></h2>
        <FORM METHOD="post" ACTION="do_modvac.php">
            <INPUT TYPE="hidden" name="vac_id" value="<? echo $vac_id?>">
            <P><STRONG>Номер вакансии :</STRONG><BR>
            <INPUT TYPE="text" NAME="vac_id" VALUE="<? echo $vac_id?>" SIZE=5 MAXLENGHT=5></p>
            <P><STRONG>Должность :</STRONG><BR>
            <INPUT TYPE="text" NAME="vac_name" VALUE="<? echo $row['vac_name']; ?>" SIZE=100 MAXLENGHT=150></p>
            <P><STRONG>Возраст :</STRONG><BR>
            <INPUT TYPE="text" NAME="age" VALUE="<? echo $row['age']; ?>" SIZE=20 MAXLENGTH=100</p>
            <P><STRONG>Образование :</STRONG><BR>
            <INPUT TYPE="text" NAME="formation" VALUE="<? echo $row['formation']; ?>" SIZE=100 MAXLENGTH=150</p>
            <P><STRONG>Опыт работы :</STRONG><BR>
            <INPUT TYPE="text" NAME="exp" VALUE="<? echo $row['exp']; ?>" SIZE=100 MAXLENGTH=150</p>
            <P><STRONG>Обязанности :</STRONG><BR>
            <INPUT TYPE="text" NAME="duties" VALUE="<? echo $row['duties']; ?>" SIZE=100 MAXLENGTH=150</p>
            <P><STRONG>Условия :</STRONG><BR>
            <INPUT TYPE="text" NAME="conditions" VALUE="<? echo $row['conditions']; ?>" SIZE=100 MAXLENGTH=150</p>
            <P><STRONG>Контакты :</STRONG><BR>
            <INPUT TYPE="text" NAME="contacts" VALUE="<? echo $row['contacts']; ?>" SIZE=100 MAXLENGTH=150</p>
            <P><STRONG>Дата добавления вакансии (ГГГГ-ММ-ДД) :</STRONG><BR>
            <INPUT TYPE="text" NAME="date" VALUE="<? echo $row['date']; ?>" SIZE=10 MAXLENGTH=10</p>
            <P><INPUT TYPE="SUBMIT" NAME="submit" VALUE="Обновить"></P>
            <p><a href="pick_modvac.php">Назад</a></p>
            <p><a href="index.php">Возврат к главному меню</a></p>
        </FORM>
    </BODY>
</HTML>

Всем спасибо.

ой, забыл изменить $vac_id на echo $row['vac_id'] в html в hidden и text, но и с "$vac_id" - тоже отображается правильно. Странно.

Работает во всех полях как $vac_id так и $row['vac_id'], вся проблема была в недостающем знаке $ в WHERE vac_id = \"$vac_id\"

Отправлено: 14:15, 12-09-2008 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Цитата FoXLee:
ой, забыл изменить $vac_id на echo $row['vac_id'] в html в hidden и text, но и с "$vac_id" - тоже отображается правильно. Странно. »
Включен параметр register_globals в php.ini? Похоже на то.
Тогда этот $vac_id берётся из $_GET[vac_id] или $_POST[vac_id] (в общем, из $_QUERY[vac_id]), а не из $row.

И ещё - зачем $vac_id писать и в hidden-поле, и в text? Name у переменной одно и тоже. Можно убрать hidden.

Отправлено: 18:36, 12-09-2008 | #12


Аватара для FoXLee

Новый участник


Сообщения: 20
Благодарности: 1

Профиль | Отправить PM | Цитировать


register_globals выключен

Отправлено: 18:52, 12-09-2008 | #13


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


Цитата FoXLee:
ой, забыл изменить $vac_id на echo $row['vac_id'] в html в hidden и text, но и с "$vac_id" - тоже отображается правильно. Странно. »
Правильно только потому, что $vac_id и $row['vac_id'] в данном случае равны.

echo $_POST[vac_id] - что покажет?

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Отправлено: 18:58, 12-09-2008 | #14



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Ошибки "Undefined variable"

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - [решено] Как удалить папку "Моя музыка","Мои Картинки", "Мое видео"? verdix Microsoft Windows 2000/XP 3 03-10-2009 23:46
Debian/Ubuntu - [решено] Пропали кнопки "свернуть","закрыть","во весь екран" в папках Alex.sys Общий по Linux 5 02-04-2009 11:13
[решено] Notice: Undefined variable: _SESSION Artem-Samsung Вебмастеру 1 05-09-2008 22:00
Запретить/удалить пункт "Programs" ("Программы") из меню кнопки "Start" ("Пуск") submaster Microsoft Windows NT/2000/2003 5 13-09-2006 12:29




 
Переход