Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как можно приделать Куки к select, выводящимуся в цикле
 
 автор: Dinya_1   (20.05.2010 в 15:36)   письмо автору
 
 

Как можно приделать Куки к select, выводящимуся в цикле


<?
php 
if(isset($_COOKIE['text'])) {echo $_COOKIE['text'];}
?>
<select  name="naprav" id="naprav" class="select_nazvan"  >
                        <? //Направление...
$result08 mysql_query ("SELECT * FROM naprav ",$db);
$myrow08 mysql_fetch_array($result08);
do
{
printf ("<option value='%s'>%s</option>",$myrow08["naprav"],$myrow08["naprav"]);
}
while (
$myrow08 mysql_fetch_array($result08));
?>
  </select>

  Ответить  
 
 автор: cheops   (21.05.2010 в 10:19)   письмо автору
 
   для: Dinya_1   (20.05.2010 в 15:36)
 

А в смысле приделать? Чего хотите добиться?

  Ответить  
 
 автор: FINT   (21.05.2010 в 11:14)   письмо автору
 
   для: Dinya_1   (20.05.2010 в 15:36)
 

Да, опишите что именно требуется сделать, а то не совсем понятно Ваши задумки !!!

  Ответить  
 
 автор: Dinya_1   (21.05.2010 в 19:23)   письмо автору
 
   для: FINT   (21.05.2010 в 11:14)
 

Нужно, чтоб в Куки записывалось значение выбранного селекта, и если есть выводить его.

  Ответить  
 
 автор: cheops   (23.05.2010 в 09:06)   письмо автору
 
   для: Dinya_1   (21.05.2010 в 19:23)
 

Можно отталкиваться от следующего скрипта
<?php
  
if(!empty($_POST))
  {
    
setcookie("select"$_POST['naprav'], time 60*60*24*7);
    
header("Location: ".basename($_SERVER['PHP_SELF']));
    exit();
  }
//  if(isset($_COOKIE['text'])) {echo $_COOKIE['text'];} 
?> 
<form action='' method='post'>
<select  name="naprav" id="naprav" class="select_nazvan"  > 
<?php //Направление... 
  
$result08 mysql_query ("SELECT * FROM naprav ",$db); 
  while(
$myrow08 mysql_fetch_array($result08)) 
  { 
    if(
$_COOKIE['select'] == $myrow08["naprav"]) $selected "selected='selected'";
    else 
$selected "";
    
printf ("<option value='%s' {$selected}>%s</option>",
            
$myrow08["naprav"],
            
$myrow08["naprav"]); 
  } 
?> 
</select>

  Ответить  
 
 автор: Dinya_1   (24.05.2010 в 17:26)   письмо автору
 
   для: cheops   (23.05.2010 в 09:06)
 

cheops скажите пожалуйста, а если нужно запомнить в куках две,разные переменные



<select name="srok_time" class="imput_form"  >
                      <? 
$result9 
mysql_query ("SELECT srok_time,kol-vo FROM srok",$db);
while(
$myrow9 mysql_fetch_array($result9))  
  {  
    if(
$_COOKIE['select'] == $myrow9["srok_time"]) $selected "selected='selected'"
    else 
$selected""
    
printf ("<option value='%s' {$selected}>%s</option>",$myrow9["srok_time"],$myrow9["kol-vo"]);  
  } 
?>
 </select>


  Ответить  
 
 автор: cheops   (24.05.2010 в 20:15)   письмо автору
 
   для: Dinya_1   (24.05.2010 в 17:26)
 

Хм... можно две куки установить, два раза вызвав фукнцию setcookie(), правда в обработчики скорее всего придется восстановить второе значение из базы данных, так как HTML-форма передаст только одно значение... А здесь вам это зачем, вы же вроде в cookie только выбранное значение запоминаете, или вы хотите использовать эти значение потом?

  Ответить  
 
 автор: Dinya_1   (24.05.2010 в 23:33)   письмо автору
 
   для: cheops   (24.05.2010 в 20:15)
 

пользователь в селекте устанавливает нужное... потом нажимает добавить, если он не
заполнил какие то поля, обработчик возврашает назад на эту же форму с указанными
ошибками и с установленными Куками, там как раз и должны стоять две переменные, ранее
им отмеченные
$myrow9["srok_time"] - время хранения данных (to week)
$myrow9["kol-vo"] - То что видет польз.в выподающем селекте (2 Недели)

<?
 printf 
("<option value='%s' {$selected}>%s</option>",$myrow9["srok_time"],$myrow9["kol-vo"]);

?>

  Ответить  
 
 автор: cheops   (24.05.2010 в 23:59)   письмо автору
 
   для: Dinya_1   (24.05.2010 в 23:33)
 

Правильно ли я понимаю, вам cookie нужны только для того, чтобы запомнить, что выбрал пользователь на момент работы с HTML-формой? А дальше они уже не используются? Если да, то лучше вообще отказаться от cookie и работать напрямую с массивом $_POST.

  Ответить  
 
 автор: Trianon   (25.05.2010 в 00:33)   письмо автору
 
   для: cheops   (24.05.2010 в 23:59)
 

Расово верная обработка POST-запроса окончится header(Location: ...)
Так что к моменту вывода HTML-формы массив $_POST уже протухнет.... :)

  Ответить  
 
 автор: cheops   (25.05.2010 в 02:22)   письмо автору
 
   для: Trianon   (25.05.2010 в 00:33)
 

Если обработчик нельзя применить из-за некоректно заполненной формы, то не окончится... а как раз пойдет в HTML-форму. Собственно это классический способ подставновки старых значений в случае неполного/некорректного заполнения формы. Все это при условии нахождения HTML-формы и обработчика в одном файле.

  Ответить  
 
 автор: Trianon   (25.05.2010 в 10:22)   письмо автору
 
   для: cheops   (25.05.2010 в 02:22)
 

о том и речь.
Можно регенерировать форму с подстановкой из $_POST (и допустить на этом этапе кашу с F5).
А можно загнать всё введенное в сеансовую куку, и выполнить Location на тот же скрипт с признаком требования повторной генерации формы.

  Ответить  
 
 автор: cheops   (25.05.2010 в 10:35)   письмо автору
 
   для: Trianon   (25.05.2010 в 10:22)
 

Куки и сессии имеют другой недостаток - они не чистятся автоматически, что не всегда удобно. С другой стороны перегрузка страницы во время заполнения формы явление не частое, учитывая, что само заполннение формы обычно на порядок более редкое явление, чем чтение страницы.

  Ответить  
 
 автор: Trianon   (25.05.2010 в 14:06)   письмо автору
 
   для: cheops   (25.05.2010 в 10:35)
 

как же сеансовая (времени жизни сеанса браузера) кука не чистится автоматически, если она даже в файл на клиентской машине не пишется?

  Ответить  
 
 автор: cheops   (27.05.2010 в 12:51)   письмо автору
 
   для: Trianon   (25.05.2010 в 14:06)
 

В рамках сайта может быть несколько HTML-форм, тогда поля с одинакомыми названиями будут подставляться в другие формы: нужно либо механизм пространства имен реализовывать, чтобы разные формы были гарантировано разделены друг от друга, либо чистить cookie насильно. И то и другое не очень удобно, особенно последнее. Хотя если потратить время на создание движка, наверное будет более правильно. Другое дело, что иногда времени/ресурсов на создание совершенной перфекционной системы нет или вообще приходится иметь дело с готовой системой. В этом случае лучше использовать $_POST - проблем и ошибок будет меньше.

  Ответить  
 
 автор: Dinya_1   (27.05.2010 в 22:12)   письмо автору
 
   для: cheops   (27.05.2010 в 12:51)
 

Все получилось :)). Спасибо cheops

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования