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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Два списка и заполнение полей

Сообщения:  [1-10]    [11-20]  [21-24] 

 
 автор: TetRiska   (06.01.2009 в 00:37)   письмо автору
 
   для: Николай2357   (05.01.2009 в 21:01)
 

Огромное спасибо, вопрос снят:)

  Ответить  
 
 автор: Николай2357   (05.01.2009 в 21:01)   письмо автору
 
   для: TetRiska   (05.01.2009 в 20:56)
 

Ошиблись Вы в том, что не сделали диагностику запросов при отладке скрипта. Запрос у вас с ошибкой, но этого Вы никогда не узнаете, пока не будете пользоваться подобной конструкцией:
<?
$res2  
mysql_query("SELECT title FROM data WHERE jan='$jan",$db) or die ('Error: ' mysql_error());

Кроме того, я не совсем понял логики, но если у Вас отдельная форма на каждый селект, Вы POST данные (ровно как и GET) получите только из одной формы, которую отправляете в данный момент.

  Ответить  
 
 автор: TetRiska   (05.01.2009 в 20:56)   письмо автору
 
   для: Николай2357   (05.01.2009 в 20:26)
 

Формирование второго списка я пологаю таким же принципом. Вот сделал, но не вышло сформировать второй список.

<?php
$jan 
= isset($_POST['jan'])?mysql_escape_string($_POST['jan']):null
function 
selicte($select)  
{  
if(
$select == $_POST['film'])  
return 
"selected";  
}  
$res2  mysql_query("SELECT title FROM data WHERE jan='$jan",$db); 
if(
mysql_num_rows($res2) > 0)   
{   
echo  
" <form  action='?a=".$_GET['a']."' id='select2' method='post'>   
    <select onchange=\"document.getElementById('select2').submit()\" name='film'>"
;   
    while (list(
$title) = mysql_fetch_row($res2))    
    echo 
" <option ".selicte($title)." value='".$title."' >".$title."&nbsp;&nbsp;</option> ";  
echo 
"</select> 
  </form>"
;   
}   
?>

При выборе жанра должен загружаться данными второй список? Где я ошибся?

  Ответить  
 
 автор: Николай2357   (05.01.2009 в 20:26)   письмо автору
 
   для: TetRiska   (05.01.2009 в 20:21)
 

Да, только подстраховаться никогда не помешает:
<?
$jan 
= isset($_POST['jan']))?mysql_escape_string($_POST['jan']):null;

  Ответить  
 
 автор: TetRiska   (05.01.2009 в 20:21)   письмо автору
 
   для: Николай2357   (05.01.2009 в 17:59)
 

<?php
if (isset($_POST['jan']))   { $jan $_POST['jan']; }
$query mysql_query("SELECT * FROM data WHERE jan='$jan'",$db); 
//формируем второй список
?>


так я понял словить значение первого списка и подставить его в запрос для формирования второго?

  Ответить  
 
 автор: Николай2357   (05.01.2009 в 17:59)   письмо автору
 
   для: Trianon   (05.01.2009 в 17:49)
 

Тут вопрос стоял именно в методах передачи формы. Сайт автора давно кочует по форуму, и в предыдущих версиях он использовал в формах GET. Я опять увлекся и забыл, что не только он читает этот топик...

  Ответить  
 
 автор: Trianon   (05.01.2009 в 17:49)   письмо автору
 
   для: Николай2357   (05.01.2009 в 15:45)
 

>> Вопрос, в адресной строке должно передаваться параметр jan=....
>Да, это проще, так как не нужно кодировать кирилицу. "Отловить" оч. просто, нужно принимать не GET['jan'], а POST['jan'].

Это не так. Массив при методе POST определяется местом размещения параметра (среди URI или в параметрах формы)

  Ответить  
 
 автор: Николай2357   (05.01.2009 в 16:26)   письмо автору
 
   для: TetRiska   (05.01.2009 в 15:55)
 

Разницы что передавать и как особой нет. Это зависит от логики приложения. по номерам конечно предпочтительней, чем по строкам. А пост интереснее в данном случае потому, что этого не будет видно в адресной строке. Ни кто не мешает передать id из формы методом POST. Вот если по ссылке, тогда другое дело. Но и тогда мне кажется все таки лучше использовать оба массива, как я написал:
<form  action='?a=".$_GET['a']."' id='select1' method='post'>

а дальше:
<?
echo " <option ".selicted($id)." value='".$id."' >".$title."</option> ";

  Ответить  
 
 автор: TetRiska   (05.01.2009 в 15:55)   письмо автору
 
   для: Николай2357   (05.01.2009 в 15:45)
 

А если по методу гет передавать, можно ж в запросе указать еще ИД и потом указать в value='$id', а перед этим list($id,$title)...То будет передаваться не кириллический параметр, а номер строки, что более луче, т.к. потом мне не надо будет ее определять по title, чтобы узнать какие фильмы относятся к этому жанру. Тоесть в списке должны отображаться к примеру Драма (ее номер 2), а в строке jan=2..Ловим эту двойку и узнаем из другой таблицы все фильмы принадлежащие двойке (Драме)..Как такой вариант? Остается, чтобы параметр передавался в адресной строке.

  Ответить  
 
 автор: Николай2357   (05.01.2009 в 15:45)   письмо автору
 
   для: TetRiska   (05.01.2009 в 15:29)
 

Да, это проще, так как не нужно кодировать кирилицу. "Отловить" оч. просто, нужно принимать не GET['jan'], а POST['jan'].

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-24] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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