2017-03-04 30 views
0

私は、フォームボタンをクリックして更新するために一度だけクリックされることを理解しようとしているphpとsqlにはかなり新しいです。プログラムは既に追加、検索、削除が正常に機能しており、これを動作させるだけです。それは更新されているようですが、再度クリックするまでは更新を出力しません。ここに私のコードは次のとおりです。PHP/MySQLの更新ボタンを2回クリックする必要がありますか?

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; 

私は私は、Javaの男のPHP/MySQLとよりに新しいですと述べていますようにすべてのヘルプは、いただければ幸いです。 (しかし、私はPHPが好きです)。

+0

あなたの '$ row'はどこから来ますか?あなたはどこにでもそれを定義していませんでした。そしてあなたのコードでは、heredoc '_END'にはinfrontのスペースがあります。 heredocが終わる前にspeceがあってはならないし、ちょうどheredocを終えた後に新しい行がなければならない。 –

答えて

0

$rowにデータを格納するクエリはコードに含まれていないため、このクエリはUPDATEクエリの前に実行されていると思います。 $ rowのデータは、テーブルを更新する前に選択されているため、UPDATEの後にSELECTクエリを作成する必要があります。

+0

issetの上に初期化しますが、それでも2回更新する必要があります。 $行= $ result-> num_rows; –

+0

@bobbert_the_adventurerあなたのSELECTクエリは、issetブロックの後に移動してください。私はあなたのissetブロックの前に$行を使用していないと思う:) – Syncro

0

更新が行われる前に、変数に値が設定されている可能性があります。更新された値を取得するには、再度SELECTクエリを実行する必要があります。

関連する問題