[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Cookie после вывода ...
Painbot
Добрый день! Есть скрипт который выводит данные из базы данных в два выпадающих списка:

страна-> город

после выбора страны подгружается список с городами этой страны!
после выбора города идет запрос к базе данных и возвращается данные относящиеся именно к этому городу
переменная $city - это происходит все в одном файле, интересует запись в cookie именно после выбора из списка городов тоесть как записать переменную $city в скрипте в котором уже происходит вывод...
вот кусок:

function is_sel($a, $field)
{
$b = isset($_POST[$field])?$_POST[$field]:NULL;
if($a == $b) return 'selected="selected"';
}

$res = mysql_query('SELECT * FROM '.db_prefix.'country');
?>
<form id="frm" method="post">
<
select name="country" onchange="document.getElementById('frm').submit()" >

<
option value='null'>- Выберите регион -</option>
<?
/*Пишем в цикле выпадающий список из регионов */
while($row = mysql_fetch_array($res))
echo "<option ".is_sel($row['id'],'country')." value='" . $row['id'] . "'>" . $row['name'] . "</option>\r\n";
echo "</select>";

if(isset($_POST['country']))
{
$res=mysql_query('SELECT * FROM '.db_prefix.'city WHERE area="'.(int)$_POST['country'].'"');

echo "<select id=\"city\" name=\"city\" onchange=\"document.getElementById('frm').submit()\" >
<option value='0'>- Выберите город -</option>"
;
/*Теперь города*/
while($row = mysql_fetch_array($res))
echo "<option ".is_sel($row['id'],'city')." value='" . $row['id'] . "'>" . $row['name'] . "</option>\r\n";

echo "</select>";
}

echo '</form>';




$city = isset($_POST['city'])?$_POST['city']:NULL;

if($city && $city !== 0)
{
$res=mysql_query('SELECT * FROM '.db_prefix.'phone WHERE id='.(int)$_POST['city'].' LIMIT 1');
$row = mysql_fetch_array($res);
/*Печать адреса*/
echo " ".$row['name']."<br /><br /><br />";





Спустя 2 часа, 13 минут, 52 секунды (1.06.2011 - 23:52) waldicom написал(а):
Почему не перенести логику наверх, а вывод информации вниз?
Затем можно использовать Javascript или в крайнем случае писать все в буфер и выдавать после установки заголовков (кук)

Спустя 3 часа, 2 минуты, 49 секунд (2.06.2011 - 02:55) inpost написал(а):
Painbot
irbis-team.com

Спустя 5 часов, 17 минут, 43 секунды (2.06.2011 - 08:13) Painbot написал(а):
Почему не перенести логику наверх, а вывод информации вниз? - потому, что сначала идет вывод информации после которого человек может выбрать город который определен не правильно...

Затем можно использовать Javascript или в крайнем случае писать все в буфер и выдавать после установки заголовков (кук) - а об этом можно поподробнее?)))

Спустя 46 минут, 50 секунд (2.06.2011 - 08:59) Painbot написал(а):
пишу
if ($city > 0) include 'form_cookie.php';


код: form_cookie.php

<? 
setcookie('city', $city, time()+60*60*24, '/');
?>


- все равно не записывает что не так обьясните?

Спустя 3 часа, 33 минуты, 7 секунд (2.06.2011 - 12:33) waldicom написал(а):
На лицо не полное понимание языка.
Сначала к первому вопросу.

Цитата (Painbot @ 2.06.2011 - 06:13)

Цитата
Почему не перенести логику наверх, а вывод информации вниз?
потому, что сначала идет вывод информации после которого человек может выбрать город который определен не правильно...


Описываю последовательность действий, вне зависимости от Вашего кода.
Сначала проверяем все, что могло прийти через $_POST. В Вашем случае это проверки
if(isset($_POST['country']))

$city = isset($_POST['city'])?$_POST['city']:NULL;


Затем выбираем данные: просто выбираем или в зависимости от пришедших параметров через $_GET/$_POST.
А уж после всего выводим инфу.

Важно: Вам не обязательно делать сразу echo, можно собирать строку в одну переменную, что0то типа такого (схематично)

$output = '';
if(isset($_POST['country'])){
$output .= '<select> .......';
mysql_query(....);
while(....){
$output .= '<option .....' // обратите внимание на вариант написания .= - он с точкой перед знаком равно
}
$output .= '</select>';
}

// в самом конце
echo $output;


Теперь к кукам: с помощью javascript их можно ставить при выборе какого-то значения и <select>. Например по событию onchange

Спустя 3 часа, 34 минуты, 7 секунд (2.06.2011 - 16:07) Painbot написал(а):
Спасибо большое сегодня вечером попытаюсь реализовать Ваш вариант, если что не получится вернусь))))

Спустя 17 часов, 1 минута, 15 секунд (3.06.2011 - 09:08) Painbot написал(а):
waldicom - еще раз огромное спасибо, все получилось благодаря Вашей помощи!

Спустя 6 часов, 52 минуты, 28 секунд (3.06.2011 - 16:00) Painbot написал(а):
Появился новый вопрос) теперь необходимо выводить файл со скриптом в инклуде, страницы все в .html - соответственно инклуд ставится после заголовков, то есть куки не пишутся - как решить?

Спустя 3 минуты, 23 секунды (3.06.2011 - 16:04) waldicom написал(а):
Эммм.. мда. Даже тут есть несколько вариантов. Правда было бы неплохо знать, как выглядят HTML файлы, как генерируются страницы (идет ли все через один файл, например через index.php или файлы действительно имеют расширение .html)?

Спустя 4 часа, 50 минут, 34 секунды (3.06.2011 - 20:54) Painbot написал(а):
просто статичные файлы .html в них пишется <?php include 'script.php' ?>
файлы простой конструкции))
<head>
</head>
<body>
</body>

Спустя 2 дня, 11 часов, 2 минуты, 42 секунды (6.06.2011 - 07:57) Painbot написал(а):
Up
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.