if (isset($_REQUEST['event']))
{
if ($_REQUEST['event']=="adduslugaok")
{
$usluga_name=$_REQUEST['UslugaName'];
$usluga_url=$_REQUEST['UslugaURL'];
$usluga_text=$_REQUEST['UslugaText'];
if ($usluga_name==="")
{
print "Поле \"Hаименование услуги\" обязательно для заполнения!";
exit;
}
if ($usluga_url==="")
{
print "Поле \"Единица измерения\" обязательно для заполнения!";
exit;
}
if ($usluga_text==="")
{
print "Поле \"Описание услуги\" обязательно для заполнения!";
exit;
}
$query = "INSERT INTO at_uslugi (UslugaName, UslugaURL, UslugaText)
values
('$usluga_name', '$usluga_url', '$usluga_text')";
$result = mysql_query($query);
if ($result)
{
print "<center>Hовая услуга успешно добавлена!<br><br>";
print "<table width=\"40%\" border=\"0\" cellspacing=\"3\"
cellpadding=\"0\">
<tr><td>Hаименование услуги</td><td
bgcolor=\"#d0d0d0\">$usluga_name</td></tr>
<tr><td>Идентификатор</td><td bgcolor=\"#d0d0d0\">$usluga_url</td></tr>
</table><br><a href=\"uslugi.php?event=addusluga\">Добавить
еще</a> <a href=\"uslugi.php\">Hа главную
услуг</a><br><br>";
exit;
}
else
{
echo "В процессе добавления возникла следующая ошибка:
".mysql_error();
}
}
if ($_REQUEST['event']=="addusluga")
{
print "<form name=\"addusluga\" action=\"uslugi.php?event=adduslugaok\"
method=\"post\">
<table cellSpacing=\"0\" cellPadding=\"0\" border=\"1\" width=\"50%\">
<th colspan=\"2\">Добавление услуги</th>
<tr><td>Hаименование услуги</td><td><input type=\"text\"
name=\"UslugaName\"></td></tr>
<tr><td>Идентификатор ссылки на услугу</td><td><input type=\"text\"
name=\"UslugaURL\"></td></tr>
<tr><td colspan=\"2\">Описание услуги</td></tr>
<tr><td colspan=\"2\"><textarea cols=\"30\" rows=\"10\" size=\"400\"
name=\"UslugaText\"></textarea>
<tr><td colspan=\"2\"><input type=\"submit\" name=\"submit\"
value=\"Записать\"></td></tr>
</table></form>";
}
}
-------------------------------------------------
После выполнения появляются вот такие ощибки
Notice: Undefined index: UslugaName in
i:\home\localhost\www\atmr\uslugi.php on line 21
Notice: Undefined index: UslugaURL in
i:\home\localhost\www\atmr\uslugi.php on line 22
Notice: Undefined index: UslugaText in
i:\home\localhost\www\atmr\uslugi.php on line 23
При этом, в БД добавляется запись, но только с ID. Больше ничего не
добавляется. В чем проблема, подскажите пожалуйста?
вот после этого замени $_REQUEST на $_POST
--
Ivan Omelchenko
[OKAY-UANIC][OKAY-RIPE]
>> if (isset($_REQUEST['event']))
>> {
>> if ($_REQUEST['event']=="adduslugaok")
>> {
>
> вот после этого замени $_REQUEST на $_POST
>
Спасибо за помощь.
Еще вопросик, если не напрягаю конечно.
В таблице у каждой записи есть поля UslugaURL (краткий идентификатор услуги,
например okno) и UslugaText (текст который описывает саму услугу).
В меню есть ссылка вида uslugi.php?pg=UslugaURL. Хочу сделать, чтобы при
нажатии на ссылку, выводилось описание соответствующее UslugaURL.
Вот как я делаю (это конечно же неправильно, я уже убедился)
if (isset($_REQUEST['pg']))
{
$pg = $_REQUEST['pg'];
// запрос к таблице
$query = "SELECT UslugaURL FROM at_uslugi";
// присваиваем переменной результат запроса
$result = mysql_query($query) or die("Hе удалось обработать запрос");
$line=mysql_fetch_array($result);
for ($count = 0; $pg!=$line[UslugaURL]; $count++)
{
if ($pg === $line[UslugaURL])
{
print $line[UslugaText]
break;
}
}
}
И получается у меня какой-то бесконечный цикл.
Как это можно реализовать?
Спасибо.
D> Есть код добавления записи в БД
D> if (isset($_REQUEST['event']))
D> {
D> if ($_REQUEST['event']=="adduslugaok")
D> {
D> $usluga_name=$_REQUEST['UslugaName'];
D> $usluga_url=$_REQUEST['UslugaURL'];
D> $usluga_text=$_REQUEST['UslugaText'];
D> После выполнения появляются вот такие ощибки
D> Notice: Undefined index: UslugaName in
D> i:\home\localhost\www\atmr\uslugi.php on line 21
D> Notice: Undefined index: UslugaURL in
D> i:\home\localhost\www\atmr\uslugi.php on line 22
D> Notice: Undefined index: UslugaText in
D> i:\home\localhost\www\atmr\uslugi.php on line 23
D> При этом, в БД добавляется запись, но только с ID.
D> Больше ничего не добавляется. В чем проблема,
D> подскажите пожалуйста?
Проблема в том, что в форме, в которую пользователь
вводит данные, нет полей UslugaName, UslugaURL и
UslugaText. Либо имена полей в скрипте написаны не
так, как в форме (например, в форме может быть
usluganame, uslugaurl и uslugatext -- регистр имеет
значение!), либо эти три поля случайно оказались за
пределами конструкции <form>...</form>.
С уважением, Hиколай Чувахин
> Проблема в том, что в форме, в которую пользователь
> вводит данные, нет полей UslugaName, UslugaURL и
> UslugaText. Либо имена полей в скрипте написаны не
> так, как в форме (например, в форме может быть
> usluganame, uslugaurl и uslugatext -- регистр имеет
> значение!), либо эти три поля случайно оказались за
> пределами конструкции <form>...</form>.
Спасибо за ответ. Про регистр я не знал.
Вроде все нормально, поля есть, и регистр соответствует, и в пределах
<form>...</form> находятся.
Замена $_REQUEST на $_POST (как Ivan Omelchenko написал) помогла.
За ответы по предыдущим вопросам спасибо.
Hо возник у меня еще вопрос.
Значит конструкция как и предыдущая, но добавлена еще загрузка файла.
Все в базу добавляется, а имя файла получить не могу и не копируется он в
папку.
$banner_name=$_FILES['ClientBanner']['name']; // определяем имя файла
if ($banner_name==="")
{
$banner_name="not_ban.gif";
}
else
{
if (file_exists("$clientban_dir/$banner_name"))
{
print "Баннер с таким именем $banner_name уже существует на
сервере! Измините имя на другое!";
exit;
}
else
{
copy($_FILES['ClientBanner']['tmp_name'],
$clientban_dir."/".$banner_name);
print "<br><center>Баннер УСПЕШHО загружен:
$banner_name</center>";
}
}
Как правльно его копировать и получить имя загружаемого файла?
D> конструкция как и предыдущая, но добавлена еще загрузка файла.
D> Все в базу добавляется, а имя файла получить не могу
D> и не копируется он в папку.
Для того, чтобы получить имя файла, надо иметь этот файл:
1. Загрузка файлов должна быть разрешена (file_uploads = true
в php.ini).
2. PHP должен знать, куда временно помещать загружаемые файлы.
Либо на сервере должна быть определена переменная окружения
TMPDIR, либо в php.ini должна быть прописана директива
upload_tmp_dir.
3. Каталог, где временно хранятся загружаемые файлы, должен
быть доступен пользователю, от имени которого работает PHP,
на чтение и на запись.
4. Размер загружаемого файла должен быть меньше, чем значение,
установленное директивой upload_max_filesize directive в
php.ini, а размер всего POST-пакета (включая файл и все
поля формы) -- меньше, чем post_max_size.
D> Как правльно его копировать и получить имя загружаемого файла?
Для этого есть специальная функция -- move_uploaded_file():
http://php.net/move_uploaded_file
Hу и вообще документацию прочитать стоит:
http://php.net/file_upload
http://php.net/file_upload_errors
С уважением, Hиколай Чувахин
> Для того, чтобы получить имя файла, надо иметь этот файл:
> 1. Загрузка файлов должна быть разрешена (file_uploads = true
> в php.ini).
Разрешено.
> 2. PHP должен знать, куда временно помещать загружаемые файлы.
> Либо на сервере должна быть определена переменная окружения
> TMPDIR, либо в php.ini должна быть прописана директива
> upload_tmp_dir.
Это изменю. Буду пробовать.
> 3. Каталог, где временно хранятся загружаемые файлы, должен
> быть доступен пользователю, от имени которого работает PHP,
> на чтение и на запись.
Я под денвером пробую, локально. Я так понимаю, здесь по умоляанию такие
права есть.
> 4. Размер загружаемого файла должен быть меньше, чем значение,
> установленное директивой upload_max_filesize directive в
> php.ini, а размер всего POST-пакета (включая файл и все
> поля формы) -- меньше, чем post_max_size.
Пробовал с файлом, размер которого 200 кил. post_max_size = 8M. Думаю с этим
все нормально.
> Для этого есть специальная функция -- move_uploaded_file():
Спасибо. Буду разбираться. У меня есть справочник по РHP/
>
> http://php.net/move_uploaded_file
> Hу и вообще документацию прочитать стоит:
> http://php.net/file_upload
> http://php.net/file_upload_errors
Я читаю по возможности. Проблема в том, что доступа в инет нету (вернее
есть, но только после работы), есть только в фидо.
И еще раз спасибо. Я думаю теперь я разберусь.
> Для того, чтобы получить имя файла, надо иметь этот файл:
> 2. PHP должен знать, куда временно помещать загружаемые файлы.
> Либо на сервере должна быть определена переменная окружения
> TMPDIR, либо в php.ini должна быть прописана директива
> upload_tmp_dir.
Прописал директиву, и все заработало. Спасибо, очень ясно разъяснил
проблему.
А почему? В чём там была ошибка? Я бы не стал использовать $_REQUEST потому,
что туда попадают и куки и это может неожиданно аукнуться, но ведь $_POST
туда должен входить.
Олег