2012-12-26 140 views
0

我已經開始使用PHP和HTML,並希望使用三個下拉列表(選擇標記)執行簡單的代碼。但是當我從一個選擇,其他兩個選定的值消失。我應該在提交時保存值,然後回顯。如果是,我該怎麼做。示例代碼將不勝感激。PHP和HTML選擇標記

<?php // formtest_2.php 

$name_vid = $name_type = $name_model = ""; 

if (isset($_POST['vid']))$name_vid=($_POST['vid']); 
else $name_vid="no"; 

if (isset($_POST['type']))$name_type=sanitizeString($_POST['type']); 
else $name_type="no"; 

if (isset($_POST['model']))$name_model=sanitizeString($_POST['model']); 
else $name_model="no"; 

echo <<<_END 
<html> 
    <head> 
     <title>Form Test Two</title> 
    </head> 
    <body> 

    Make your selection: 

<form action="formtest_2.php" method="post"> 

    <select name="vid" size="1"> 

    <option value="" selected>Product</option> 

    <option value = "apple">apple</option> 
    <option value = "cherry">cherry</option> 
    <option value = "orange">orange</option> 

    </select> 

<input type="submit"/><br />   

    <select name="type" size="1"> 

    <option value="" selected>Color</option> 

    <option value = "green">green</option> 
    <option value = "red">red</option> 
    <option value = "orange">orange</option> 

    </select> 

<input type="submit"/><br />   

    <select name="model" size="1"> 

    <option value="" selected>Model</option> 

    <option value = "1-a">1-a</option> 
    <option value = "2-b">2-b</option> 
    <option value = "3-c">3-c</option> 

    </select> 

<input type="submit"/><br /> 

    </form> 
    </body> 
</html> 
_END; 

echo "Your selection is: $name_vid and $name_type and $name_model"; 

function sanitizeString($var) 
{ 
    $var = stripslashes($var); 
    $var = htmlentities($var); 
    $var = strip_tags($var); 

    return $var; 
} 
?> 
+0

如果我理解您的問題是正確的,您的選擇將在您提交後消失。如果您希望保持選定狀態,則應過濾

+0

我有3個下拉列表。每個都有單一的選擇。當我從第一個列表中選擇蘋果。它看起來像「你的選擇是:蘋果和(沒有)和(沒有)」。接下來我從第二個紅色列表中選擇。它會像「你的選擇是:(無),紅色和(無)」。我想要的是「你的選擇是:蘋果,紅色和3-C」。 – user1706819

+0

我選擇蘋果,綠色,1-c並提交,結果如下: 您的選擇是:蘋果,綠色和1-a。所以不明白是什麼問題? – MJoraid

回答

0

嘗試了這一點,我做了一個提交按鈕,並重新選擇的值提交後:

<?php 
// formtest_2.php 

$name_vid = $name_type = $name_model = ""; 

if (isset($_POST['vid'])) 
    $name_vid = ($_POST['vid']); 
else 
    $name_vid = "no"; 

if (isset($_POST['type'])) 
    $name_type = sanitizeString($_POST['type']); 
else 
    $name_type = "no"; 

if (isset($_POST['model'])) 
    $name_model = sanitizeString($_POST['model']); 
else 
    $name_model = "no"; 


/////////////////// 
if($name_vid == 'apple') 
{ 
    $v1 = 'selected'; 
} 
elseif($name_vid == 'cherry') 
{ 
    $v2 = 'selected'; 
} 
elseif($name_vid == 'orange') 
{ 
    $v3='selected'; 
} 
//////////////////////// 
if($name_type == 'green') 
{ 
    $t1 = 'selected'; 
} 
elseif($name_type == 'red') 
{ 
    $t2 = 'selected'; 
} 
elseif($name_type == 'orange') 
{ 
    $t3='selected'; 
} 


/////////////////////// 
if($name_model == '1-a') 
{ 
    $m1 = 'selected'; 
} 
elseif($name_model == '2-b') 
{ 
    $m2 = 'selected'; 
} 
elseif($name_model == '3-c') 
{ 
    $m3='selected'; 
} 

?> 
<html> 
    <head> 
     <title>Form Test Two</title> 
    </head> 
    <body> 

     Make your selection: 

     <form name="fruite_form" action="formtest_2.php" method="post"> 

      <select name="vid" size="1"> 

       <option value="" selected>Product</option> 

       <option <?=$v1?> value = "apple">apple</option> 
       <option <?=$v2?> value = "cherry">cherry</option> 
       <option <?=$v3?> value = "orange">orange</option> 

      </select> 



      <select name="type" size="1"> 

       <option value="" selected>Color</option> 

       <option <?=$t1?> value = "green">green</option> 
       <option <?=$t2?>value = "red">red</option> 
       <option <?=$t3?>value = "orange">orange</option> 

      </select> 



      <select name="model" size="1"> 

       <option value="" selected>Model</option> 

       <option <?=$m1?> value = "1-a">1-a</option> 
       <option <?=$m2?>value = "2-b">2-b</option> 
       <option <?=$m3?>value = "3-c">3-c</option> 

      </select> 

      <input name="submitButtom" id="submitButton" type="submit"/><br /> 

     </form> 
    </body> 
</html> 


<? 
echo "Your selection is: $name_vid and $name_type and $name_model"; 

function sanitizeString($var) 
{ 
    $var = stripslashes($var); 
    $var = htmlentities($var); 
    $var = strip_tags($var); 

    return $var; 
} 
?> 

隨意頂部加回您的提交按鈕。 但給每一個獨特的名字,也不要忘記命名你的形式,作爲一個良好的做法,給一個id,這將是一樣的名稱屬性。

更新:只是爲了確保你真的得到一個職位,因爲這是你最初的問題,打印您的代碼

echo $_POST['vid'] . ' ' . $_POST['type'] . ' ' . $_POST['model'] . '<br/><br/>'; 

結束,看看後實操後的值提交,如果你從帖子中得到一個值,但不是來自你指定的變量,那麼檢查你頂部使用的條件來分配你的值。

//你需要檢查postset是否有實際值,只有varibale應該被分配。就像Sithu說的一樣。

+0

我試過你的建議重新選擇值。由於我只有一個提交按鈕,它的工作原理,我認爲重新選擇是沒有必要的。但問題仍在桌面上。爲什麼在提交一個值後其他值爲空。是因爲頁面更新嗎? – user1706819

+0

沒有回覆和解釋。無論如何,感謝穆罕默德和Sithu提供的幫助。 – user1706819

+0

嘿,那是六點半,所以我不得不離開辦公室到達家中。 – MJoraid

1

我想你需要在提交後重新選擇下拉列表的值。下面的代碼將是一個修復。

<?php // formtest_2.php 
$name_vid = $name_type = $name_model = "(nothing)"; 

if (isset($_POST['vid']) && $_POST['vid']) $name_vid=($_POST['vid']); 

if (isset($_POST['type']) && $_POST['type']) $name_type=sanitizeString($_POST['type']); 

if (isset($_POST['model']) && $_POST['model']) $name_model=sanitizeString($_POST['model']); 
?> 
<html> 
    <head> 
     <title>Form Test Two</title> 
    </head> 
    <body> 

    Make your selection: 
    <form action="formtest_2.php" method="post"> 
     <select name="vid" size="1">  
      <option value="">Product</option>   
      <option value = "apple" <?php if($name_vid == 'apple') echo 'selected="selected"'; ?>>apple</option> 
      <option value = "cherry" <?php if($name_vid == 'cherry') echo 'selected="selected"'; ?>>cherry</option> 
      <option value = "orange" <?php if($name_vid == 'orange') echo 'selected="selected"'; ?>>orange</option>  
     </select> 

     <br /> 

     <select name="type" size="1"> 
      <option value="">Color</option>  
      <option value = "green" <?php if($name_type == 'green') echo 'selected="selected"'; ?>>green</option> 
      <option value = "red" <?php if($name_type == 'red') echo 'selected="selected"'; ?>>red</option> 
      <option value = "orange" <?php if($name_type == 'orange') echo 'selected="selected"'; ?>>orange</option>  
     </select> 

     <br />   

     <select name="model" size="1">  
      <option value="">Model</option>  
      <option value = "1-a" <?php if($name_model == '1-a') echo 'selected="selected"'; ?>>1-a</option> 
      <option value = "2-b" <?php if($name_model == '2-b') echo 'selected="selected"'; ?>>2-b</option> 
      <option value = "3-c" <?php if($name_model == '3-c') echo 'selected="selected"'; ?>>3-c</option>  
     </select> 

     <input type="submit"/><br /> 
    </form> 
    </body> 
</html> 
<?php 
echo "Your selection is: $name_vid and $name_type and $name_model"; 

function sanitizeString($var) 
{ 
    $var = stripslashes($var); 
    $var = htmlentities($var); 
    $var = strip_tags($var); 

    return $var; 
} 
?> 

我不會用heredoc語法( 「< < <」)來打印HTML。

+0

沒有工作。不知道該說些什麼。 – user1706819

+0

@ user1706819,那麼,我不明白你在做什麼。你想要達到什麼目的? – Sithu

+0

@ user1706819,您是否看到我的「if」條件?僅僅是「isset」是不夠的。 – Sithu