2015-12-18 44 views
0

這是我第一次使用此媒體尋求幫助。我想知道在我的代碼中如何包含兩個列表框。一個查詢數據庫並通過一個按鈕將其發送給另一個,並使用多個選項執行此操作,然後在php代碼中將第二個列表框中的數據放入表數據庫中。謝謝。列表框中的許多元素與另一個

<?php 
include("server.php"); 
$conexion = mysql_connect($server,$user, $pass) or die ("<br> No se puede conectar con la base de datos"); 
$conectarbase = mysql_select_db ($bd); 

$consulta = mysql_query("SELECT * FROM modalidad") 

?> 
<html lang = "es"> 
    <head> 
    <meta charset = "iso-8859-1"/> 
    <meta name = "description" content = "Ejemplo de HTML5"/> 
    <meta name = "keywords" content = "HTML5, CSS3, Javascript"/> 
    <title>PRECEPTORÍA</title> 
    <link rel="shortcut icon" href="./style/favicon.png" /> 
    <link rel = "stylesheet" href = "./style/style.css"> 
    </head> 
    <body class = "body"> 
    <section class = "section"> 
     <div class = "div"> 
     <form> 
      <fieldset id = "fieldsetalum"> 
      <legend id = "legendalum">Registro de nuevos alumnos</legend> 
      <select name="combo1" multiple size="8"> 
       <?php 
while ($fila = mysql_fetch_row($consulta)) 
{ 
echo "<option value='".$fila['0']."'>".$fila['1']."</option>"; 
} 
?> 
      </select> 
      <select name="combo2" multiple size=></select> 
      </fieldset> 
     </form> 
     </div> 
    </section> 
    </body> 
</html> 
+2

停止使用* mysql **函數。他們已被棄用。接下來的事情,你想要什麼。 –

+0

我認爲您需要使用會話將第二個組合框的值構建到數組中,同時組裝主要的一個 - 我會看看是否可以爲您構建的框架創建一個框架。價值在哪裏?第二級 - '$ fila [2]];'等等? – Steve

+0

@ShakaDiocares嘗試把新的代碼塊放在一個php頁面上,看看它的作用 - 你應該能夠把你的數據庫值放入它,我希望。讓我知道,如果這是你想要的東西。 – Steve

回答

0

你的表單需要一個操作來提交自己:

 <form name="form" id="form" action="<?php echo echo htmlspecialchars($_SERVER["REQUEST_URI"]); ?>" method="post"> 

您可以添加一個onchange();事件您select1下拉

 <select name="combo1" multiple size="8" onChange="submit_this();"> 

,並有一個JavaScript腳本在<head>

 <script language="javascript"> function submit_this(){ this.form.submit();}</script> 

然後,你將不得不使用PHP來從提交的網頁收集值

 $combo1 = mysqli_real_escape_string($_POST['combo1']); 

和那麼您可以使用第二個下拉菜單返回頁面,其構建方式與創建第一個下拉菜單的方式大致相同,使用您從第一個下拉菜單中獲取的數據進行設置第二個。你可以換第一個下拉在isset()

 if(!isset($combo1)){ 
     // make your first select boxes 
     } 

,第二個在

 if(isset($combo1)){ 
     // make your second select boxes if combo1 returned a value 
     } 

,以便需要時纔會出現。

正如@NanaPartykar所說,mysqli是唯一的出路。

這將是依賴於JavaScript,因此,如果你願意,你可以有一個提交的,而不是JavaScript的功能按鈕:

 <input type="submit" name="submit" value="Pick Sizes" /> 

這看起來如何使用選擇框一個方便和借鑑E:PHP code to get selected text of a combo box

我希望這會給你一個關於如何完成的想法 - SESSION變量在第二個下拉列表的循環中仍有待正確定義,但它們可能直接來自您的數據庫,而不是來自會話數組用於演示目的。

所有值都設置爲數字;

intval();將提交的任何內容轉換爲整數以清理它。

然後,您可以找回從您最初從數據庫中設置的會話變量提交的內容的相應值。

這樣,你只會讓您的下拉列表中的單個數字值,你可以用它來查找得到的答案你想

<?php session_start(); ?> 
    <!DOCTYPE html> 
    <html lang = "es"> 
    <head> 
    <title>PRECEPTORÍA</title> 
    </head> 
    <body> 
    <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post"> 
    <?php 
    $main_opt = array(); 
    $_SESSION['opt_vals'] = array(); 
    $main_opt[0] = "Select Item";  
    $main_opt[1] = "Ice Cream"; 
    $main_opt[2] = "Trousers"; 
    $main_opt[3] = "Tee Shirts"; 
    $_SESSION['opt_vals'][1][0] = "Select Flavour"; 
    $_SESSION['opt_vals'][1][1] = "Vanilla"; 
    $_SESSION['opt_vals'][1][2] = "Chocolate"; 
    $_SESSION['opt_vals'][1][3] = "Strawberry"; 
    $_SESSION['opt_vals'][1][4] = "Tuttifrutti"; 
    $_SESSION['opt_vals'][2][0] = "Select Colour"; 
    $_SESSION['opt_vals'][2][1] = "Black"; 
    $_SESSION['opt_vals'][2][2] = "Red"; 
    $_SESSION['opt_vals'][2][3] = "Green"; 
    $_SESSION['opt_vals'][2][4] = "Blue"; 
    $_SESSION['opt_vals'][3][0] = "Select Size"; 
    $_SESSION['opt_vals'][3][1] = "Small"; 
    $_SESSION['opt_vals'][3][2] = "Medium"; 
    $_SESSION['opt_vals'][3][3] = "Large"; 
    $_SESSION['opt_vals'][3][4] = "X Large"; 
    $i = 0; 
    if(!isset($_POST['combo1']) && !isset($_POST['combo2'])){ 
     echo '<select name="combo1" onChange="submit();">' . "\n"; 
     //while ($fila = mysqli_fetch_row($consulta)){ 
     while($i < count($main_opt)){ 
     echo "<option value='".$i."'>".$main_opt[$i]."</option>\n";  
      $o = 0; 
      // load your sub options array here 
      if(!$_SESSION['opt_vals'][$i]) $_SESSION['opt_vals'][$i] = array(); 
      while($i < count($_SESSION['opt_vals'][$i])){ 
      $_SESSION['opt_vals'][$i] = $o; 
      if(!$_SESSION['opt_vals'][$i]) $_SESSION['opt_vals'][$i] = array(); 
      $_SESSION['opt_vals'][$i][$o] = $_SESSION['opt_vals'][$i][$o]; 
      $o++; 
      } 
     $i++; 
     } 
    echo '</select>' . "\n";  
    }else{ 
     if(intval($_POST['combo1']) >= 1) $_SESSION['combo1_val'] = $combo1_val =intval($_POST['combo1']); 
     if(intval($_POST['combo1']) >=1){ 
      $i = 0; 
      echo '<select name="combo2" onChange="submit();">' . "\n"; 
      while($i < count($_SESSION['opt_vals'][$combo1_val])){ 
      echo "<option value='".$i."'>".$_SESSION['opt_vals'][$combo1_val][$i]."</option>\n"; 
      $i++; 
      } 
     } 
    echo '</select>' . "\n"; 
    } 
    if(intval($_POST['combo2']) >= 1) $_SESSION['combo2_val'] = $combo2_val =intval($_POST['combo2']); 
    if($_SESSION['combo1_val'] >=1 && $_SESSION['combo2_val'] >=1){ 
    // use the result to do whatever you want 
    echo 'Thank you! You have selected ' . $_SESSION['opt_vals'][$_SESSION['combo1_val']][$_SESSION['combo2_val']] . " " . $main_opt[$_SESSION['combo1_val']] . '.'; 
    }  
    // Do any mysqli adjustments to your database here 
    // reset to go again 
    if($_SESSION['combo2_val'] >= 1){ 
    $_SESSION['combo1_val'] = 0; 
    $_SESSION['combo2_val'] = 0; 
    } 
    ?> 
      </form> 
      <a href="<?php echo htmlspecialchars($_SERVER['REQUEST_URI']); ?>">Click to start a new selection</a> 
      </body> 
    </html> 

你可以刪除onChange="submit();"並與正常提交按鈕替換在表格上,如果你願意。

+0

非常感謝您的回答,但我無法完全理解。我不會說英語,翻譯人員會破壞他們告訴我的所有內容,如果您能更正我的代碼會更好理解,但非常感謝。 –

相關問題