2013-04-18 2 views
-1

Я пытаюсь создать простую страницу продукта (без входа или чего-либо подобного) в php и mysql. До сих пор все отображалось на моей странице продуктов в порядке, я могу удалить/добавить просто отлично с моей страницы администратора. Оттуда я пытаюсь понять, как создать функцию редактирования. Итак, я сделал форму, которая заполняет таблицу mysql на основе productid для удобства (edit2.php? Id = X), которая затем отправляет в edit.php и, надеюсь, обновляет базу данных. Пока что повторное использование старого кода не работает, я как-то надеялся, что все будет так просто.PHP mySQL Update page

Это мой дополнительный продукт (который работает):

<?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, редактировать и удалять ссылки) Тем не менее, я удалил сеансы проверки на данный момент, m больше борется с частью обновления.

Также я не уверен в том, что вы можете передать $ pageid запрос на обновление для 'update где 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> 

ответ

1

вашего update запросу имеет неправильного синтаксиса

$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."' 
+0

Что не так с переменной интерполяцией? – Barmar

+0

Где вы получаете $ pageid? – Fabio

+0

Вы меня спрашиваете? Это в оригинальном скрипте '$ pageid = (int) $ _ GET ['id']; ' – Barmar

0

изменить это

name="$pageid" 

в

name="pageid" 

и доступ к нему, как этот

$data = array_map('mysql_real_escape_string', $_POST); 
$query = "UPDATE products WHERE id = {$data['pageid']} (

проблема была $pageid не было доступно в edit.php. И вы присвоили $pageid атрибуту name, который будет отличаться от каждого продукта.

Изменить запрос к этому

$query="UPDATE products SET 
     product_name = '{$data['product_name']}', 
     price ='{$data['price']}', 
     description = '{$data['description']}', 
     image = '{$data['image']}' 
     WHERE id = '{$data['pageid']}' 
+0

Cheers. Идентификатор приходит, но обновление все еще не работает: Ошибка при хранении данных. Повторите попытку позже. У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с WHERE id = 21 (product_name, цена, описание, изображение) VALUES ('test' в строке 1 – Lukerb

+0

@LukeBriedis См. отредактированный запрос, ваш запрос был неправильным –

+0

@LukeBriedis Проверьте запрос и сообщите мне, есть ли какие-либо ошибки ... :) –

0

заменить запрос на обновление с ниже: -

$query = "UPDATE products 
    set product_name=$data['product_name'], 
     price = $data['price'], 
     description = $data['description'] , 
     image = $data['image'] 
     where id =". $pageid ;