Пыха всегда с тобой

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха информатор 3.1
Еще более удобное оповещение о флуде!

Краснодарское время: 24 Май, 2012, 01:46:44

Страниц: [1] 2 3 ... 7
Печать
Автор Тема: проблемы с динамическими select'ами  (Прочитано 4443 раз)
0 Пользователей и 1 Гость смотрят эту тему.
gvik    ↓ 
21 Сентябрь, 2009, 11:00:46
НЕ ХУЕТА! ХУЕТА!


Карма: 1
Сообщений: 138
Сила слова: 0.72

ВЕЛИКИЕ ГУРУ пыха! I need to correct the script. Проблема: select1 - показывает всё что надо,  select2 - после выбора позиции из select1, select2 даже не появляется. Подскажите пожалуйста, где ошибка.
select.php
PHP
<?php
$db = mysql_connect ("localhost", "root", "");
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
mysql_select_db("cars",$db);
 ?>
 
<script src="JsHttpRequest.js"></script>
 
<!-- Здесь мы подключили библиотеку. А теперь пишем функцию, которую назовем doload() -->
 
<script>
function doload(value){
var req=new JsHttpRequest();
req.onreadystatechange=function(){
if(req.readyState==4) document.getElementById("result").innerHTML=req.responseText;}
req.open(null,"select2.php",true);
req.send({country:value});}
</script>
 
<form action="sript.php" method="POST">
 
<select name="country" onchange="doload(this.value);">
<option value="">--Выберите марку--
<?php
$sql = mysql_query ("SELECT DISTINCT brand FROM t1");
while ($new_brand = mysql_fetch_array($sql))
        echo "<option value=".'"'.$new_brand['brand'].'"'.">".$new_brand['brand']."";
?>
</select>
 
<br><br>
 
<div id="result"></div>
 
<br><br>
 
<input type="submit" value="Отправить">
 
</form>
select2.php
PHP
<?php
$db = mysql_connect ("localhost", "root", "");
mysql_select_db("cars",$db);
 
require("JsHttpRequest.php");
$JsHttpRequest=new JsHttpRequest("windows-1251");
 
switch($_REQUEST["country"]):
 
case "Mitsubishi":
$html="<select name=\"provider\" id=\"provider\">
<option value="
no_action">--Выберите модель--
$sql = mysql_query ("
SELECT DISTINCT model FROM t1 WHERE brand = 'Mitsubishi'");    
while ($new_model= mysql_fetch_array($sql))
    echo "
<option value=".'"'.$new_model['model'].'"'.">".$new_model['model']."";
</select>"
;
break;
 
case "Suzuki":
$html="<select name=\"provider\" id=\"provider\">
<option value="
no_action">--Выберите модель--
$sql = mysql_query ("
SELECT DISTINCT model FROM t1 WHERE brand = 'Suzuki'");    
while ($new_model = mysql_fetch_array($sql))
    echo "
<option value=".'"'.$new_model['model'].'"'.">".$new_model['model']."";
</select>"
;
break;
 
case "Hyundai":
$html="<select name=\"provider\" id=\"provider\">
<option value="
no_action">--Выберите модель--
$sql = mysql_query ("
SELECT DISTINCT model FROM t1 WHERE brand = 'Hyundai'");  
while ($new_model = mysql_fetch_array($sql))
    echo "
<option value=".'"'.$new_model['model'].'"'.">".$new_model['model']."";
</select>"
;
break;
 
default: $html=null;
endswitch;
 
echo $html;
?>
Записан
md5    ↓ 
21 Сентябрь, 2009, 11:06:12 , спустя 5 минут 26 секунд
НЕ ХУЕТА! ХУЕТА!

выезд, апартаменты, массаж, стриптиз, подружки, дорого
Группа: в ухо

Карма: не нужна
Сообщений: 10494
Сила слова: 1.19

по-моему, тема — баян...
Записан

8: Undefined variable: str
Файл: /home/pyha/pyha.ru/forum/bbcode/Xbb/Tags/Man.php
Строка: 18
adw0rd: мудень блять, я уже фиксить стал эту фигню :)
md5: вуахахахаха
CTAPbIu_MABP    ↓ 
21 Сентябрь, 2009, 11:06:43 , спустя 31 секунду
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

ты прав
Записан

java.lang.OutOfMemoryError
gvik    ↓ 
21 Сентябрь, 2009, 11:26:17 , спустя 19 минут 34 секунды
НЕ ХУЕТА! ХУЕТА!


Карма: 1
Сообщений: 138
Сила слова: 0.72

Сори за баян, но я ещё чайник в js и нуждаюсь в помощи. Форум я уже читал, откуда и взял этот код, но не понимаю почему скрипт работает когда в option'ах жестко указаны значения, и не работает, когда я в option'ы пишу выборку значений из БД.
Записан
CTAPbIu_MABP    ↓ 
21 Сентябрь, 2009, 11:58:57 , спустя 32 минуты 40 секунд
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

может потому что неправильно пишешь
попробуй вывести из БД без списка
Записан

java.lang.OutOfMemoryError
gvik    ↓ 
21 Сентябрь, 2009, 12:21:20 , спустя 22 минуты 23 секунды
НЕ ХУЕТА! ХУЕТА!


Карма: 1
Сообщений: 138
Сила слова: 0.72

CTAPbIu_MABP, запросом из БД выводится куда угодно и даже в отдельные не связанные между собой select'ы. Мне кажется дело в js, doload не понимает переменную $html?
« Последнее редактирование: 21 Сентябрь, 2009, 12:21:20 от gvik » Записан
CTAPbIu_MABP    ↓ 
21 Сентябрь, 2009, 03:05:02 , спустя 2 часа 43 минуты 42 секунды
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

у тебя там большие проблемы с кавычками
Записан

java.lang.OutOfMemoryError
gvik    ↓ 
21 Сентябрь, 2009, 03:23:15 , спустя 18 минут 13 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 1
Сообщений: 138
Сила слова: 0.72

CTAPbIu_MABP, я насчёт ковычек подчистил получился вот такой рабочий вариант
PHP
<?php
$db = mysql_connect ("localhost", "root", "");
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
mysql_select_db("cars",$db);
 
require("JsHttpRequest.php");
$JsHttpRequest=new JsHttpRequest("windows-1251");
?>
<select name=\"model\" id=\"model\">
<option value="
no_action">--Выберите модель--</option>
<?
if($_REQUEST["
brand"] == "Mitsubishi"){
$sql = mysql_query ("
SELECT DISTINCT model FROM t1 WHERE brand = 'Mitsubishi'");
while ($new_model= mysql_fetch_array($sql))
    echo '<option value='.$new_model['model'].'>'.$new_model['model'].'</option>';
} else {echo 'Error!';}
if($_REQUEST["
brand"] == "Suzuki"){
$sql = mysql_query ("
SELECT DISTINCT model FROM t1 WHERE brand = 'Suzuki'");
while ($new_model= mysql_fetch_array($sql))
    echo '<option value='.$new_model['model'].'>'.$new_model['model'].'</option>';
} else {echo 'Error!';}
if($_REQUEST["
brand"] == "Hyundai"){
$sql = mysql_query ("
SELECT DISTINCT model FROM t1 WHERE brand = 'Hyundai'");
while ($new_model= mysql_fetch_array($sql))
    echo '<option value='.$new_model['model'].'>'.$new_model['model'].'</option>';
} else {echo 'Error!';}
?>
</select>
Но хотелось бы в SQL-запросе вместо жестких привязок brand = 'Mitsubishi' оперировать переменной, да и кол-во if'ов поубавилось бы, но не получается, в смысле вот так не получатся
PHP
if($_REQUEST["brand"] == true){
$sql = mysql_query ("SELECT DISTINCT model FROM t1 WHERE brand = ".$_REQUEST["brand"]."");
while ($new_model= mysql_fetch_array($sql))
    echo '<option value='.$new_model['model'].'>'.$new_model['model'].'</option>';
} else {echo 'Error!';}
Записан
adw0rd    ↓ 
21 Сентябрь, 2009, 03:38:51 , спустя 15 минут 36 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17615
Сила слова: 1.67

gvik, используйте switch-case конструкцию
Спустя 2 минуты 33 секунды добавил
PHP

 
$sql = mysql_query ('SELECT DISTINCT model FROM t1 WHERE brand = "'.mysql_real_escape_string($_REQUEST["brand"]).'"');
if($sql) {
    while ($new_model= mysql_fetch_array($sql)) {
        echo '<option value="'.$new_model['model'].'">'.$new_model['model'].'</option>';
    }
} else {
    echo mysql_error();
}
 
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
gvik    ↓ 
21 Сентябрь, 2009, 03:40:25 , спустя 1 минуту 34 секунды
НЕ ХУЕТА! ХУЕТА!


Карма: 1
Сообщений: 138
Сила слова: 0.72

adw0rd, она по каким-то не понятным мне причинам не работает. Я в начале темы приводил эту конструкцию и её недостаток - поле brand нужно в SQL-запросах жестко прописывать.
Записан
adw0rd    ↓ 
21 Сентябрь, 2009, 03:48:17 , спустя 7 минут 52 секунды
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17615
Сила слова: 1.67

gvik, мой код у вас работает? Если нет, то что выводит mysql_error()?
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
gvik    ↓ 
21 Сентябрь, 2009, 03:56:32 , спустя 8 минут 15 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 1
Сообщений: 138
Сила слова: 0.72

adw0rd, помогло спасибо, +1 в карму. Код работает без error'ов
Подскажите, я правильно делаю увеличение кол-ва select'ов. В select.php писать js-функцию следующего select'а, а в select3.php инфу для option'ов?
Записан
adw0rd    ↓ 
21 Сентябрь, 2009, 04:05:23 , спустя 8 минут 51 секунду
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17615
Сила слова: 1.67

gvik, если предполагается, что будут участвовать все селекты (фиксированное кол-во селектов), то я бы их сразу бы все 3 генерировал.
А если нужно последовательно чтобы появлялись (по одному), то я 2 из них скрывал display:none
Спустя 40 секунд добавил
В любом случае, при 3 селектах я бы их генерил заранее
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
gvik    ↓ 
21 Сентябрь, 2009, 04:10:42 , спустя 5 минут 19 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 1
Сообщений: 138
Сила слова: 0.72

Нужно все селекты показывать.

я бы их сразу бы все 3 генерировал.
А где это надо пофиксить?
Записан
adw0rd    ↓ 
21 Сентябрь, 2009, 04:15:53 , спустя 5 минут 11 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17615
Сила слова: 1.67

gvik, это надо сесть и подумать вам. Начать с того, что вам надо 3 селекта, делаете 3 html-селекта.
Далее, вам надо три бекенд-скрипта, где генерются данные (PHP+SQL) ... можете сделать и один бекенд, кому как удобно
Далее, вам надо функцию, которая в зависимости от данных будет опрашивать бекенды и выводить результаты генерировав html-оптионы
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
Страниц: [1] 2 3 ... 7
Печать
 

Перейти в: