Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2008, 21:30   #1
Аббат_Кальне
 
Регистрация: 20.11.2008
Сообщений: 3
По умолчанию Проблема с PHP

Вот суть проблемы:
захожу на страницу без $id - всё работает, список уроков выводится
когда захожу на страницу с $id, например edit_lesson.php?id=1, вот эта форма
Код:
<form name="form1" method="post" action="add_lesson.php">
          <p>
            <label>Введите название урока<br>
            <input type="text" name="title" id="title">
              </label>
          </p>
          <p>
            <label>Введите краткое описание урока<br>
            <input type="text" name="meta_d" id="meta_d">
            </label>
          </p>
          <p>
            <label>Введите ключевые слова<br>
            <input type="text" name="meta_k" id="meta_k">
            </label>
          </p>
          <p>
            <label>Введите дату добавления урока<br>
            <input name="date" type="text" id="date" value="2008-11-19">
            </label>
          </p>
          <p>
            <label>Введите краткое описание урока с тэгами абзаца
            <textarea name="description" id="description" cols="50" rows="5"></textarea>
            </label>
          </p>
          <p>
            <label>Введите полный текст урока с тэгами
            <textarea name="text" id="text" cols="50" rows="20"></textarea>
</label>
          </p>
          <p>
            <label>Введите автора урока<br>
            <input type="text" name="author" id="author">
            </label>
          </p>
          <p>
            <label>
            <input type="submit" name="submit" id="submit" value="Занести урок в базу">
            </label>
          </p>
        </form>
которая должна выводится, не выводится, а выводится всё равно список уроков:
Код:
do
{
printf ("<p><a href='edit_lesson.php?id=%s'>%s</a></p>",$myrow["id"],$myrow["title"]);
}
while ($myrow = mysql_fetch_array ($result));
}
Вот страница полностью:
PHP код:
<?php 
if (!isset ($id))
{
$result mysql_query ("SELECT title,id FROM lessons");
$myrow mysql_fetch_array ($result);
do
{
printf ("<p><a href='edit_lesson.php?id=%s'>%s</a></p>",$myrow["id"],$myrow["title"]);
}
while (
$myrow mysql_fetch_array ($result));
}

else
{
print <<<HERE
<form name="form1" method="post" action="add_lesson.php">
          <p>
            <label>Введите название урока<br>
            <input type="text" name="title" id="title">
              </label>
          </p>
          <p>
            <label>Введите краткое описание урока<br>
            <input type="text" name="meta_d" id="meta_d">
            </label>
          </p>
          <p>
            <label>Введите ключевые слова<br>
            <input type="text" name="meta_k" id="meta_k">
            </label>
          </p>
          <p>
            <label>Введите дату добавления урока<br>
            <input name="date" type="text" id="date" value="2008-11-19">
            </label>
          </p>
          <p>
            <label>Введите краткое описание урока с тэгами абзаца
            <textarea name="description" id="description" cols="50" rows="5"></textarea>
            </label>
          </p>
          <p>
            <label>Введите полный текст урока с тэгами
            <textarea name="text" id="text" cols="50" rows="20"></textarea>
</label>
          </p>
          <p>
            <label>Введите автора урока<br>
            <input type="text" name="author" id="author">
            </label>
          </p>
          <p>
            <label>
            <input type="submit" name="submit" id="submit" value="Занести урок в базу">
            </label>
          </p>
        </form>
HERE;
}
?>
Аббат_Кальне вне форума Ответить с цитированием
Старый 20.11.2008, 21:47   #2
xPoint
программер
Пользователь
 
Аватар для xPoint
 
Регистрация: 11.11.2008
Сообщений: 14
По умолчанию

Это происходит потому что ваше id, переданное в качестве параметра будет находится в суперглобальном массиве $_GET. И проверять на isset стоит $_GET['id'], а не $id.
Дела идут хорошо лишь тогда, когда их подталкиваешь.
блог
xPoint вне форума Ответить с цитированием
Старый 20.11.2008, 21:48   #3
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

http://www.phpfaq.ru/globals
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 20.11.2008, 23:45   #4
Аббат_Кальне
 
Регистрация: 20.11.2008
Сообщений: 3
По умолчанию

Цитата:
Сообщение от xPoint Посмотреть сообщение
Это происходит потому что ваше id, переданное в качестве параметра будет находится в суперглобальном массиве $_GET. И проверять на isset стоит $_GET['id'], а не $id.
Спасибо большое Вам, я забыл просто, как правило я в начале приравниваю $_GET['id'] к $id, теперь видимо забыл.
Аббат_Кальне вне форума Ответить с цитированием
Старый 20.11.2008, 23:56   #5
bohdan4ik
Рэдиска
Форумчанин
 
Регистрация: 10.09.2008
Сообщений: 250
По умолчанию

Цитата:
Сообщение от Аббат_Кальне Посмотреть сообщение
Спасибо большое Вам, я забыл просто, как правило я в начале приравниваю $_GET['id'] к $id, теперь видимо забыл.
Смысл этого присваивания?
bohdan4ik вне форума Ответить с цитированием
Старый 21.11.2008, 01:21   #6
xPoint
программер
Пользователь
 
Аватар для xPoint
 
Регистрация: 11.11.2008
Сообщений: 14
По умолчанию

Цитата:
Сообщение от bohdan4ik Посмотреть сообщение
Смысл этого присваивания?
может фильтрация данных при присваивании совершается? Если так, то очень не плохой подход в этом случае.
Дела идут хорошо лишь тогда, когда их подталкиваешь.
блог
xPoint вне форума Ответить с цитированием
Старый 21.11.2008, 01:54   #7
bohdan4ik
Рэдиска
Форумчанин
 
Регистрация: 10.09.2008
Сообщений: 250
По умолчанию

Ну, судя по предыдущим сообщениям, ни о какой "фильтрации" речь не идет.
bohdan4ik вне форума Ответить с цитированием
Старый 21.11.2008, 02:45   #8
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Цитата:
Сообщение от xPoint Посмотреть сообщение
может фильтрация данных при присваивании совершается? Если так, то очень не плохой подход в этом случае.
IMHO даже легче фильтровать в суперглобальном массиве через foreach и т.д. Хотя вобщем-то там тоже присваивание есть, но оно ведь не создаёт новых переменных, а использует тот же суперглобальный массив.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 21.11.2008, 13:40   #9
xPoint
программер
Пользователь
 
Аватар для xPoint
 
Регистрация: 11.11.2008
Сообщений: 14
По умолчанию

Цитата:
Ну, судя по предыдущим сообщениям, ни о какой "фильтрации" речь не идет.
Мы не знаем точно о чем идет речь, поэтому утверждать наверняка не можем.
Цитата:
IMHO даже легче фильтровать в суперглобальном массиве через foreach и т.д
Да, так тоже удобно. Но только в том случае, когда есть глобальная точка доступа к приложению, в которой можно один раз прописать фильтрацию и больше не беспокоиться об этом. А фильтровать весь массив в каждом скрипте мне кажется не очень удобно: каждый раз писать цикл и т.д. Если в каком-то маленьком скрипте будет передана целочисленная переменная, то лучше сделать $id=intval($_GET['id']). К тому же $id быстрее написать чем $_GET['id']. А если ей присвоить "говорящее" название, которое скажет о сути переменной, то я думаю это наилучший вариант.
Дела идут хорошо лишь тогда, когда их подталкиваешь.
блог
xPoint вне форума Ответить с цитированием
Старый 21.11.2008, 17:21   #10
Аббат_Кальне
 
Регистрация: 20.11.2008
Сообщений: 3
По умолчанию

Я делаю всегда так, мне кажется так удобней из-за того, что некоторые хостинги не поддерживают глобальные переменные
PHP код:
if 
(
isset
(
$_POST['id'])
)
{
$id $_POST['id'];

также делаю со всема глобальными переменными, но иногда и не делаю зависит от файла, если много мест где нужно вписывать $_POST['id'], то канечно лучше один рас прировнять и всегда вводить $id.

Последний раз редактировалось Аббат_Кальне; 21.11.2008 в 17:24.
Аббат_Кальне вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
snmp+php странная проблема baarseek PHP 6 19.02.2009 14:02
Проблема с плагином по PHP silexz PHP 1 03.11.2008 22:45
PHP + MySql Проблема с базой и переменными. AgentVlad PHP 13 19.10.2008 01:26
проблема кодировки в Delphi for PHP 2.0 wayfarer Общие вопросы Delphi 1 15.09.2008 17:57