Помощь - Поиск - Пользователи - Календарь
Полная версия: передача переменной из формы
Форум на все случаи жизни > Программирование, скрипты, графика, WEB-строительство > WEB дизайн и прикладное программирование
ScorpionX
Я новичок в php и возможно мой вопрос покажется глупым.
Например,
в форме я переменной $name присваиваю значение "2", передача просиходит в
файл test.php. Как мне сделать, чтобы после отправи в ФАЙЛе test до повторного изменения она ввсегда оставалась такой же(2), пока я её снова не поменяю...
Я хочу, чтобы когда я эту переменную ввел, всегда она оставалась.
В index.php я пишу include(./test.php). Мне надо, чтобы в index.php была видна...
Надеюсь меня поняли)))

cranky.gif
lunatikov
Если я тебя правильно понял, то речь идет о глобальных переменных. Попробуй в test.php вставить оператор global $name; , и тогда в index.php можно этой переменной пользоваться, до тех пор пока она опять не изменится в test.php .
ScorpionX
'lunatikov'


Да Вы меня правильно поняли, вот только я не помойму, как вставить оператор? Куда и как?
lunatikov
Поскольку, по сути, информации о проблеме никакой, смею предположить следующее: в test имеется некая процедура func, в которой используется/задаётся $name; необходимо, чтобы $name было доступно и в index.php . Для этого в test.php пишем следующее:
Код
<?
function func()
  {
    global $name;
    ...
    $name = 5; // изменяем глобальную переменную
    ...
  }
?>

В index.php можем её проверить:
Код
<?
  func();
  echo $name;
?>

Если что-то не так, тогда уточни структуру index.php и test.php . И используешь-ли ты функции?
ScorpionX
нет, так не пракит, объясню структуру.
В index.php у меня только вот это
Код

<?PHP
include("./test.php");
?>

В test.php у меня таблица, а её значения передаются мной из формы
admin.php
Покажу на примере:
в admin.php
Код
<form action=\"test.php\" method=\"post\">
<select name=name>
<option value=\"текст1\">текст1</option>
<option value=\"текст2\">текст2</option>
<option value=\"текст3\">текст3</option>
</select><br>

в test.php
Код
<table>
<tr>
<td>слово
<td><php echo $name <?>
<td>слово
<td>слово
</tr>
</table>

Вот, когда отправляю данные из формы(admin.php) в test.php, у меня страница переходит автоматически на test.php и все работает, а стоит перезайти в test.php, она пропадает, и вот вопрос, как сделать, чтобы значение переменной $name всегда оставалось
А в index.php вообще ничего не появляется
VitS
Ну, и чего удивительного, или, непонятного?
Надо уяснить для себя несколько простых вещей:
1. Что такое GET и POST запросы.
2. Как их обрабатывать на php, желательно, с опцией в php.ini:
register global=off
(по умолчанию сейчас у большинства хостеров, особенно у тех, кто следит за обновлениями модулей пхп и мускула, и кстати, ценит собственную безопасность).

Практический совет:
Поставьте себе на комп Денвер: www.denwer.ru
Задавайте вопросы самому себе, путем написания php-скриптов, тестируя их на локальном полноценном веб-сайте. Если есть мозг - то должно получИтся.

Если не получилось - лучше поискать программиста, а вам - впустую не растрачивать время на освоение ненужной профессии, вполне возможно, что Вы - на самом деле - блестящий организатор, и таким образом, просто впустую тратите время. Может быть, еще какой специалист, я, право, не знаю.

С уважением.
lunatikov
ScorpionX
В твоём случае надо сделать так:
в admin.php в самое начало вставляем
Код
<?php
session_start();
session_unregister  ("name");
?>

а в test.php в самое начало вставляем
Код
<?php
session_register("name");
?>
ScorpionX
VitS Я не пытаюсь стать програмистом, я в свободное время пытаюсь чем нибудь занятся, во и решил, что нибудь на php сделать...столкнулся проблемой, с которой я надеялся опытный програмист без проблем справится...
lunatikov Спасибо, поробую Вашим вариантом!
ScorpionX
Попробовал, вот такие ошибки!

в admin.php

Код
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at z:\home\****\www\admin.php:13) in z:\home\******\www\admin.php on line 16

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at z:\home\******\www\admin.php:13) in z:\home\*******\www\admin.php on line 16


и в test.php

Код
Warning: session_register(): Cannot send session cache limiter - headers already sent (output started at z:\home\*****\www\table.php:5) in z:\home\*******\www\table.php on line 6
Afim
ScorpionX
Вставки, приведённые lunatikov-ым, должны быть самыми первыми строками в твоих прогах. Т.е. стоять перед всеми твоими операторами, включая <HEAD>.
ScorpionX
Огромное всем спасибо, кто мне помогал...
Все зароботало...
Кстати, я эту тему поднимал в форумах 10, тоже крупных, как этот...
И только здесь меня поняли и помогли!
Сайт уже в избранном)))
ScorpionX
только у меня вопрос возник, эти переменные в сессии на долго будут сохранятся?
А то мне в другом форуме сказали, что тольок 20 минут(((
Afim
Ну, это можешь проверить и сам опытным путём. Или посмотри в учебниках по PHP, что там пишут про сессии.
lunatikov
ScorpionX
В файле php.ini есть директива:
Код
session.gc_maxlifetime=1440

в которой 1440 и есть промежуток времени (в секундах), по истечении которого данные сеанса считаются недействительными и уничтожаются. Отсчет начинается с момента последнего обращения пользователя в текущем сеансе. А 1440 сек - это будет 24 мин! Само значение этого параметра, естественно, устанавливается провайдером.
ScorpionX
А есть ли еще способы сохранения без использования базы данных
lunatikov
Можно предложить ещё два варианта:
1. Это использовать Cookies, т.е. хранить данные на стороне клиента в виде пары "имя-значение". При этом срок годности cookies ты устанавливаешь сам. Проблема может заключаться в том, что некоторые пользователи отключают cookie в настройках своих браузеров.
2. Если нет возможности использовать базу данных, то данные можно хранить в обычных файлах на сервере. Но и здесь возникнут проблемы как с идентификафией файлов, так и с организацией одновременного доступа к ним.
ScorpionX
lunatikov Спасибо, я все, понял)))
Модератор может закрыть топик
..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.

Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.

Warning: require_once(/var/www/bestfil1/public_html/setlinks_0d98c/slsimple.php) [function.require-once]: failed to open stream: No such file or directory in /var/www/bestfil1/public_html/forums/lofiversion/index.php on line 355