2012-06-04 100 views
0

我很抱歉如果這是一個愚蠢的問題 - 我剛剛開始拿起我的PHP/MySQL技能。我正在製作一個有3個下拉列表的下拉表單。我希望能夠從表單中觸發查詢。您選擇零件類型,製作,模型點擊提交併顯示結果表格。下拉菜單查詢數據庫

我有我的表格填充了3個數組,當你點擊提交,我可以附和每個所選項目的關鍵頁面:

echo '<form action="dbBrowse.php" method="post">'; 

    $mak = array (0 => 'Make', 'Ford', 'Freightliner', 'Peterbilt', 'Sterling', 'Mack', 'International', 'Kenworth', 'Volvo'); 
    $mod = array (0 => 'Model', 'Argosy', 'Midliner'); 
    $p = array (0 => 'Part', 'Radiator', 'Charge Air Cooler', 'AC');       



    echo '<select name="drop1">'; 
    foreach ($p as $key => $value) { 
    echo "<option value=\"$key\"> 
    $value</option>\n"; 

    } 


    echo '</select>'; 




    echo '<select name="drop2">'; 
    foreach ($mak as $key => $value) { 
    echo "<option value=\"$key\"> 
    $value</option>\n"; 



    } 

    echo '<select/>'; 



    echo '<select name="drop3">'; 
    foreach ($mod as $key => $value) { 
    echo "<option value=\"$key\"> 
    $value</option>\n"; 



    } 

    echo '<select/>'; 
    echo '</form>'; 


      //echo keys of selection 
    echo $_POST['drop1']; 
    echo "<br />"; 
    echo $_POST['drop2']; 
    echo "<br />"; 
    echo $_POST['drop3']; 
      //these echo something like 1, 1, 3 etc. to my page 

在哪裏我迷路是我期待對選定的選項,並將其插入到一個查詢是這樣的:

 $dropSearch = mysql_query('SELECT * FROM parts WHERE part= "$partTypeVar" . AND WHERE make = "$makeTypeVar" . AND WHERE model = "$modelTypeVar"');  

      $partTypeVar being the corresponding value to the key that is being returned from the array.   

我駕駛自己瘋狂試圖找出如何做到這一點。最終,我想進一步擴展這一點,但只要能夠創建一個具有所選值的mysql語句,現在就可以使我的一天。我理解需要發生什麼的概念,但我不確定如何實現它。任何幫助或推動正確的方向將不勝感激。

+0

可能重複:如何使使用jQuery PHP級聯下拉列表(http://stackoverflow.com/questions/6857287/cascading-drop-down-list) –

+0

還HTTP:/ /stackoverflow.com/questions/7137357 –

+0

你在哪裏指定變量的$ drop1,$ drop2,$ drop3? – stUrb

回答

0

首先,你必須刪除。 char在你的SQL查詢中,現在不需要使用它,當然也可以給變量賦予正確的值。

$partTypeVar = mysql_real_escape_string($_POST['$drop1']); 
$makeTypeVar = mysql_real_escape_string($_POST['$drop2']); 
$modelTypeVar = mysql_real_escape_string($_POST['$drop3']); 

$dropSearch = mysql_query('SELECT * FROM parts WHERE part= "$partTypeVar" AND WHERE make = "$makeTypeVar" AND WHERE model = "$modelTypeVar"'); 

我假設這是您的變量的正確順序。

我希望這個幫助!

+0

感謝您的幫助。我做了一些調整,並得到了我試圖做的基本版本。男人,你認爲學習php/mysql的最佳方式是什麼?剛進入並做小項目?這就是我開始做的事情,但我總是碰到我想做的事情,以及不在書中或在教程中討論的問題。有什麼建議麼? – watercolor12

+0

只需閱讀教程和最佳做法。詢問,詢問並再次提問。 :P當你遇到一些功能問題時,只需訪問http://php.net/並閱讀它。 –

0

如果我理解你的問題,當提交form時,你想要query這個數據庫與選定的值。

實施例使用AND

// Prepare the Query 
$query = sprintf(
      "SELECT * FROM parts WHERE part='%s' AND make='%s' AND model='%s'", 
      mysql_real_escape_string($_POST['drop1']), 
      mysql_real_escape_string($_POST['drop2']), 
      mysql_real_escape_string($_POST['drop3']) 
     ); 

// Execute the Query 
mysql_query($query); 

這將選擇從符合這些三個值,該表部分中的所有行。

實施例使用OR

// Prepare the Query 
$query = sprintf(
      "SELECT * FROM parts WHERE part='%s' OR make='%s' OR model='%s'", 
      mysql_real_escape_string($_POST['drop1']), 
      mysql_real_escape_string($_POST['drop2']), 
      mysql_real_escape_string($_POST['drop3']) 
     ); 

// Execute the Query 
mysql_query($query); 

這將選擇從匹配任何這三個值,該表部分中的所有行。

你可以閱讀更多關於這一點:

mysql_query

mysql_real_escape_string

MySQL 5.6 Reference Manual :: 12 Functions and Operators :: 12.3 Operators

+0

比你的幫助 – watercolor12

0
<select name="myFilter"> 
<option value="Chooseafilter" name="default">Choose a filter...</option> 
<option value ="Lastname" name="opLastName">Last Name</option> 
<option value="Firstname" name="opFirstName">First Name</option> 
<select> 
<li><!--TEXT SEARCH INPUT--><input type="text" name="search_filter" /></li> 
... 
dbconnection();#assume that all connection data is here   
... 
$filter = $_POST['myFilter']; # 
... 

switch($filter) 
    { 
     case "Lastname": 
     $selectedoption = "profile_name"; 
     break; 

     case "Firstname": 
     $selectedoption="profile_first_name"; 
     break; 

     case "Chooseafilter": 
     $selectedoption = ""; 
     break; 
    }   

$result = pg_query($db_con, "SELECT * FROM profile WHERE ".$selectedoption." LIKE'%$_POST[search_filter]%'"); 
$row = pg_fetch_assoc($result); 
if (isset($_POST['submit'])) 
    { 
     while($row = pg_fetch_assoc($result)) 
     { 
     echo"<ul> 
       <form name='update' action='' method='POST'> 
       <li>Guest Last Name:</li> 
       <li><input type='text' name='profile_name_result' value='$row[profile_name]' /></li> 
       <li>Guest First Name:</li> 
       <li><input type='text' name='profile_first_name_result' value='$row[profile_first_name]' /></li> 
       <li><input type='submit' value='Update' name='update'></input></li> 
    ...