PHP-提交后保留选中的文本

PHP-提交后保留选中的文本,php,select,submit,Php,Select,Submit,我想在提交后将所选文本保留在下拉列表中。 这是我表格中的选择 <form id="form1" method="post" action=""> <input type="text" name='search' id='search' /> <?php $db = mysql_connect($dbHost,$dbUser,$dbPass); mysql_select_db($dbname,$db); $sql = mysql_query("SELECT * FR

我想在提交后将所选文本保留在下拉列表中。 这是我表格中的
选择

<form id="form1" method="post" action="">
<input type="text" name='search' id='search' />
 <?php
$db = mysql_connect($dbHost,$dbUser,$dbPass);
mysql_select_db($dbname,$db);
$sql = mysql_query("SELECT * FROM adminklasifier");
while($row = mysql_fetch_array($sql)) {
    $clsfr = $row['klasifier'];
    $sql = mysql_query("SELECT * FROM adminklasifier");
        echo '<select name="cmake" id="cmake" onchange="val();" autofocus width="10">';
        echo '<option value="">-Pilih Domain Klasifikasi-</option>';
        while($row = mysql_fetch_array($sql)) {
            echo '<option ' . ($clsfr==$row['klasifier']) . ' value="'.$row['klasifier'].'">'.$row['klasifier'].'</option>'; 
    }
    echo '</select>';
}
?>
<input type="submit" id='button' name='button'></input>
</form>

我已经分析了其他案例,但还没有成功


您能给我一个建议吗?

发布的用户响应将在您页面上的
$\u POST
数组中。在您的情况下,“cmake”表单字段的值将作为
$\u POST['cmake']
提供。在遍历查询结果时,只需将“selected”打印到相应的选项中即可

echo '<option ' . ($clsfr==$row['klasifier']) . ' value="'.$row['klasifier'].'"'.(($_POST['cmake'] == $row['klasifier']) ? 'selected=selected' : NULL).'>'.$row['klasifier'].'</option>';
echo'.$row['klasifier'].';

我总是喜欢使用表单帮助器来创建我的选择

function formSelect($name, $options, $value, $attributes = array()){
     $str =  "<select name='".$name."'";
     foreach($attributes as $k=>$v){
         $str.=" ".$k."='".$v."'";
     }
     $str.= ">";
     foreach($options as $optionLabel=>$optionValue){
           $str.= "<option value='".$optionValue."' ";
           if($value == $optionValue) $str.= "selected='selected'";
           $str.= ">".$optionLabel."</option>";
     }
     $str.= "</select>";
     return $str;
}
函数formSelect($name、$options、$value、$attributes=array()){ $str=”“; foreach($options作为$optionLabel=>$optionValue){ $str.=“..$optionLabel.”; } $str.=”; 返回$str; }
然后以你的形式,你可以这样做

<form id="form1" method="post" action="">
<input type="text" name='search' id='search' />
 <?php
$db = mysql_connect($dbHost,$dbUser,$dbPass);
mysql_select_db($dbname,$db);

$options = array();
$sql = mysql_query("SELECT * FROM adminklasifier");

while($row = mysql_fetch_array($sql)) {
    $options[$row['klasifier']] = $row['klasifier'];
}

// add the default option
array_unshift($options, "-Pilih Domain Klasifikasi-");
// call the helper
$attributes = array("onchange"=>"val();","autofocus"=>"autofocus","width"=>"10");
echo formSelect("cmake", $options, isset($_POST["search"])?$_POST["search"]:"", $attributes);
?>
<input type="submit" id='button' name='button'></input>
</form>


您可能希望查看模板框架(如Smarty或Moustach)或全功能应用程序框架(如Zend framework、Symphony、Yii或Codeigniter),而不是手动执行此操作。他们将花费大量的精力制作一个PHP应用程序(并使您的代码更安全地引导)。@dethtron5000:在不学习基础知识的情况下学习一个模板框架(或任何框架),这比用其他方法来做会更让您感到沮丧。@MadaraUchiha可能,是的,但不一定。一个好的框架还可以帮助积极的工程师学习OO技术、关注点分离、体系结构等。一个好的框架还可以帮助降低SQL/XSS注入和其他安全问题的风险。我同意这不能代替对语言的基本理解,但我宁愿有人从一个框架中学习,而不是启动一个不安全/僵化的站点……我不喜欢任何有
echo”“
的行,尤其是在function@RoyalBg你在哪里看到的?在你的代码中,回显一个函数,该函数已将html分配给一个变量。。。完全混乱的业务逻辑表示。@RoyalBg您的方法是什么?另外,我的函数中唯一的业务逻辑是构建select html