2017-03-06 27 views
-1

私は今問題があるかどうかの解を視覚化するのに問題があります。MySQLのクリックでIDを増やす

ユーザーはテーブルに行を挿入することができます。

私はすべての作成された行の中で選択された行の列(票)を増やすことができるボタン(入力)+1を表示しようとします。

問題は、私が目的のIDに頼りにすることができないということです。

ここに私のコード:

 <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

のような、たとえばあなたは '挿入...重複キーの更新に必要な...' – Shadow

+1

可能な場合は、[MySQLテーブルに挿入するか、存在する場合は更新する]の複製を作成してください(http://stackoverflow.com/questions/4205181/insert-into-a-mysql-table-or-update-if-exists) – Shadow

+0

これは私の問題ではありませんその行が存在しないか存在していない場合は、挿入または更新の間に自動的に選択するためにソリューションが使用されるためです。 私は、ユーザーが行を作成して、必要に応じてそれぞれに+1を投票できるようにしたいと考えています。 – Lafdoma

答えて

1

あなたのコードスタイルに似たコードスニペットを作成しました。

2つの送信ボタンがあるので、2つのリクエストの処理を分離する必要があります。

2回目の提出で更新したいアイテムの$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 } 
} 
?> 
関連する問題