|
|
|
| Здравствуйте, умы нашей великой страны!
Проблема в следующем:
Есть страничка с мета-тегом рефреш, как передать переменную с этой странички на ту на которую этот рефреш переходит?
Кто быстрей ответит, тот победил! Ура! =)))) | |
|
|
|
|
|
|
|
для: SilentChild
(22.04.2008 в 14:30)
| | Вот так вот, примерно:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<meta http-equiv="refresh" content="0; url=add_news.php">
</head>
</html>
|
куда здесь можно переменную впиндюрить чтобы она передалась на страницу add_news.php? | |
|
|
|
|
|
|
|
для: SilentChild
(22.04.2008 в 14:30)
| | добавить в урл: ?var1=param1&var2=param2... (вне конкурса). | |
|
|
|
|
|
|
|
для: sim5
(22.04.2008 в 14:33)
| | А как получить ее на следующей странице? Так: ? | |
|
|
|
|
|
|
|
для: SilentChild
(22.04.2008 в 14:42)
| | Да. | |
|
|
|
|
|
|
|
для: sim5
(22.04.2008 в 14:43)
| | А если страница рефрешит на саму себя, и мне нужно сделать какое либо действие только когда переменные отправлены (тоесть когда срефрешено уже), то как условие поставить для выполнения того что я хочу? | |
|
|
|
|
|
|
|
для: SilentChild
(22.04.2008 в 14:47)
| | Ну тогда незачем вам мета теги отправлять, а воспользуйтесь header. После того как определите эту переменную, отправляйте заголовок, а получение этой переменной проверяйте: if (isset($_GET['var'])) //ваше действие. | |
|
|
|
|
|
|
|
для: SilentChild
(22.04.2008 в 14:47)
| | А теперь ещё раз и по-русски) | |
|
|
|
|
|
|
|
для: Valick
(22.04.2008 в 14:54)
| | Неееет, мне без мета-тегов нельзя, ведь нужно чтобы сценарий перешел автоматически на самого себя после того как выполнит действие.
Например надо добавить данные в базу и срефрешить на этот же код, но заставить выполнять ту его часть, которая отобрафает что данные успешно добавлены! | |
|
|
|
|
|
|
|
для: SilentChild
(22.04.2008 в 15:03)
| | Если эти действия ничего не выводят в браузер, то хедер тож пойдёт.
Больше информации (какие действия, условие перехода) и ответы не заставят себя ждать. | |
|
|
|
|
|
|
|
для: Valick
(22.04.2008 в 15:05)
| | АХТУНГ! Растолковываю:
1. Есть сценарий с формой;
2. Этот же сценарий обрабатывает добавление в базу данных значений введенных в форму;
3. Когда обработка добавления значений в базу заканчивается, то сценарий должен срефрешиться сам на себя, но в другую часть кода, которая смотрит ---- Агааа, срефрешился, тогда пора вывести сообщение что данные в базу добавлены! | |
|
|
|
|
|
|
|
для: SilentChild
(22.04.2008 в 15:15)
| | Ахтунг! А я вам думаете о чем-то другом говорю? Что мета тегом передать, что через header, разницы нет. Собственно вы просто себе проблему создаете, а все просто.) | |
|
|
|
|
|
|
|
для: SilentChild
(22.04.2008 в 15:03)
| | А я вам не предлагаю в header указывать URL Белого Дома в США. )
<?
//тут работа вашего скрипта, на каком-то этапе вы определись, что то-то надо передать
//что не знаю, может результат обработки данных из формы, например
$a = isset($_POST['var']) ? 1 : -1;
//передаем это в заголовке и переходим на самого себя
header('location: main.php?my='.$a);
//а это проверка был ли переход с получением переменной my
if ($_GET['my']) //что-то делаем и все на этой же странице.
?>
|
PS. Единственно, это, я бы обработку переменной полученной после перенапрвления поставил в начале скрипта, ну это собсвтенно дело вкуса, если только логика не требует иного. | |
|
|
|
|
|
|
|
для: sim5
(22.04.2008 в 15:10)
| | А header() где писать между <head></head>?
И что значат: а то чет я их не использовал никогда? | |
|
|
|
|
|
|
|
для: SilentChild
(22.04.2008 в 15:24)
| | Нет, это РНР отправляет заголовок, а не HTML мета данные. Я же вам написал, разве там есть HTML включения?
PS. Передача заголовков, должна производиться до любой выдачи в браузер. Не соблюдение этого распространенная ошибка. Ну если не понимаете header, передавайте через метатег, механизм тот же самый будет - проверка в сценарии этой же страницы получения некой переменной. | |
|
|
|
|
|
|
|
для: sim5
(22.04.2008 в 15:26)
| | И что значат:
а то чет я их не использовал никогда? | |
|
|
|
|
|
|
|
для: SilentChild
(22.04.2008 в 15:29)
| | Таков синтаксис. Читайте о заголовках. | |
|
|
|
|
|
|
|
для: sim5
(22.04.2008 в 15:33)
| | Все бы хорошо если бы по русски =) | |
|
|
|
|
|
|
|
для: SilentChild
(22.04.2008 в 15:36)
| | -> | |
|
|
|
|
|
|
|
для: sim5
(22.04.2008 в 15:49)
| | УихАААА!! Все работает!! СПАСИБО, чувак! | |
|
|
|
|
|
|
|
для: SilentChild
(22.04.2008 в 15:56)
| | Еще вопросик:
У меня имеется код, который выполняется при условии:
if (isset($_POST['postedfoto']))
{....код.....
}
|
У меня есть ссылка:
<a href='add_news.php'>Перейти</a>
Можно ли с ссылкой что-нибудь сделать чтобы условие выполнилось?
Условие находиться на странице add_news.php | |
|
|
|
|
|
|
|
для: SilentChild
(22.04.2008 в 16:22)
| |
if (isset($_REQUEST['postedfoto'])
|
<a href='add_news.php?postedfoto=blablabla'>Перейти</a>
|
Вот так должно срабатывать. Ссылкой ток гет можно передать.
Либо напарвить на другую страницу откуда отправить данные уже методом пост, но это гемор) | |
|
|
|
|
|
|
|
для: Valick
(22.04.2008 в 16:27)
| |
<?php
//add_news.php
$a = isset($_POST['var']) ? 1 : -1;
header('location: add_news.php?my=' . $a);
//код по открытию базы и т.д.
//затем добавляем в базу данные:
$ins = mysql_query("INSERT INTO news VALUES('" . $newsdt . "', $date, '$_POST[newsheader]', '$_POST[newsanons]', '$_POST[newsmainpart]')", $link_id);
//после того как данные добавятся страница переходит на саму себя и проверяет по переменной (my) был ли переход
if ($_GET['my'])
{
//здесь возникает вопрос: как в этой части кода можно достать переменную $ins чтобы проверить:
if (!$ins)
{
echo "Данные не добавлены!";
}
//можно ли в заголовке ее передать?
}
?>
|
| |
|
|
|
|
|
|
|
для: SilentChild
(23.04.2008 в 10:49)
| | Её ($ins) так же должна передавать страница самой себе методом гет.
А вообще я так до сих пор и не пойму ващей логики работы скрипта, но не вдаваясь в подробности выглядит это всё накворочано. | |
|
|
|
|
|
|
|
для: Valick
(23.04.2008 в 11:07)
| | Мое желание заключается в следующем:
1-я Часть кода сценария выполняет добавление в базу данных каких-либо значений или данных;
2-я Часть кода сценария должна отображать информацию о успешном или не успешном добавлении данных.
Все это мне надо для того, чтобы когда пользователь видя сообщение: "Данные успешно добавлены!" не мог этиже данные снова добавить кнопкой F5 или кнопкой "Обнавить" в браузере.
С помощью JavaScript я не могу вникнуть, мне кажется сложным. Вот php с этой ситуацией может проще справится для моего понимания, поэтому я и хочу так сделать! Плюс ко всему на одной странице (в одном сценарии), чтоб не бегать по разным страницам. | |
|
|
|
|
|
|
|
для: SilentChild
(23.04.2008 в 11:17)
| |
<?php
//add_news.php
$a = isset($_POST['var']) ? 1 : -1;
header('location: add_news.php?my=' . $a); //на этом он зациклится до бесконечности
//код по открытию базы и т.д.
//затем добавляем в базу данные:
$ins = mysql_query("INSERT INTO news VALUES('" . $newsdt . "', $date, '$_POST[newsheader]', '$_POST[newsanons]', '$_POST[newsmainpart]')", $link_id);
?>
|
>2-я Часть кода сценария должна отображать информацию о успешном или не успешном добавлении данных.
Тут желательно использовать кук, ибо фокус с отпревленной переменной может не прокатить, пользователь просто вернется на прошлую страницу и отправит данные еще раз | |
|
|
|
|
|
|
|
для: ONYX
(23.04.2008 в 11:30)
| | кук
а ещё лучше переменную сессии. имхо. | |
|
|
|
|
|
|
|
для: Valick
(23.04.2008 в 11:33)
| | Да, цикл действительно бесконечный, просто еще не дописал ссылку:
Вот так вот с сессиями:
<?php
//add_news.php
?>
<a href="add_news.php?parametr=true">Добавить данные</a>
<?
//допустим я нажал на ссылке и выполняется следующий сценарий:
if ($_GET['parametr'])
{
$a = isset($_POST['var']) ? 1 : -1;
header('location: add_news.php?my=' . $a);
//код по открытию базы и т.д.
//затем добавляем в базу данные:
$ins = mysql_query("INSERT INTO news VALUES('" . $newsdt . "', $date, '$_POST[newsheader]', '$_POST[newsanons]', '$_POST[newsmainpart]')", $link_id);
session_start();
$_SESSION['ins'] = $ins;
}
//после того как данные добавятся страница переходит на саму себя и проверяет по переменной (my) был ли переход
if ($_GET['my'])
{
session_start();
$ins = $_SESSION['ins'];
if (!$ins)
{
echo "Данные не добавлены!";
}
}
?>
|
Вот такой код будет верен? | |
|
|
|
|
|
|
|
для: SilentChild
(23.04.2008 в 11:47)
| |
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/httpd/www/experement/add_news.php:11) in /home/httpd/www/experement/add_news.php on line 405
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/httpd/www/experement/add_news.php:11) in /home/httpd/www/experement/add_news.php on line 405
|
Вот оно чё Михалыч, Вот Оно как =(
Нихт арбайтен! | |
|
|
|
|
|
|
|
для: SilentChild
(23.04.2008 в 12:28)
| | Перенесите
В начало каждого скрипта, и всё буит "бамбербия киргудук")) | |
|
|
|
|
|
|
|
для: Valick
(23.04.2008 в 12:48)
| | Ошибок не выдает, а переменную не могу получить через не выводиться ничего!
Нет, вру все работает! я просто знак $ переменной забыл
=)))) | |
|
|
|
|
|
|
|
для: SilentChild
(23.04.2008 в 13:00)
| |
<?
session_start();
// ваш код
?>
|
| |
|
|
|
|
|
|
|
для: mihdan
(23.04.2008 в 13:06)
| | А если я напишу вот так
session_start();
$ins = $_SESSION['ins'];
//код по открытию базы и т.д.
//затем добавляем в базу данные:
$ins = mysql_query("INSERT INTO news VALUES('" . $newsdt . "', $date, '$_POST[newsheader]', '$_POST[newsanons]', '$_POST[newsmainpart]')", $link_id);
|
То есть переменную определяю после того как в сессию засунул ее. Будет работать? | |
|
|
|
|
|
|
|
для: SilentChild
(23.04.2008 в 13:15)
| | Нотис будет.
проверяйте наличие переменной либо сразу после старта сессии, либо непосредственно в коде, если далее будет много раз опрашиваться эта переменная, то лучше сразу и один раз проверить, если используете переменную единожды, то без разницы где. я лично стараюсь проверить сразу при старте сессии... люблю порядок
if (isset($_SESSION['ins'])) $ins = $_SESSION['ins'];
или
if (!empty($_SESSION['ins'])) $ins = $_SESSION['ins'];
|
в зависимости от кода если переменной несуществует присваиваете ей значение по умолчанию, либо посылаете туда где эту переменную засовываете в сессию (посылать вы уже научились)) ) | |
|
|
|
|
|
|
|
для: Valick
(23.04.2008 в 13:21)
| | Я изменил имя сервера в запросе соединения с базой данных, тоесть зделал его не правильным, следовательно переменная $ins не должна добавить данные, а когда я передаю ее в сессии и получаю в следующей части кода:
session_start();
if (isset($_SESSION['ins']))
{
$ins = $_SESSION['ins'];
echo $ins;
}
|
то почемуто у меня $ins выводиться равным 1-му (ведь ноль должно быть - фальшь)?
Если переменная содержит команду добавления данных в базу, то при успешной работе она будет содержать true = 1
либо false = 0
Когда я передаю переменную то получаю ее всегда со значением один, не важно добавила ли она данные или нет!
Че за фигня? | |
|
|
|
|
|
|
|
для: SilentChild
(23.04.2008 в 13:50)
| | содержать true = 1
либо false = 0
немного не так как вам хотелось бы.
при isset($_SESSION['ins']) оба эти значения будут удовлетворять условию, потому что они эти переменные существуют и имеют значение либо 1 либо 0.
далее надо проверять на $_SESSION['ins']==1 либо $_SESSION['ins']==0
если хотите чтоб выражение isset($_SESSION['ins']) давало фальш, то просто уничтожаете переменную unset($_SESSION['ins']); | |
|
|
|
|
|
|
|
для: Valick
(23.04.2008 в 14:23)
| | В том то и дело когда я получаю переменную
$ins = $_SESSION[ ' ins ' ]
и переменная $ins всегда равна 1 даже если данные не добавились в базу!
<?php
session_start();
$ins = $_SESSION[ ' ins ' ]
echo $ins;
//всегда выдает 1
?>
|
| |
|
|
|
|
|
|
|
для: SilentChild
(23.04.2008 в 14:49)
| | а после добавления в базу у вас идёт строка в коде:
$_SESSION[ ' ins ' ] = $ins
|
ага уже вижу что идёт...
а попробуйте не имя сервера изменить, а запрос неправильный подать... | |
|
|
|
|
|
|
|
для: Valick
(23.04.2008 в 15:06)
| | Ты ГЕННННННИЙ VALICK! | |
|
|
|
|
|
|
|
для: SilentChild
(23.04.2008 в 15:17)
| | И ещё может при неправильном запроси или соединении ели ещё чего выполнение скрипта оборваться и очередь до сохранения переменной в сессию не дойти, поэтому она и помнит старое значение. | |
|
|
|
|
|
|
|
для: Valick
(23.04.2008 в 15:26)
| | Проследил такую вещь:
когда у переменной изменяешь ченибуть как здесь:
$ins = mysql_query("INSERT INTO news VALUES('" . $$newsdt . "', $date, '$_POST[newsheader]', '$_POST[newsanons]', '$_POST[newsmainpart]')", $link_id);
|
То $ins считается успешно добавленными данными, а когда вот так:
$ins = mysql_query("INSERT INTO news(ddsf) VALUES('" . $newsdt . "', $date, '$_POST[newsheader]', '$_POST[newsanons]', '$_POST[newsmainpart]')", $link_id);
|
Тогда $ins считается не успешно добавленными данными!
Почему так, разве допускается в имени переменной два доллара - $$ins ?
Можно ведь стереть значение переменной после того как она будет не нужна?
Или не стирать значение, а просто сессию закрыть, чтобы в ней анулировалось всё?
Можно ли это сделать? | |
|
|
|
|
|
|
|
для: SilentChild
(23.04.2008 в 15:30)
| | рекомендуется перед уничтожением сесии уничтожить все переменные. | |
|
|
|
|
|
|
|
для: Valick
(23.04.2008 в 15:43)
| | А если сессию не закрыть, то она через множество страниц тоже будет доступна? Или закроется после очередного выполненого сценария в котором она не будет использована? | |
|
|
|
|
|
|
|
для: SilentChild
(23.04.2008 в 16:23)
| | будет доступна, пока не закроете браузер, либо пока не не пройдёт минут 15...20 скок она там живёт непомню... неуверен но от браузера может зависить... у меня допустим сессия не закрывалась на одной вкладке, пока я на другой вкладке лазил вообще непонятно где пол часа,
поэтому Логаут должен присутствовать в обязательном порядке (признак хорошего тона) | |
|
|
|