Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Двойная выборка по одной БД

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
I_CaR
Отправлено: 22 Марта, 2011 - 07:47:44
Post Id



Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Март 2011  
Откуда: Красноярск


Помог: 0 раз(а)




Доброго всем времени суток.
Реализую следующую ситуацию:
Есть две формы селекта.
1-ая марка
2-ая модель
(И есть одна таблица)
Действие:
Делаю первый запрос - получаю список марок в селект:
PHP:
скопировать код в буфер обмена
  1.  
  2. <? PHP
  3.  
  4. // первый запрос для первого селекта (марки):
  5.  
  6. $result2 = mysql_query ("SELECT DISTINCT marka FROM select_baga", $db2);
  7. $num2 = mysql_num_rows($result2);
  8. $marka_auto = mysql_result($result2,1,0);
  9. ?>
  10. <select id="select-1" style="width:280px" name="slct2">
  11.   <option value="0">выбирите марку...</option>
  12.   <?
  13.         for ($i =1; $i < $num2; $i++) // сколько оригинальных строк, столько делаем и пунктов в селекте
  14.         {
  15.  
  16.                 $marka_auto = mysql_result ($result2,$i,0); //присваиваем значение (марок) переменной
  17.                 echo "<option value=$marka_auto>$marka_auto</option>"; // вводим в пункты селекта название марок
  18.                
  19.         }
  20.                
  21.         ?>
  22. </select>
  23.  
  24. <input type="submit" name="btn" value='Ok...'> // отсылаем программе значение 1-го селекта (т.е. название марки)
  25.  
  26. <?PHP
  27. $p2 = @$_POST['slct2']; //получаем $p2 (наименование марки, НО оно почему-то только до пробела! если "МАРКА-X2", то переменная нормальная, а если "МАРКА Х2", то $_POST возвращает "МАРКА". Почему так, не разобрался, но суть не в этом.)
  28.  
  29. // Делаем второй запрос для второго селекта (модели):
  30.  
  31. $result3 = mysql_query ("SELECT DISTINCT model, marka FROM select_baga WHERE marka LIKE '$p2%'", $db);
  32. // почему сделал $p2%? Потому-что
  33. $num3 = mysql_num_rows($result3);
  34. ?>
  35. <form name="data_input_2" method="post">
  36.  
  37.   <select id="select-2" style="width:280px" name="slct3">
  38.     <option value="0">Выберите модель...</option>
  39.     <?
  40.        
  41.        
  42.         for ($i2 =0; $i2 < $num3; $i2++) // сколько оригинальных строк, столько делаем и пунктов в селекте
  43.         {
  44.                 $model_auto = mysql_result ($result3,$i2,0); //присваиваем значение (модели) переменной
  45.                 echo "<option value=$model_auto>$model_auto</option>"; // вводим в пункты селекта название моделей
  46.         }
  47.  
  48.         ?>
  49.   </select>
  50.  
  51. <input type="submit" name="btn2" value='Ok...'> // отсылаем программе значение 2-го селекта (т.е. название модели)
  52.  
  53.  
  54.  
  55. <?PHP
  56.  
  57. // Это ТРЕТИЙ запрос (вывод таблицы) !!!!!!!!!!
  58.  
  59.  
  60.         $p3 = @$_POST['slct3']; //получаем $p3 из 2-го селекта, ситуация с пробелом, такая же как и с $p2
  61.        
  62.  
  63. $result4 = mysql_query ("SELECT * FROM select_baga WHERE model = '$p3'", $db);
  64. // а хотелось бы так ("SELECT * FROM select_baga WHERE model = '$p3' AND marka=$p2", $db);
  65. // ВОТ В ЭТОМ И ГЛАВНЫЙ КАМЕНЬ ПРЕТКНОВЕНИЯ! (см. после кода.)
  66.  
  67. $num4 = mysql_num_rows($result4);
  68. $column = mysql_num_fields($result4);
  69.  
  70.         ?>
  71.         <font face="Trebuchet MS" size="2">
  72.         <br><br>
  73.         корректный вывод данных:
  74.         <br>
  75.         <table border="1" cellpadding="5" cellspacing="0" bordercolor="#999999">
  76.         <tr>
  77.         <th>марка</th>
  78.         <th>модель</th>
  79.         <th>...и так далее...</th>
  80.         <th>...и так далее...</th>
  81.  
  82.         </tr>
  83.         <?
  84.  
  85.  
  86.         for ($i3 =0; $i3 < $num4; $i3++)
  87.         {
  88.                 $pole_00 = mysql_result ($result4,$i3,0);       //марка
  89.                 $pole_01 = mysql_result ($result4,$i3,1);       //модель
  90.                 $pole_02 = mysql_result ($result4,$i3,2);       //...и так далее...
  91.                 $pole_03 = mysql_result ($result4,$i3,3);       //...и так далее...
  92.        
  93.                 echo "  <tr align='center'>
  94.                                 <td>$pole_00</td>
  95.                                 <td>$pole_01</td>
  96.                                 <td>$pole_02</td>
  97.                                 <td>$pole_03</td>
  98.  
  99.                                 </tr>";        
  100.         }
  101.         ?>
  102.         </table>
  103.  
  104.  
  105.  


Дело в том, что после нажатия второго buttona значение $p2 обнуляеться, так как при вызове SUBMIT страница перегружается и php и sql делают всё повторно, как можно сохранить переменную $p2?
Или как реализовать это
CODE (SQL):
скопировать код в буфер обмена
  1. ("SELECT * FROM select_baga WHERE model = '$p3' AND marka='$p2'", $db)
в моей ситуации?

Буду благодарен за помошь!
С Уважением I.CaR®

(Отредактировано автором: 22 Марта, 2011 - 07:48:54)

 
 Top
varyag
Отправлено: 22 Марта, 2011 - 08:10:13
Post Id


Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




сессией можно, записать в переменную S_SESSION['p2']
 
 Top
I_CaR
Отправлено: 24 Марта, 2011 - 05:36:03
Post Id



Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Март 2011  
Откуда: Красноярск


Помог: 0 раз(а)




Проблему потери данных после пробелов, как раз решил путём заключения переменной value в кавычки
PHP:
скопировать код в буфер обмена
  1. echo "<option value='$marka_auto'>$marka_auto</option>";

Большое Вам спасибо за отклик!
Модуль работает, вот ссылка на него.

(Отредактировано автором: 29 Сентября, 2011 - 04:33:12)

 
 Top
varyag
Отправлено: 24 Марта, 2011 - 07:35:24
Post Id


Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




I_CaR, ссылка битая
 
 Top
Stierus Супермодератор
Отправлено: 24 Марта, 2011 - 17:00:12
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




обычно передают в запросе вместе с остальными параметрами.
 
My status
 Top
JustUserR
Отправлено: 24 Марта, 2011 - 17:24:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




I_CaR пишет:
Дело в том, что после нажатия второго buttona значение $p2 обнуляеться, так как при вызове SUBMIT страница перегружается и php и sql делают всё повторно, как можно сохранить переменную $p2?
В качестве возможного варината для осуществления решения предполагаемой задачи, заключающейся в проведении сохранения группы информационных полей, ассоциированных с осуществленой операцией получения данных из СУБД, допустимо обеспечение модификации структуры клиентской HTML-страницы таким образом, чтобы осуществление хранения текущего состаояния взаимодейтсвия сессии обеспечивалось на основании выполняемого JS-приложения


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
I_CaR
Отправлено: 26 Апреля, 2011 - 05:05:32
Post Id



Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Март 2011  
Откуда: Красноярск


Помог: 0 раз(а)




varyag пишет:
I_CaR, ссылка битая

Кем она битая? см. внимательнее это форум так делает, подтверждение на переход.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB