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

Компьютерный форум 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

 

Аватара для Coutty

Кот Ти


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

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


В первом куске - напишите $display_block = ""; перед while. Видимо, к несуществующей переменной он добавлять строку не может.
Во втором, соответственно, $option_block=""; перед while.

По третьему что могу сказать:
1. Когда пишите echo $var_id; и т.д. кавычки можно не ставить.
2. Зачем вот это в цикле: while ($row = mysql_fetch_array($result)) ? Одна ведь строка выбирается. Избавьтесь от while.
3. Зачем заниматься такой ерундой: $vac_id = $row['vac_id']; , если можно потом просто написать echo $row['vac_id']; ?
4. Попробуйте вывести содержимое переменной $row: print_r($row); после mysql_fetch_array(). Посмотрим, что оно выдаёт.
5. Это мелочь, но всё же, не везде php-парсер принимает скрипт, если он заключён в short-тэги: <? ... ?>. Пишите лучше <?php ... ?>
В общем-то, всё это (кроме п.4) и к первому скрипту относится.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:02, 11-09-2008 | #2



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

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


Аватара для FoXLee

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


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

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


ясно, спасибо, буду пробовать когда освобожусь, позже отпишусь.

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


Аватара для FoXLee

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


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

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


Спасибо, с первым и вторым разобрался.

Теперь далее:

При таком коде, ошибка:
Parse error: syntax error, unexpected ':' in C:\apache\localhost\www\show_modvac.php on line 15
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);
$rowprint_r($row);
?>
<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>

При изменении echo $vac_name на echo $row['vac_name'] - поле ввода просто пустое, без ошибок, но и без инфы из БД.

Как я уже говорил, поле "Номер вакансии" (vac_id) он показывает правильно, может из-за того, что там только цифры, а с текстом он не может подружиться?

Отправлено: 17:25, 11-09-2008 | #4


Вредитель


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

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


FoXLee, а что это за странная команда?
PHP код: Выделить весь код

$rowprint_r($row); 


-------
Все сказаное является только моим личным мнением.


Отправлено: 17:34, 11-09-2008 | #5


Аватара для FoXLee

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


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

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


Если сделать так, то разницы не видно:
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);
print_r($row);
?>
<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>

т.е. Что есть команда print_r($row); что её нету - нет новых ошибок

Вот картинка, чтобы понятнее было о чем речь


Отправлено: 17:35, 11-09-2008 | #6


Аватара для Coutty

Кот Ти


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

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


Цитата FoXLee:
т.е. Что есть команда print_r($row); что её нету - нет новых ошибок »
Смотрите в HTML, а не в рендеренной странице. Оно же выводится перед <html>, а значит в браузере видно не будет.
Ну или вставьте print_r($row); внутри <body>, чтобы увидеть вывод прямо в браузере. Для удобства можно окружить тэгами <pre>:
PHP код: Выделить весь код

...

<body><pre>
<?php
print_r
($row);
?>
</pre>
...

Должно выводится содержание массива $row.

Отправлено: 18:05, 11-09-2008 | #7


Аватара для FoXLee

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


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

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


Все равно ничего нету, может это и есть ответ?
PHP код: Выделить весь код

<html>
    <
head>
        <
title>Управление вакансиямиИзменение вакансии</title>
    </
head>
    <
body>
    ...
<
body><pre>
</
pre>
...
        <
h1>Управление вакансиями</h1>

        <
h2><em>Изменение вакансии</em></h2>
        <
FORM METHOD="post" ACTION="do_modvac.php">
            <
INPUT TYPE="hidden" name="vac_id" value="3">
            <
P><STRONG>Номер вакансии :</STRONG><BR>
            <
INPUT TYPE="text" NAME="va.......... 


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


Аватара для Coutty

Кот Ти


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

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


Хм... Нет, это не тот ответ) Похоже, что $row просто не существует. Может быть ошибка в SQL-запросе?
Теперь давайте сделаем так:
PHP код: Выделить весь код

$sql "SELECT vac_id, vac_name, age, formation, exp, duties, conditions, contacts, date

FROM $table_name
WHERE vac_id = \"vac_id\"
"
;
echo 
$sql

Посмотрим какой тут запрос формируется.
Может быть не vac_id = \"vac_id\", а vac_id = \"$vac_id\" надо? (кстати, откуда эта vac_id берётся? Из GET или POST-запроса? Тогда пишите $_GET['vac_id'] или $_POST['vac_id'].
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:24, 11-09-2008 | #9


Ветеран


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

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


Что-то я запамятовал, но мне кажется что идет путаница между полями в MySQL и переменными в PHP. После запроса к базе надо присваивать полученные значения переменным.

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


Отправлено: 01:30, 12-09-2008 | #10



Компьютерный форум 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




 
Переход