使用PHP和SQL将信息从数据库插入下拉列表菜单

时间:2015-10-29 07:39:17

标签: php mysql

我如何将我的数据库信息插入列表?

<?php

$db_host = 'localhost';
$db_name= 'site';
$db_table= 'tablesite';
$db_user = 'root';
$db_pass = '';




$con = mysql_connect($db_host,$db_user,$db_pass) or die("خطا در اتصال به پايگاه داده");
$selected=mysql_select_db($db_name, $con) or die("خطا در انتخاب پايگاه داده");
mysql_query("SET CHARACTER SET  utf8");
$dbresult=mysql_query("SELECT * FROM  $db_table WHERE job<>''",$con);
while($amch=mysql_fetch_assoc($dbresult))
{?>

<select>

<option value="$amch['job_name']"></option>

</select>

例如我在我的数据库中有15个作业,现在我想要一个包含所有15个作品的下拉列表。

5 个答案:

答案 0 :(得分:1)

<?php
$db_host = 'localhost';
$db_name= 'site';
$db_table= 'tablesite';
$db_user = 'root';
$db_pass = '';

$con = mysql_connect($db_host,$db_user,$db_pass) or die("خطا در اتصال به پايگاه داده");
$selected=mysql_select_db($db_name, $con) or die("خطا در انتخاب پايگاه داده");
mysql_query("SET CHARACTER SET  utf8");
$dbresult=mysql_query("SELECT * FROM  $db_table WHERE job<>''",$con);
echo "<select name=\"dropdown\">";
while($amch=mysql_fetch_array($dbresult))
{
    echo "<option value=".$amch['job_name'].">".$amch['job_label']."</option>";
}
echo "</select>";
?>

尝试这一点,其中job_label将是数据库中实际作业的名称,该作业在下拉列表中显示为值。而job_name是您希望它必须识别在下拉列表中选择了哪个作业的实际值($ _POST [&#39;下拉&#39;]的值)。

答案 1 :(得分:1)

你需要改变你的while循环:

$dbresult=mysql_query("SELECT * FROM  $db_table WHERE job<>''",$con);
echo '<select>';
echo '<option></option>'; // add a empty select as first dropdown element, you can use <option value="">-Select-</option> OR <option value="">-Not Applicable-</option>
while($amch=mysql_fetch_assoc($dbresult))
{
   echo '<option value="'.$amch['job_name'].'">'.$amch['job_name'].'</option>';
}
echo '</select>';

此处不需要value属性,因为选项文本相同。

答案 2 :(得分:1)

你应该将while循环放在select块中,并使用mysqli(改进) -

<?php

$db_host = 'localhost';
$db_name= 'site';
$db_table= 'tablesite';
$db_user = 'root';
$db_pass = '';




$con = mysqli_connect($db_host,$db_user,$db_pass,$db_name) or die("خطا در اتصال به پايگاه داده");
mysqli_query("SET CHARACTER SET  utf8");
$dbresult=mysqli_query("SELECT * FROM  $db_table WHERE job<>''",$con);
?>

<select>

<?php while($amch=mysqli_fetch_assoc($dbresult))
{?>

<option value="<?php echo $amch['job_name']?>"><?php echo $amch['job_name']?></option>

<?php } ?>

</select>

答案 3 :(得分:1)

$con = mysql_connect($db_host,$db_user,$db_pass) or die("خطا در اتصال به پايگاه داده");
$selected=mysql_select_db($db_name, $con) or die("خطا در انتخاب پايگاه داده");
mysql_query("SET CHARACTER SET  utf8");
$dbresult=mysql_query("SELECT * FROM  $db_table WHERE job<>''",$con);
echo "<select>";
while($amch=mysql_fetch_assoc($dbresult))
{
    ?>
    <option value="<?php echo $amch['job_name']; ?>"><?php echo $amch['job_name']; ?></option>
    <?php
}
echo "</select>";

答案 4 :(得分:1)

我知道这已经很晚了,但我之前在评论中写道,不推荐使用mysql,使用它并不好,大多数答案都是基于弃用的方法。

使用mysql的风险在于,当您过滤作业时,您可能会冒一些身体注入sql语句并返回所有作业列表的风险,并且在这种情况下可能会使服务器过载。

另一件事是你的变量名称会让你长期困惑,我会使用可理解的名字。

以下是您的代码的外观:

<?php

$db_hostname = 'localhost';
$db_database = 'site';
$db_username = 'root';
$db_password = '';

$db_table = 'tablesite';
$job = '';

// Create connection
$conn = new mysqli($db_hostname, $db_username, $db_password, $db_database);

// Check connection
if ($conn->connect_error)
    die("خطا در اتصال به پايگاه داده" . $conn->connect_error);

$job = mysqli_real_escape_string($conn, $job);

//since user and password is not blank, find user info using the email and password entered by user
$sql = "SELECT * FROM `$db_table` WHERE job <> ?";
$stmt = $conn->prepare($sql);

$stmt->bind_param("s", $job);
$stmt->execute();

$output = $stmt->get_result();

echo "<select>";
while ($row = $output->fetch_array(MYSQLI_NUM))
{
    echo "<option value=" . $row[0] . ">" . $row[1] . "</option>";
}
echo "</select>";