在MySQL中单击时增加id

时间:2017-03-06 11:45:19

标签: php mysql sql-update

我有一个问题是可视化我现在遇到的问题的解决方案。

允许用户在表格中插入一行。

我尝试显示一个按钮(输入)+1,允许用户在所有创建的选定行中增加列(投票)。

问题在于,我没有得到依赖增量的东西。

这是我的代码:

      <form action="" method="post">

        <input type="text" name="disease">name  

        <input name="mainsubmit" type="submit" value="submit">

     </form>

 </body>
 </html>



<?php

if(isset($_POST['mainsubmit']))
{

$nameDisease = $_POST['disease'];


$req = $db->prepare('INSERT into disease(name) VALUES(:name)');

$req->execute(array('name' => $nameDisease));

}

$query = $db->query('SELECT * FROM disease');

while ($result = $query->fetch())
{
    $id = $result['id']; 
    echo $id ?>
    <form action="" method="post"> <input name="secondsubmit"            type="submit" value="+1"> </form><?php

    if(isset($_POST['secondsubmit']))
{

$db->exec("UPDATE disease SET vote = vote + 1 WHERE id = " .$id);


}

}

从逻辑上讲,上面的代码不起作用,但我不明白如何找到解决方案。

简而言之,我想允许用户增加所选行中的列。

由于

编辑:阴影,这不是我的问题,因为如果线路不存在或存在,您的解决方案将用于在INSERT或UPDATE之间自动选择。我,我希望允许用户创建行并允许他对每个存在的行投票+1,并且他不可能从输入+1插入一行。

1 个答案:

答案 0 :(得分:1)

我创建了与您的代码风格类似的代码段。

您有两个提交按钮,因此您需要单独处理这两个请求。

要在第二次提交中更新的项目的$id需要来自表单中的隐藏值。

为了使其工作,您需要在mysql中创建表:

create table disease (id MEDIUMINT NOT NULL AUTO_INCREMENT, name VARCHAR(20), vote INTEGER, PRIMARY KEY (id)); - 例如像

<html>
<body>
<form action="" method="post">
    <input type="text" name="disease">name
    <input name="mainsubmit" type="submit" value="submit">
 </form>
 </body>
 </html>

<?php
$db = new PDO('mysql:dbname=phpapp;host=db', 'root', 'phpapptest');
if (isset($_POST['mainsubmit'])) {
    $nameDisease = $_POST['disease'];
    $req = $db->prepare('INSERT into disease (name, vote) VALUES(:name, 0)');
    $req->bindParam(':name', $nameDisease);

    $req->execute();
    $query = $db->query('SELECT * FROM disease');

    while ($result = $query->fetch()) { ?>
        <form action="" method="post">
            <p><?php echo $result['name'] . " : " . $result['vote'];?>
                <input name="secondsubmit" type="submit" value="+1" />
                <input type="hidden" name="id" value="<?php echo $result['id'];?>" />
            </p>
        </form>
    <?php }
}

if (isset($_POST['secondsubmit'])) {
    $req = $db->prepare("UPDATE disease SET vote = vote + 1 WHERE id = " . $_POST['id']);
    $req->execute();
    $query = $db->query('SELECT * FROM disease');

    while ($result = $query->fetch()) {?>
        <form action="" method="post">
            <p><?php echo $result['name'] . " : " . $result['vote'];?>
                <input name="secondsubmit" type="submit" value="+1" />
                <input type="hidden" name="id" value="<?php echo $result['id'];?>" />
            </p>
        </form>
    <?php }
}
?>