2012-04-20 21 views
0

ユーザ/メンバー情報の編集に問題があるようです。私はsciptに以下のフォームを提供しました。これに対する解決策は非常に高く評価されています。私はスクリプトを短縮するためにバリデーションチェックを取り出しました。php/mysqlを使ってページを編集する

ページはエラーなしでレンダリングされます。成功のメッセージが表示されています。ただし、情報はデータベース内で変更または編集されていません。

また、データベースの値(実行されている2番目のdbクエリに対応)がフォームのフィールドに表示されています。しかし私が変更をPOSTするとき、データベース内で変更が行われていません。

**PHP scipt** 

<?php 
session_start(); 
if (isset($_SESSION['id'])) { 
$id = $_SESSION['id']; 
$username = $_SESSION['username']; 
} 

else { 
echo "You have not signed in"; 
} 

if (isset ($_POST['submit'])){ 
$title = $_POST['title']; 
$content = $_POST['content']; 
$make= $_POST['make']; 
$model = $_POST['model']; 
$price = $_POST['price']; 
$location = $_POST['location']; 

include_once "scripts/connect_to_mysql.php";  

$title = mysql_real_escape_string($title); 
$content = mysql_real_escape_string($content); 
$make = mysql_real_escape_string($make); 
$model = mysql_real_escape_string($model); 
$price = mysql_real_escape_string($price); 
$location = mysql_real_escape_string($location); 

$title = eregi_replace("`", "", $title); 
$content = eregi_replace("`", "", $content); 
$make = eregi_replace("`", "", $make); 
$model = eregi_replace("`", "", $model); 
$price = eregi_replace("`", "", $price); 
$location = eregi_replace("`", "", $location); 

$sql = mysql_query ("UPDATE `advertisements` SET `title`='$title',   
`content`='$content', `make`='$make', `model`= '$model', `price`='$price', 
`location`='$location', `id`='$id' WHERE `advertisements` . `ads_id`='$ads_id'") 
or die (mysql_error()); 

$success = "You have successfuly edited your ad"; 
} 

else { 

    if (isset($_GET['ads_id'])) { 
    $ads_id = $_GET['ads_id']; 
    } 

    else { 
    echo "URL not found"; 
    } 

    include_once "scripts/connect_to_mysql.php"; 
    $query = mysql_query("SELECT * FROM advertisements WHERE ads_id='$ads_id'"); 

    while($row = mysql_fetch_assoc($query)) 
    { 
    $title = $row["title"]; 
$content = $row["content"]; 
$make = $row["make"]; 
$model = $row["model"]; 
$price = $row["price"]; 
$location = $row["location"]; 
$ads_id = $row ["ads_id"]; 
    } 



    } 

    ?> 


    **form** 

    <h1>Edit Advertisement</h1> 

    <?php echo "$success";?> 

<form action="edit.php" method="POST" enctype="multipart/form-data"> 

Title: <input name="title" type="text" value="<?php print "$title"; ?>"/><br/> 
Content: <input name="content" type="text" value="<?php print "$content"; 
    ?>"/><br/> 
Make: <select name="make"> 
<option value="<?php echo "$make"; ?>"><?php echo "$make"; ?></option> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
     <option value="4">4</option> 
</select> <br/> 

Model: <select name="model"> 
    <option value="<?php echo "$model"; ?>"><?php echo "$model"; ?></option> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
     <option value="4">4</option> 
</select> <br/> 
Price: <input name="price" type="text" value="<?php print "$price"; ?>"> <br/> 

Location: <select name="location"> <br/> 
     <option value="<?php echo "$location"; ?>"><?php echo "$location"; 
        ?></option> 
     <option value="Leicester">Leicester</option> 
     <option value="Loughborough">Loughborough</option> 
     <option value="Nottingham">Nottingham</option> 
     <option value="Derby">Derby</option> 
</select> <br/> <br/> 

    <input name="submit" type="submit" value="Edit ad"/> 

</form> 
+0

あなたが投稿しているかどうかを調べるためにフォームフィールドをチェックしないでください。 '$ _SERVER ['REQUEST_METHOD'] == 'POST'を使用してください。それは100%信頼できる。 –

+0

echo文を追加して正しい値を取得しているかどうかを確認してください。 (echo $ title;とmysql_queryの前に等) –

+0

私は助けに感謝します。私は両方のことを試してみましたが、それでも私のデータベースは更新されません。また、UPDATEクエリを実行した後にecho文を実行すると、更新された値が得られます。皆さんには代替ソリューションがありますか、可能であれば、私のスクリプトをあなたがうまくいくと思われるものに編集することができますか? – sam

答えて

0

私は

のようなものを持っている必要があります推測するよう

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

後、これが問題

とフォームのアクションを起こすことがあり、右上に

if (isset($_GET['ads_id'])) { 
    $ads_id = $_GET['ads_id']; 
    } 

    else { 
    echo "URL not found"; 
    } 

を移動してみてください

<form action ="edit.php?ads_id=the id for the page" > 
+0

あなたが書いたように働いてくれてありがとう、ありがとう。 – sam

関連する問題