2016-05-06 6 views
0

私は以下のコードで争っています。以下に意図されていますフォームデータを使ってmysqlを更新すると古い値が残る

1)、提出データベースに

問題Iを編集した値を渡すには、編集 3)一度に編集するためのフォームで 2)表示データ・レディデータベースからのデータコースデータを読みます私は問題なしで1と2を実行できると思いますが、ステップ3でデータベースに編集データを渡すと、ステップ1で提示された古い値が代わりに渡されます。編集した値を渡す方法と、古い値を渡す方法はありますか?

はあなたのコードの行ずつ

$readQuery="SELECT * FROM course WHERE course_id={$id}"; 
$readResult=mysqli_query($connection, $readQuery); 
validateQuery($readResult);   

while($row=mysqli_fetch_assoc($readResult)) 
{ 
$courseId=$row["course_id"]; 
$courseName=$row["course_name"]; 
$courseDescr=$row["course_descr"]; 
$courseCost=$row["course_cost"]; 
$courseDuration=$row["course_duration"]; 
} 
?> 
<form action="course_man.php?page=<?php echo $page?>" &id=<?php echo $id?>" method="post"> 
    <table> 
     <tr> 
      <td align="right"> 
       <!--Course ID <input type="text" name="course_id" value="<?php //echo $courseId;?>"/><br/>--> 
       Course Name <input type="text" name="course_name" value="<?php echo $courseName;?>"/><br/> 
       Course Description <textarea name ="course_descr" rows="6" cols ="30" ><?php echo $courseDescr;?></textarea><br/> 
       Course Cost <input type="text" name="course_cost" value="<?php echo $courseCost;?>"/><br/> 
       Course Duration <input type="text" name="course_duration" value="<?php echo $courseDuration;?>"/><br/> 
       <input type="submit" name="update" value="Update"/> 
      </td> 
     </tr> 
    </table> 
    </form> 
    <?php 

    } 
    if(isset ($_POST['update'])) 
    { 

    $updateQuery="UPDATE course SET "; 
    $updateQuery.="course_name='{$courseName}', "; 
    $updateQuery.="course_descr='{$courseDescr}', "; 
    $updateQuery.="course_cost={$courseCost}, "; 
    $updateQuery.="course_duration={$courseDuration}, "; 
    $updateQuery.="WHERE course_id={$id}"; 
    $check = mysqli_query($connection, $updateQuery); 
    mysqli_error($connection); 
    } 

答えて

0

事前に移動をお願いします。スクリプトはどのようにしてフォームから新しい値を取得するのですか? SQLクエリはすべてのケースで実行され、$ courseNameなどの変数は古い値で設定されます。さて、更新部分に行くと、変数は古い値で設定されます。

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

$updateQuery="UPDATE course SET "; 
$updateQuery.="course_name='". $_POST['course_name'] ."', "; 
$updateQuery.="course_descr='". $_POST['course_descr'] ."', "; 
$updateQuery.="course_cost=". $_POST['course_cost'] .", "; 
$updateQuery.="course_duration=". $_POST['course_duration'] .", "; 
$updateQuery.="WHERE course_id=". $_POST['course_id']; 
$check = mysqli_query($connection, $updateQuery); 
mysqli_error($connection); 
} 

SELECT ...クエリの前にこのコードを移動します。また、クエリに入れる前にユーザーデータをサニタイズすることを忘れないでください! mysqli_real_escape_string()http://php.net/manual/en/mysqli.real-escape-string.phpなどを使用してください。

0

フォームをcourse_man.phpに送信すると、dbからデータがフェッチされ、以下の変数はdb値で上書きされます。

$courseId=$row["course_id"]; 
$courseName=$row["course_name"]; 
$courseDescr=$row["course_descr"]; 
$courseCost=$row["course_cost"]; 
$courseDuration=$row["course_duration"]; 
0

$updateQuery="UPDATE course SET course_name = '$courseName', course_descr = '$courseDescr', course_cost = '$courseCost', course_duration = '$courseDuration' WHERE course_id = $id ";

....これを試してみてください
関連する問題