2017-03-04 1 views
0

Ich bin ziemlich neu zu PHP und Sql versucht, herauszufinden, um den Formular-Button, um nur einmal zum Aktualisieren angeklickt werden. Das Programm hat bereits ein Add, Search und Delete funktioniert gut und nur müssen Sie dies zum Laufen zu bringen. Es scheint zu aktualisieren, aber es gibt das Update nicht aus, bis ich erneut klicke. Hier ist mein Code:Update-Taste in PHP/Mysql muss zweimal geklickt werden, um zu arbeiten?

if (isset($_POST['update']) && 
    isset($_POST['name']) && 
    isset($_POST['planet']) && 
    isset($_POST['country']) && 
    isset($_POST['population']) && 
    isset($_POST['density'])) 
{ 
    $name = get_post($conn, 'name'); 
    $planet = get_post($conn, 'planet'); 
    $country = get_post($conn, 'country'); 
    $population = get_post($conn, 'population'); 
    $density = get_post($conn, 'density'); 
    $sql = "UPDATE cities SET planet = '$planet', country = '$country',  population = '$population', density = $density WHERE name = '$name' ;"; 
    $result = $conn->query($sql); 

    if (!$result) die ("Database access failed: " . $conn->error); 
} 
echo <<<_END 
<pre> 
    name $row[0] 
    planet $row[1] 
    country $row[2] 
    population $row[3] 
    density $row[4] 
</pre> 
<form action="Hw05.php" method="post"><pre> 
    <input type="hidden" name="update" value="yes"> 
    name <input type="text" name="name" value="$row[0]"> 
    planet <input type="text" name="planet" value="$row[1]"> 
    country <input type="text" name="country" value="$row[2]"> 
    population <input type="int" name="population" value="$row[3]"> 
    density <input type="int" name="density" value="$row[4]"> 
    <input type="submit" value="UPDATE RECORD"> 
</pre></form> 
_END; 

Jede Hilfe würde geschätzt, wie ich sagte, bin ich bin neu in PHP/MySQL und mehr von einem Java Kerl. (Allerdings mag ich PHP).

+0

Woher kommt Ihre $ -Zeile? Du hast das nirgendwo definiert. Und auch in Ihrem Code hat das heredoc '_END' einen Platz davor. Es sollte keine Besonderheiten geben, bevor das Heredoc beendet wird und es muss eine neue Zeile geben, nachdem das Heredoc beendet wurde. –

Antwort

0

Die Abfrage, die Daten in $row speichert, ist nicht in Ihrem Code, also denke ich, dass diese Abfrage vor der UPDATE-Abfrage erfolgt ist. Sie sollten Ihre SELECT-Abfrage nach Ihrem UPDATE vornehmen, da Daten in $ row ausgewählt sind, bevor Sie die Tabelle aktualisieren.

+0

Initialisieren Sie es oben, und muss noch zweimal aktualisiert werden. $ rows = $ result-> num_rows; –

+0

@bobbert_the_adventurer Verschieben Sie einfach Ihre SELECT-Abfrage nach dem Isset-Block. Ich denke, Sie verwenden nicht $ Zeile vor Ihrem isetet Block :) – Syncro

0

Ihre Variablen werden möglicherweise vor dem Update aktualisiert. Sie müssen erneut eine SELECT-Abfrage durchführen, um die aktualisierten Werte abzurufen.

Verwandte Themen