2011-07-15 26 views
0

私は学習目的で小さなPHPプロジェクトに取り組んでいます。私は、MySQLデータベースから保存されたデータを取得し、HTMLフォームを使ってそれを編集させたいと思っています。私はデータを取得してテキストボックスに表示することができます。問題は、フォームが送信されたときにデータが更新されていないことです。ここに私がこれまでに得たコードがあります。それを自己更新するように作られています。誰かが私にどこに間違っていたのかを教えてもらえれば、それは最も高く評価されます。ありがとうございました。あなたはUPDATE文を実行していないHTMLフォームを使ってMySQLのコードを編集する

<?php 

include ("header.php"); 
include ("../db.php"); 

$catname = $_POST['catname']; 
$catdisc = $_POST['catdisc']; 

$id = $_GET['id']; 
     if (isset($id)) 
     { 
$query = "SELECT * FROM categories WHERE catid='$id'"; 
$result= mysql_query($query) or die ('Mysql Error'); 

} 

while($row = mysql_fetch_array($result)){ 
$cname = $row['catname']; 
$cdisc = $row['catdisc']; 
} 

$result= "UPDATE categories SET catname='$catname', catdisc='$catdisc' WHERE catid='$id'" 
or die ('Error Updating'); 

?> 

<h1>Edit Categories</h1> 

<form method="post" action="edit_cat.php?id=<?php echo $id;?>"> 
Category Name: <input type="text" name="catname" value="<?php echo $cname;?>"><br/> 
Category Discription: <TEXTAREA NAME="catdisc"ROWS="3" COLS="25"><?php echo $cdisc;?></TEXTAREA><br/><br/> 
<input type="submit" value="Update Category"/> 
</form> 

<?php 
include ("footer.php"); 
?> 
+0

私はあなたが実行する場所を見ることができません日付クエリ。 –

答えて

0
$result= mysql_query("UPDATE categories SET catname='$catname', catdisc='$catdisc' WHERE catid='$id'") or die ('Error Updating'); 
+0

ありがとう作品 – zack

0

は、さてあなたは、ええと、あなたはそれをデータベースに提出していない、文字列内のSQL updateコマンドを定義しますが、。

$ result = mysql_query($ query)またはdie( 'Mysql Error');があります。

のような行がありません。

コードは非常に安全ではありません - それはそのままです。

あなたはにしてください。ユーザーを確認してください。POST入力データは、SQLステートメントの中にあります。そうしない限り、オンラインのすべてのユーザーは、完全なデータベースユーザー特権の任意アクセスを持つことができます。 Google: "SQLインジェクション"

5分かかったロブ

PSええと...

+0

あなたは "〜のような行がない"という意味のものを説明してください。あなたは例を挙げることができますか?ありがとう – zack

+0

上記のような行。物事はここに固定されていると思います:) – rob

0

あなたの例のコードにいくつかの変更、これはあなたが

<?php 
include ("header.php"); 
include ("../db.php"); 

//Getting Data 
$id = (int)$_GET['id']; 
if (isset($id)){ 
    $query = "SELECT `categories`.`catid` AS catid, 
        `categories`.`catname` AS catname, 
        `categories`.`catdisc` AS catdesc 
       FROM categories 
       WHERE catid='".mysql_real_escape_string($id)."' 
       LIMIT 1"; 
    $result= mysql_query($query) or die ('Mysql Error'); 
} 
//Looping through the result, tho we know only 1 result will return 
if(mysql_num_rows($result)>=1){ 
while($row = mysql_fetch_array($result)){ 
    $cat['id'] = $row['catid']; 
    $cat['name'] = $row['catname']; 
    $cat['description'] = $row['catdesc']; 
} 
}else{ 
    $notice = 'No results found matching id:'.htmlentities($id); 
} 

//Updating Content 

//Checking if form has been submitted with some basic checks 
if(
isset($_POST['catid']) && is_numeric($_POST['catid'])==TRUE 
&& isset($_POST['catname']) && $_POST['catname']!="" 
&& isset($_POST['catdesc']) && $_POST['catdesc']!=""){ 


$cat['id'] = (int)$_POST['catid']; 
$cat['name'] = (string)$_POST['catname']; 
$cat['description'] = (string)$_POST['catdesc']; 

//Create the query 
$query="UPDATE categories 
      SET catname='".mysql_real_escape_string($cat['name'])."', catdisc='".mysql_real_escape_string($cat['description'])."' 
      WHERE catid='".mysql_real_escape_string($cat['id'])."'"; 
//Execute the update 
mysql_query($query) or die ('Error Updating'); 
} 
?> 

<h1>Edit Categories</h1> 

<form method="post" action=""> 
<?php echo (isset($notice))?$notice:'';?> 
<input type="hidden" name="catid" value="<?php echo htmlentities($id);?>"> 
Category Name: <input type="text" name="catname" value="<?php echo $cat['name'];?>"><br/> 
Category Discription: <TEXTAREA NAME="catdisc" ROWS="3" COLS="25"><?php echo $cat['description'];?></TEXTAREA><br/><br/> 
<input type="submit" value="Update Category"/> 
</form> 

編集私はIDを追加するのを忘れおっとを役に立てば幸いフォームフィールドに

+0

ありがとうございます。私はこれをチェックして戻ってくるでしょう:) – zack

+0

私はこれを試しましたが、それはデータを更新しませんでした:( – zack

関連する問題