-1

PHPとmysqlで簡単な製品ページ(ログインなどはありません)を作成しようとしています。これまでのところ、すべてが製品ページに問題なく表示されており、管理ページから問題なく削除/追加できます。そこから、編集機能を作成する方法を見つけようとしています。そこで、便宜上、productid (edit2.php?id=X) に基づいて mysql テーブルからデータを入力するフォームを作成しました。このフォームは、edit.php に投稿し、うまくいけばデータベースを更新します。これまでのところ、古いコードの再利用は機能していません。どういうわけか、それが簡単になることを望んでいました。

これは私の追加製品です(動作します):

<?php
session_start();
if(isset($_POST) && isset($_POST['hp']) && empty($_POST['hp'])) {
    if(
isset($_SESSION['token']) &&
$_SESSION['token'] == $_POST['token']
) {
        mysql_connect('localhost', 'test_admin', 'test');
        mysql_select_db('test_product');
        $data = array_map('mysql_real_escape_string', $_POST);
        $query = "
            INSERT INTO products (
                product_name, price, description, image
            ) VALUES (
                '{$data['product_name']}',
                '{$data['price']}',
                '{$data['description']}',
                '{$data['image']}'
            )
        ";
        if(mysql_query($query)) {
            echo '<p>Your information was successfully saved.</p>';
            unset($_SESSION['token']);
        } else {
            echo '<p>There was an error storing your data, please try again later.</p>';
        }
    } else {
        echo '<p>Your data has already been saved.</p>';
    }
} else {
    echo '<p>Error.<br />Please try again later.</p>';
}
?>

これは私の更新です(構文エラーまたは「データの保存エラー」をスローするだけです:

<?php

        mysql_connect('localhost', 'test_admin', 'test');
        mysql_select_db('lbriedis_product');


        $data = array_map('mysql_real_escape_string', $_POST);
        $query = "UPDATE products WHERE id = ".$pageid." (
                product_name, price, description, image
            ) VALUES (
                '{$data['product_name']}',
                '{$data['price']}',
                '{$data['description']}',
                '{$data['image']}'
            )
        ";
        if(mysql_query($query)) {
            echo '<p>Your information was successfully saved.</p>';
            unset($_SESSION['token']);
        } else {
            echo '<p>There was an error storing your data, please try again    later.</p>';
            echo mysql_error(); //Used for development and testing only
        }
?>

セッション検証を使用しようとすると、おそらくセッション エラーが発生します。おそらく、管理ページでセッションを開始したためです (製品フォームの追加は admin.php にあり、編集と削除はリンクです)。それにもかかわらず、更新部分でさらに苦労しているため、当面はセッション チェックを削除しました。

また、'update where id = $pageid. 値を含む隠しフィールドがあります (編集フォームを参照)。これを正しく参照するにはどうすればよいですか?

編集フォーム (値が正しく表示されるため、id = $pageid はここで機能します:

<?php
        $dol = "$";
        $pageid = (int)$_GET['id']; 
        mysql_connect('localhost', 'lbriedis_admin', 'xxxxxx123');
        mysql_select_db('lbriedis_product');
    $result = mysql_query("SELECT * FROM products WHERE id = ".$pageid."");
    if($result){
  $data = mysql_fetch_assoc($result);
}


    ?>

<form id="inputForm" method="post" action="edit.php">


    <fieldset>

   <label>Pool name:</label>
 <?php
   echo '<input type="text" name="product_name" value="'.$data['pool_name'].'" />';
     ?> 

    <label>Price:</label> <br>
     <?php
   echo '$&nbsp;<input type="text" name="price" value="'.$data['price'].'" />';
    ?>  <br />
    <label>Description:</label>
      <?php
   echo '<textarea name="description">'.$data['description'].'</textarea>';
    ?>

 <label>Image:</label></label>
  <?php
   echo '<input type="text" name="image" value="'.$data['image'].'" />';
    ?>  
    <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>" />
     <input type="text" id="hp" name="hp" />
     <?php
   echo '$&nbsp;<input type="hidden" name="$pageid" value="'.$pageid.'" />';
    ?>  

    <br>
    <input type="submit" name="submit" value="Update" />

    </fieldset>
</form>
4

3 に答える 3

1

更新クエリの構文が正しくありませ

    $query = "UPDATE products WHERE id = ".$pageid." (
            product_name, price, description, image
        ) VALUES (
            '{$data['product_name']}',
            '{$data['price']}',
            '{$data['description']}',
            '{$data['image']}'
        )

正しいシンタックスは

    $query="UPDATE products SET
            product_name = '".$data['product_name']."', 
            price ='".$data['price']."',
            description = '".$data['description']."',
            image = '".$data['image']."'
            WHERE id = '".$pageid."'
于 2013-04-18T05:32:39.507 に答える
0

更新クエリを以下に置き換えます:-

$query = "UPDATE products 
  set product_name=$data['product_name'],
      price = $data['price'],
      description = $data['description'] ,
      image = $data['image']
      where id =". $pageid ;
于 2013-04-18T05:36:49.953 に答える