2014-03-12 66 views
0

我正在寫一個php表單,並且我無法獲取下拉框和複選框,以便在填寫我的詳細信息時粘住,但不要點擊它將保留其他所有內容填充,但沒有填寫一部分。我能做到這一點爲輸入文本和單選按鈕,但我不能讓它在HTML結束做了下拉菜單和複選框PHP粘性表單下拉框和複選框

<!DOCTYPE html> 
<style> 
@import url(stickyTextInput.css); 
</style> 
<?php 

if(isset($_REQUEST["left"])) 
{ 
    process_form(); 
} 
else 
{ 
    display_form_page(''); 
} 
?> 

<?php 

function display_form_page($error) 
{ 
    $self =$_SERVER['PHP_SELF'];  
    $first_name = isset($_REQUEST['name']) ? $_REQUEST['name']:''; 
    $last_name = isset($_REQUEST['lastname']) ? $_REQUEST['lastname']:''; 
    $age = isset($_REQUEST['age']) ? $_REQUEST['age']:''; 
    $gender = isset($_REQUEST['gender']) ? $_REQUEST['gender']:''; 
    $color = isset($_REQUEST['color']) ? $_REQUEST['color']: ''; 
    $food = isset($_REQUEST['food']) ? $_REQUEST['food']:''; 
?> 
<html> 
<head> 
<title> 
Forms Sticky input 
</title> 
<style> 
@import url(stickyTextInput.css); 
</style> 
<style type="text/css"> 
.error 
{ 
color:#ff0000 
} 
</style> 
</head> 
<body> 
<?php 
if($error) 
{ 
    echo "<p>$error</p>\n"; 
} 
?> 
<form action= "<?php echo $self?>" method = "post"> 
<h1>Forms-Sticky Input</h1> 
<label>First Name:</label> 
<input type="text" size="10" maxlength="40" name="name" value = "<?php echo $first_name?>"> 
<br> 

<label>Last Name:</label> 
<input type="text" size="10" maxlength="40" name="lastname" value = "<?php echo $last_name?>"> 
<br> 

<label>Age:</label> 
<input type="text" name="age" size="10" value="<?php echo $age?>"> 
<br> 

<label>Gender</label> 
<input type="radio" name="gender" value="male" <?php check($gender, "male")?>>Male 
<input type="radio" name="gender" value="female" <?php check ($gender, "female")?>>Female 
<br> 

<label>Select favourite Colour</label> 
<select name= "color"> 
    <option <?php checkradio($color, "Red")?>>Red 
    <option <?php checkradio($color, "Blue")?>>Blue 
    <option <?php checkradio($color, "Green")?>>Green 
    <option <?php checkradio($color, "Pink")?>>Pink 
    <option selected="selected" disabled="disabled"> 
</select> 
<br> 

<label>Food</label> 
<input type="checkbox" name="food[]" value="beans" <?php checkbox ($food, "beans")?>>Beans 
<input type="checkbox" name="food[]" value="crisps" <?php checkbox ($food, "crisps")?>>Crisps 
<input type="checkbox" name="food[]" value="lemons" <?php checkbox ($food, "lemons")?>>Lemons 
<br> 



<div id="buttons"> 
<input type="submit" name="left" id="left" value="Submit" > 
<input type="reset" name="right" id="right" value="Reset" > 
</div> 

</form> 
</body> 
</html> 
<?php 
} 
?> 

<?php 
// If $group has the value $val then select this list item 
function check($group, $val) 
{ 
if ($group === $val) 
{ 
    echo 'checked = "checked"'; 
} 
} 
?> 
<?php 
function checkradio($group, $val) 
{ 
if ($group === $val) 
{ 
    echo 'selected = "selected"'; 
} 
} 
?> 

<?php 
// If $group has the value $val then select this list item 
function checkbox($group, $val) 
{ 
if ($group === $val) 
{ 
    echo 'checked = "checked"'; 
} 
} 
?> 

<?php 
function process_form() 
{ 
    $error = validate_form(); 
    if($error) 
    { 
     display_form_page($error); 
    } 
    else 
    { 
     display_output_page(); 
    } 
} 
?> 
<?php 
    function validate_form() 
    { 
     $first_name = trim($_REQUEST['name']); 
     $last_name = trim($_REQUEST['lastname']); 
     $age = trim($_REQUEST['age']); 

     $gender = isset($_REQUEST['gender']) ? $_REQUEST['gender']:''; 
     $color = isset($_REQUEST['color']) ? $_REQUEST['color']:''; 
     $food = isset($_REQUEST['food']) ? $_REQUEST['food']:''; 
     $error = ''; 

     $reg_exp = '/^[a-zA-Z\-\']+$/'; 
     $reg_exp1 = '[0-9]{3}'; 

     if(!preg_match($reg_exp, $first_name)) 
     { 
      $error .= "<span class=\"error\">First Name is invalid (letters, hyphens, ', only)</span><br>"; 
     } 

     if (!preg_match($reg_exp, $last_name)) 
     { 
      $error .= "<span class=\"error\">Last Name is invalid (letters, hyphens, ', only)</span><br>"; 
     } 

     if (!is_numeric($age)) 
     { 
      $error .= "<span class=\"error\">Age is invalid (numbers only)</span><br>"; 
     } 

     if (strlen($gender) == 0) 
     { 
      $error .= "<span class=\"error\">Select Male/Female</span><br>"; 
     } 

     if (strlen($color) == 0) 
     { 
      $error .= "<span class=\"error\">Select one color</span><br>"; 
     } 

     if (! is_array($food)) 
     { 
      $error .= "<span class=\"error\">You must select one  food</span><br>"; 
     } 

     return $error; 
} 
?> 

<?php 
function display_output_page() 
{ 
$first_name = trim($_REQUEST['name']); 
$last_name = trim($_REQUEST['lastname']); 
$age = trim($_REQUEST['age']); 

$gender = isset($_REQUEST['gender']) ? $_REQUEST['gender']:''; 
$color = isset($_REQUEST['color']) ? $_REQUEST['color']:''; 
$food = isset($_REQUEST['food']) ? $_REQUEST['food']:''; 
?> 
<html> 
<head><title>Form Results</title></head> 
<body> 
<h1>Form Results</h1> 
<?php 
echo " First Name: $first_name<br/>\n"; 
echo " Last Name: $last_name<br/>\n"; 
echo " Age: $age<br/>\n"; 
echo " Gender: $gender<br/>\n"; 
echo " Favourite Color: $color<br/>\n"; 
echo "<ul>"; 
if (is_array($food)) 
{ 
    echo "Favourite Food is:"; 
    foreach($food as $selection) 
    { 
     echo "<li>$selection</li>"; 
    } 
} 
echo "</ul>"; 
?> 
</body> 
</html> 
<?php 
} 
?> 

回答

0

可能是瀏覽器的問題,但大多數瀏覽器只需要「檢查」輸入元素的複選框。但是,您似乎正在輸出checked = "checked"這可能是問題所在。看看下面的示例:

<?php 
    $name = isset($_GET['name']) ? $_GET['name'] : ''; 
    $agree = isset($_GET['agree']) ? 'checked' : ''; 
    $title = isset($_GET['title']) ? $_GET['title'] : ''; 

?> 
<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Document</title> 
</head> 
<body> 
    <form action=""> 
     <input type="text" name="name" id="name" value="<?=$name;?>"> 
     <input type="checkbox" name="agree" id="agree" <?=$agree;?>> 
     <select name="title" id="title"> 
      <option value="Mr" <?=$title == 'Mr' ? 'selected' : ''?>>Mr</option> 
      <option value="Mrs" <?=$title == 'Mrs' ? 'selected' : ''?>>Mrs</option> 
      <option value="Miss" <?=$title == 'Miss' ? 'selected' : ''?>>Miss</option> 
     </select> 
     <button type="submit">submit</button> 
    </form> 
</body> 
</html> 

處理值後輸出的HTML應如下:

<form action=""> 
    <input type="text" name="name" id="name" value="test"> 
    <input type="checkbox" name="agree" id="agree" checked> 
    <select name="title" id="title"> 
     <option value="Mr">Mr</option> 
     <option value="Mrs">Mrs</option> 
     <option value="Miss" selected>Miss</option> 
    </select> 
    <button type="submit">submit</button> 
</form> 
+0

我不認爲這就是我要找的,因爲我必須使用?我有在 所以那裏有這裏有什麼錯誤的HTML \t <選擇name = 「COLOR」> \t \t <選項<?PHP的下拉列表($顏色, 「紅」)? >>紅 \t \t <選項<?PHP的下拉列表($顏色, 「藍色」)?>>藍 \t \t <選項<?PHP的下拉列表($顏色, 「綠色」)?>>綠色 \t \t <選項<?php下拉菜單($ color,「Pink」)?>> Pink \t \t