2017-03-06 5 views
-1

Ich habe ein Problem, um die Lösung für das Problem zu visualisieren, das ich jetzt habe.Inkrementieren ID beim Klick in MySQL

Der Benutzer darf eine Zeile in eine Tabelle einfügen.

Und ich versuche, eine Schaltfläche (Eingabe) +1 anzuzeigen, die dem Benutzer erlauben, eine Spalte (Abstimmung) in einer ausgewählten Zeile unter allen erstellten erhöhen.

Das Problem ist, dass ich nicht die Sache für die Inkrementierung auf die gewünschte ID bekommen.

Hier mein Code:

 <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); 


} 

} 

Logischerweise wird der Code oben nicht funktionieren, aber ich verstehe nicht, wie die Lösung finden.

Kurz gesagt, ich möchte dem Benutzer erlauben, eine Spalte in einer ausgewählten Zeile zu erhöhen.

Dank

Edit: Schatten es, weil Ihre Lösung für automatisch gewählt, wenn die Leitung oder existiert nicht existiert zwischen INSERT oder UPDATE verwendet wird, nicht mein Problem. Ich möchte, dass der Benutzer Zeilen erstellen kann und es ihm erlaubt, +1 für jede existierende zu wählen, und es ist ihm nicht möglich, eine Zeile von der Eingabe +1 einzufügen.

+1

Sie müssen 'Einsatz ... auf doppelten Schlüssel Update ...' – Shadow

+1

Mögliches Duplikat von [In MySQL-Tabelle einfügen oder aktualisieren, falls vorhanden] (http://stackoverflow.com/questions/4205181/insert-into-a-mysql-table-or-update-if-exists) – Shadow

+0

Es ist nicht mein Problem weil Ihre Lösung für die automatische Auswahl zwischen Einfügen oder Aktualisieren verwendet wird, wenn die Zeile nicht existiert oder existiert. Ich, ich möchte dem Benutzer erlauben, Zeilen zu erstellen und erlauben ihm, +1 auf jedem von eins zu wählen, wenn er will. – Lafdoma

Antwort

1

Ich erstellte Code-Snippet ähnlich Ihrem Code-Stil.

Sie haben zwei Senden-Schaltflächen, so dass Sie die Verarbeitung dieser beiden Anforderungen trennen müssen.

Die $id des Elements, das Sie in der zweiten Vorlage aktualisieren möchten, müssen von versteckten Wert in Form kommen.

Damit dies funktioniert, müssen Sie Tabelle in MySQL erstellen müssen:

create table disease (id MEDIUMINT NOT NULL AUTO_INCREMENT, name VARCHAR(20), vote INTEGER, PRIMARY KEY (id)); - zum Beispiel wie diese

<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 } 
} 
?> 
Verwandte Themen