2012-04-25 2 views
-1

Мне нужно немного помочь отделить идентификаторы, разделенные запятой, а затем отобразить их в выпадающем списке.Отдельные идентификационные номера в столбце, разделенные символом a,

Вот код, приведенный ниже, с которым я работаю, если у него есть только 1 номер одежды, он отлично работает, если я добавляю больше чисел, поэтому он разделяется запятой, т.е. 1,2,3,4 он не будет более длинная работа, я уверен, что мне нужно использовать взрыв, но я не могу заставить его работать. Любая помощь будет оценена.

<? $clothing=intval($_GET['clothing_var']); 
include 'classes.php'; 
mysql_select_db('database'); 
$query="SELECT ID,Qty_Values FROM Quantity WHERE Clothing_Type_ID='$clothing'"; 
$result=mysql_query($query); 
$test=explode(',', '$result'); 

?> 
<select name="state" onchange="getCity(<?=$clothing?>,this.value)"> 
<option>Select State</option> 
<? while($row=mysql_fetch_array($test)) { ?> 
<option value=<?=$row['ID']?>><?=$row['Qty_Values']?></option> 
<? } ?> 
</select> 

UPDATE:

Вот что я пытаюсь TODO.

Привет, вставил ваш код и хотя он работает, он отображает только первый выбор, если я нажимаю на второй идентификатор, ничего не отображается. Моя таблица базы данных выглядит так: выбор кулака под названием Clothing_Type имеет 3 столбца, ID Garment и Price, вторая таблица имеет 4 столбца, ID, Clothing_Type_ID, Qty_Values ​​и цену. В основном я пытаюсь сделать это, чтобы составить руководство по ценообразованию, поэтому, если я выберу футболку в первом окне выбора, она поднимет 4 цены в конце формы, по 1 на каждый элемент, 2 на общую сумму (при выборе более высокое количество) 3 для НДС и 4 Общая сумма. Каждый раз, когда выбирается выбор, он автоматически обновляет цену. После того, как я выбрал 3 или 4 блока выбора, я снова хочу несколько флажков, чтобы обновить цену, если они отмечены галочкой.

Update 2: Вот JS и HTML

JS

<script language="javascript" type="text/javascript"> 
function getXMLHTTP() { 
    var xmlhttp=false; 
    try{ 
     xmlhttp=new XMLHttpRequest(); 
    } 
    catch(e) {  
     try{    
      xmlhttp= new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     catch(e){ 
      try{ 
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
      } 
      catch(e1){ 
       xmlhttp=false; 
      } 
     } 
    } 

    return xmlhttp; 
} 

function getQty(countryId) {   

    var strURL="findQty.php?clothing_var="+countryId; 
    var req = getXMLHTTP(); 

    if (req) { 

     req.onreadystatechange = function() { 
      if (req.readyState == 4) { 
       // only if "OK" 
       if (req.status == 200) {       
        document.getElementById('qtydiv').innerHTML=req.responseText;      
       } else { 
        alert("There was a problem while using XMLHTTP:\n" + req.statusText); 
       } 
      }    
     }   
     req.open("GET", strURL, true); 
     req.send(null); 
    }  
} 
function getCity(countryId,stateId) {  
    var strURL="findCity.php?clothing_var="+countryId+"&qty_var="+stateId; 
    var req = getXMLHTTP(); 

    if (req) { 

     req.onreadystatechange = function() { 
      if (req.readyState == 4) { 
       // only if "OK" 
       if (req.status == 200) {       
        document.getElementById('citydiv').innerHTML=req.responseText;      
       } else { 
        alert("There was a problem while using XMLHTTP:\n" + req.statusText); 
       } 
      }    
     }   
     req.open("GET", strURL, true); 
     req.send(null); 
    } 

} 
</script> 

HTML

<body> 
<form method="post" action="" name="form1"> 
<? 
include 'classes.php'; 
$query="SELECT ID,Garment FROM Clothing_Type"; 
$result=mysql_query($query); 

?> 
<select name="clothing_type" onChange="getQty(this.value)"> 
<option>Select Clothing Type</option> 
<? while($row=mysql_fetch_array($result)) { ?> 
<option value=<?=$row['ID']?>><?=$row['Garment']?></option> 
<? } ?> 
</select> 

<p id="qtydiv"> 
<select style="width: 150px;" name="qty" disabled='disabled'> 
<option>Select Country First</option> 
</select> 
</p> 

<p id="citydiv"> 
<select style="width: 150px;" name="city" disabled='disabled'> 
<option>Select State First</option> 
</select> 

</p> 

<input type="checkbox" name="vehicle" value="Bike" /> I want to live here<br /> 
<form> 
<input type='checkbox' name='1' value='1'id='checkbox_1' />1<br> 
<input type='checkbox' name='2' value='2'id='checkbox_2' />2<br> 
<input type='checkbox' name='3' value='3'id='checkbox_3' />3<br> 
</form> 
</body> 
+0

Вам нужно изменить свой запрос, чтобы использовать AND - вы также не хотите делать это, как будто вы не так, как вы открыты для SQL-инъекций. – BeRecursive

+0

Что содержится в переменной $ clothes? –

+0

Привет матовый, это будет результат первого окна выбора, см. Второе обновление, поскольку я опубликовал html и js, надеюсь, что это даст вам лучшее понимание. – Dan

ответ

2

Попробуйте это,

$ одежда = "1,2,3,4";

$ query = "SELECT ID, Qty_Values ​​FROM Quantity WHERE Clothing_Type_ID IN ($ одежда)";

+0

Это работает, спасибо – Dan

+0

К сожалению, это не сработало, положив $ одежда = "1,2,3,4"; игнорировать результаты из первого окна выбора – Dan

+0

@Dan Пришлите мне сообщение об ошибке –

1

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

$query = "SELECT ID, Qty_Values FROM Quantity WHERE Clothing_Type_ID IN($clothing)"; 
+0

Привет, спасибо за ответ, в столбце id есть 1,2 , 3,4,5, но этот скрипт вызывает только 1 ...ничего после, не появляется – Dan

0

Обновление SQL для этого ..

$query="SELECT ID,Qty_Values FROM Quantity WHERE Clothing_Type_ID in ($clothing)"; 

Избавьтесь от разнесения. Это вернет результирующий набор одежды, имеющей идентификатор типа одежды, который указан в вашем списке одежды.

Часть меня думает, что вы делаете это назад. Я предполагаю, что каждый элемент в БД имеет только 1 идентификатор типа одежды, а список идентификаторов - в вашей строке одежды.

Если это не так, дайте мне пример, посмотрите на таблицу БД.

+0

Привет, вставил ваш код и, хотя он работает, он отображает только первый выбор, если я нажимаю на второй идентификатор, ничего не отображается. – Dan

+0

Я только что обновил, чтобы дать вам лучшее представление о том, что я пытаюсь сделать. – Dan

+0

Только что обновленный, чтобы надеяться, предоставит вам всю информацию. – Dan

Смежные вопросы