如何在选择框选项更改(php)上更新mySQL数据库?

问题描述:

I have a selectbox which should update my SQL database by option change. Because in this case I do not have a normal submit input field, if(isset($_GET['submit']))is not working, but I do not know how to write the statement in the right way:

<?php
if(isset($_GET['submit'])){
    $status = $_GET['status'];
    $id = $_GET['id'];
        $pdo = Database::connect();
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql = "UPDATE colors set status = ? WHERE id = '$id'";
        $q = $pdo->prepare($sql);
        $q->execute(array($status));
        Database::disconnect();
}
?>      

                    <form action="index.php" method="get">
                        <select name="status" onchange='this.form.submit()'>
                        <option value="red">red</option>
                        <option value="blue">blue</option>
                    </select>
<?php echo "<input id='id' type='hidden' value='"$id"'>";?>
</form>

我有一个选择框,它应该通过选项更改来更新我的SQL数据库。 因为在这种情况下我没有正常的提交输入字段, if(isset($ _ GET ['submit'])) code>不起作用,但我不知道如何在 正确的方法: p>

 &lt;?php 
if(isset($ _ GET ['submit'])){
 $ status = $ _GET ['status']; \  n $ id = $ _GET ['id']; 
 $ pdo = Database :: connect(); 
 $ pdo-&gt; setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION); 
 $ sql =“  UPDATE colors set status =?WHERE id ='$ id'“; 
 $ q = $ pdo-&gt; prepare($ sql); 
 $ q-&gt; execute(array($ status)); 
数据库 ::断开(); \ N} 
&GT?;  
 
&lt; form action =“index.php”method =“get”&gt; 
&lt; select name =“status”onchange ='this.form.submit()'&gt; 
&lt;选项值 =“red”&gt; red&lt; / option&gt; 
&lt; option value =“blue”&gt; blue&lt; / option&gt; 
&lt; / select&gt; 
&lt;?php echo“&lt; input id ='id'  type ='hidden'value ='“$ id”'&gt;“;?&gt; 
&lt; / form&gt; 
  code>  pre> 
  div>

It could be as simple as

if(!empty($_GET['status'])){
   ....
}

Try to replace this line

if(isset($_GET['submit'])){

with

if(array_key_exists('status',$_GET) && $_GET['status']!=""){

Try this:

<?php
$id = "YourID";
if(!empty($_GET["status"])){
    $status = $_GET['status'];
    if(isset($_GET['id']) && $_GET['id'] != ""){
        $id = $_GET["id"];
        //continue...
    }else{
        //display error (ID has not been set.)
    }
}
?>

<form action="index.php" method="get">
    <select name="status" onchange='this.form.submit()'>
        <option value="red">red</option>
        <option value="blue">blue</option>
    </select>
    <?php echo "<input name='id' id='id' type='hidden' value='$id'>";?>
</form>