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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вновь о переменных в сессии 
:(
    Опции темы
Контур
Дата 18.9.2005, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Может я что-то не понимаю, или не вижу, но по-моему если в приведенном ниже модуле жать на определенные кнопки, то должны подгружаться соответствующие модули, что не происходит. Кто-нибудь может сказат почему?

Код

<?
session_start();
if (!isset($_session['table'])) $_session['table']="news";
if (!isset($_session['oper'])) $_session['oper']="add";

$title = "Редактирование таблицы \"".$_session['table']."\"";
include ("../var/sky.txt");
?>

<!--Начало контента-->

<table border="0" width="100%" height="100%"><tr><td align="left" valign="top" width="160">
    <form action="../admin/index.php" method="post">
    <fieldset style="border:1 solid #333333; width: 150; background:#000000;  font-size: 8pt">
    <legend class="text">Выбрать таблицу</legend><br>
    <center>
    <input type="submit" name="$_session['table']" value="news" class="bord" style="width: 140"><br><br>
    <input type="submit" name="$_session['table']" value="job" class="bord" style="width: 140"><br><br>
    <input type="submit" name="$_session['table']" value="klients" class="bord" style="width: 140"><br><br>
    <input type="submit" name="$_session['table']" value="urls" class="bord" style="width: 140"><br><br>
    </center>
    </fieldset>
    </form>
</td><td align="center" valign="top">

<?
switch ($_session['table'])
        {
        case 'klients': include ("../admin/klientsadd.php"); break;
        case 'job': include ("../admin/jobadd.php"); break;
        case 'urls': include ("../admin/urlsadd.php"); break;
        default : include ("../admin/newsadd.php"); break;
        }
?>
</td></tr></table>

<!--Конец контента-->
<?
include ("../var/earth.txt");
?>

PM MAIL   Вверх
[xoodo]
Дата 18.9.2005, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 1
Всего: 4



Код

<input type="submit" name="$_session['table']" value="news" class="bord" style="width: 140">

попробуй переделай на
Код

<input type="submit" name="$_session['table']['news']" value="news" class="bord" style="width: 140">

И проверяй не содержание $_SESSION['table'], а заданы ли $_SESSION['table']['news'] и т.п.

php.net -> functions -> isset()

А лучше дай инпутам нормальные имена, типа news, clients, ..., а во втором скрипте проверяй уже $_POST:
Код

if (isset($_POST['news']))
{
    include ("../admin/newsadd.php");
}
elseif(isset($_POST['clients']))
{
    //...
}
//...

Не исключаю, что есть более элегантные решения.
PM   Вверх
alligator
Дата 18.9.2005, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Для начала кто будет теги заключат в пхпешные а ?
Код

 <input type="submit" name="<?$_session['table'];?>" value="news" class="bord" style="width: 140">


PM MAIL   Вверх
[xoodo]
Дата 18.9.2005, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 1
Всего: 4



Поигрался ещё с твоим примером. Так в сессию переменные не записывают. Форма передаёт данные методом ПОСТ, поэтому в принимающем скрипте получается, что к переменным надо обращаться вроде $_POST[$_SESSION['table']]. А применительно к superglobals это BIG NO-NO. Юзай мой второй метод, где про ПОСТ и нормальные имена.
PM   Вверх
PARROT
Дата 18.9.2005, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Контур:
Не брезгуй пользоваться тегами
Код
КОД
для повышения читабельности своего текста/кода. smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Контур
Дата 18.9.2005, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Разбирался с подкючением файлов и понял, что основная проблема в том, что не сохраняются переменные сесии.
Ключевые строки:

Код

if (isset($_POST['file'])) $_session['table']=$_POST['file'];
if (!isset($_session['table'])) $_session['table']="news";

Должно работать и работает при первом подключении и переходе по кнопкам:

<table border="0" width="100%" height="100%"><tr><td align="left" valign="top" width="160">
    <form action="../admin/index.php" method="post">
    <fieldset style="border:1 solid #333333; width: 150; background:#000000;  font-size: 8pt">
    <legend class="text">Выбрать таблицу</legend><br>
    <center>
    <input type="submit" name="file" value="news" class="bord" style="width: 140"><br><br>
    <input type="submit" name="file" value="job" class="bord" style="width: 140"><br><br>
    <input type="submit" name="file" value="klients" class="bord" style="width: 140"><br><br>
    <input type="submit" name="file" value="urls" class="bord" style="width: 140"><br><br>
    </center>
    </fieldset>
    </form>
</td><td align="center" valign="top">

<?
switch ($_session['table'])
        {
        case 'klients': include ("../admin/klientsadd.php"); break;
        case 'job': include ("../admin/jobadd.php"); break;
        case 'urls': include ("../admin/urlsadd.php"); break;
        default : include ("../admin/newsadd.php"); break;
        }
?>

но стоит только передать данные из формы не содержащей $POST['file'], как $_session['table'] принимает значение "news". ТАкое впечатление, что переменные сессии не сохраняются, какие мысли?
PM MAIL   Вверх
IZ@TOP
Дата 18.9.2005, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



А что это за массив такой $_session? smile откуда ты взял что данные сессий хранятся в нем? С таким же успехом ты можешь юзать и POST переменные через несуществующий массив $_post.

PS И пользуйся тегами [ code=php ] ... [ /code ] плиз.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
[xoodo]
Дата 18.9.2005, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 1
Всего: 4



Цитата
но стоит только передать данные из формы не содержащей $POST['file'], как $_session['table'] принимает значение "news". ТАкое впечатление, что переменные сессии не сохраняются, какие мысли?

Логично, сам на свой вопрос и ответил. Они тогда и не должны сохраняться. С переменными сессии имеем дело тут:
Код

if (isset($_POST['file'])) $_SESSION['table']=$_POST['file'];

Вот в $_SESSION['table'] и записывается значение $_POST['file'] при наличии последнего. А наличие последнего -- это только если данные отправлены из формы, точнее, из инпута с именем file, методом POST.

Твой последний вариант кажется работоспособным.

Да, как гражданин IZ@TOP верно заметил: $_SESSION -- это вовсе не $_session. Сначала надо это исправить.

Это сообщение отредактировал(а) [xoodo] - 18.9.2005, 18:52
PM   Вверх
Контур
Дата 18.9.2005, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ок. Попробую исправить.
В буд. буду использовать [ code=php ] ... [ /code ]
Добавлено @ 19:36
Огромное СПАСИБО всем. Проблема была в
Цитата
, 18.9.2005,  18:46]$_SESSION -- это вовсе не $_session


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0575 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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