选择下拉值检查并显示数据库中是否不存在

时间:2015-08-01 19:47:05

标签: php mysql arrays mysqli

我已经<select>下拉列表,其中将字母填充为以下值

<select name="brand" required="required">
    <option value="">Select Brand</option>
        <?php foreach (range('A', 'Z') as $letter) {?>
    <option value="<?php echo $letter;?>"><?php echo $letter;?></option>
        <?php } ?>
</select>

现在我想检查数据库中已存在哪个字母。简单的方法是使用Ajax进行检查,可以使用change函数进行检查,如果数据库中已存在选定的字母,则设置警报,但wana仅使用PHP

进行检查

首次提取已从数据库

存储alphabets
<?php $sql = mysql_query("SELECT * FROM brand");
    while($row=mysql_fetch_array($sql)){ 
        $brandalphabet = $row["brandalphabet"];
    }
?>

有字母;

$letter = range('A', 'Z');

在此之后我完全忘记了如何检查哪个字母表退出以及如果根本不存在字母表该怎么办,那么如何仅使用数据库中不存在的字母填充<select>下拉列表。

注意: mysql仅供参考,我使用mysqli prepare语句,我也喜欢PDO,所以请不要使用mysql弃用的警告。

3 个答案:

答案 0 :(得分:1)

更改查询和columnName,同样,完成数组直到Z。

        <?php

$alphabetArray = array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
try
{
    $s = $conn->query("SELECT * from brand ")
}
catch(PDOException $e)
{
    echo $e->getMessage();
}
$arr = array();
?>
<select name="something">
<?php
while($alphabets = $s->fetch(PDO::FETCH_OBJ))
{
    $arr[] = $alphabets->brandname;
}

foreach($alphabetArray as $alphabet)
{
    if(!in_array($alphabet, $arr))
    {
        ?>
        <option value="<?php echo $alphabet; ?>"><?php echo $alphabet; ?></option>
        <?php
    }
}
?>
</select>

答案 1 :(得分:0)

据我所知,你几乎在帖子中粘贴了一个解决方案。

解决方案是您帖子中的合并代码:

<select name="brand" required="required">
    <option value="">Select Brand</option>
<?php
    $sql = mysql_query("SELECT * FROM brand");
    while($row = mysql_fetch_array($sql)) { 
        echo '<option value="'.$row["brandalphabet"].'">'.$row["brandalphabet"].'</option>';
    }
?>
</select>

答案 2 :(得分:0)

这是browser view

<?php 
mysql_connect('host', 'user', 'pass');
mysql_select_db("user");
$sql = mysql_query('SELECT * FROM brand');

#ARRAY OF ALL LETTERS
$allLetters = range('A', 'Z');

#ARRAY OF LETTERS IN DB
$lettersinDB = array();
while($rows = mysql_fetch_assoc($sql)){
     $lettersinDB[] = $rows['brandalphabet'];
}
$result = array_diff($allLetters,$lettersinDB);

?>

<select name="something">

<?php

foreach($result as $letter)
{
    if(!in_array($letter, $arr))
    {
        ?>
        <option value="<?php echo $letter; ?>"><?php echo $letter; ?></option>
        <?php
    }
}
?>
</select>

</body>
</html>