mysql表中的自定义php函数下拉列表


Custom php function dropdown list from mysql table

PHP noob面临挑战。

我有一个自定义的php函数:

function country_dropDown(){
    $dropDown = mysql_query("SELECT * FROM countries");
        while ($record = mysql_fetch_array($dropDown)) {
            echo '<option value="' . $record['id'] . '">' . $record['name'] . '</option>';
        }
}

"countries"表有2个字段=id,name。

这个"国家"表中有200多行。

我可以在html表单中调用此函数,该表单需要用户输入才能从列表中的可用国家/地区列表中进行选择,如下所示

<select name="classID"><?php country_dropDown() ?></select>

我有一些问题,希望有人能帮我

  1. 当我在html表单中调用这个函数并查看源代码时,我可以看到所有249个国家都是"选择选项"是否有一种最佳实践或有效的方法,使其不会在源代码中列出所有国家/地区

  2. 下拉列表总是显示"Afganistan",这是"countries"表中的第一行如何修改我的自定义函数,使其不显示任何值或显示文本"Select Country"

  3. 我有另一个名为"student"的表,有两个字段:studentName,countriesID。我有一个html表单,可以编辑学生的记录。它将学生姓名的默认值填充到输入文本字段中,但如何使下拉函数从行中"选择"学生的"countryID"它总是显示"Afganistan"。

  4. 是否有最佳实践方法或更有效的方法来处理此国家/地区下拉选择,而不是我的自定义功能

我感谢你的帮助。

1)不,不是真的-如果它不在源代码中,那么它就不会在页面中呈现。

2&3) 您只需在国家/地区之前添加"请选择一个"选项。您需要一个具有当前"countId"的变量并对其进行测试。如果它与循环中的当前变量相同,请为该选项添加一个selected属性:

$countryID = 32; //This will be pulled from the student's record prior to this code.
echo '<option value=0>Please select one</option>';
while ($record = mysql_fetch_array($dropDown)) {
    echo '<option value="' . $record['id'] . '" '.($countryID == $record['id'] ? 'selected' : '').'>' . $record['name'] . '</option>';
}

4) 不是。除了可能使用不推荐使用的数据库库之外。

最佳实践#1:

<select name="classID">
    <option value="invalid">--- select a country:</option>
    <?php country_dropDown() ?></select>

最佳实践#2:

...
echo '<option ' . 
         ($record['id']==$studentsLangId?' selected="selected" ':'' ) . 
      ' value="'.  $record['id'] . '">' . $record['name'] . '</option>';
  1. 我不知道我是否理解你的意思。如果您想访问select标记内的完整列表,它将始终显示在源代码中。

  2. 只需在列表顶部添加一个新的选项元素。例如:

    <select name="classID"> <option value="0">none</option> <?php country_dropDown() ?> </select>

  3. 当两个id字段匹配时,您必须获取与用户关联的国家/地区的id,并在option元素中使用"selected"属性。

  4. 当然。您必须使用PDO,因为mysql_query函数已被声明为过时,并且不要使用*来获取所有字段,而是编写它们的名称。

  1. 要显示"Select Country"而不是数据库中的第一行,可以通过以下三种方式进行:

    2.a: write echo '<option value=0>Please Select Country</option>' before your while loop  
    2.b: make one entry in database (which should be the first row) as **"Select Country"**  
    2.c: <select name="classID"><option value=0>Please Select Country</option><?php country_dropDown() ?></select>  
    
  2. 你为此做了什么?

  3. 不完全是
  1. 只需在"While"之前创建一个空的选择标签

    <option value="">Select</option>
  2. 您应该在while方法中包含if运算符,因此,如果用户的国家/地区等于while循环中的当前国家/地区,则在"标记中添加一个额外的selected="selected"。

  3. 我也是这样做的