2013-01-03 29 views
-1

上嗨我很努力地看到爲什麼這不更新數據庫。它重新加載由HEADER指向的頁面,但不更新任何字段。任何幫助將是grelliy appreaciated。爲什麼這個更新查詢不能在php

更新表格

<?php 
    include("../script/dbconnect.php"); 
    include("../script/addprodcat.php"); 

    $post = get_posts($_GET['id']); 

    if (isset($_POST['name'], $_POST['description'], $_POST['price'], $_POST['sale'], $_POST['picture'], $_POST['category'])) { 
    $errors = array(); 

     $name = trim($_POST['name']); 
     $description = trim($_POST['description']); 

     if (empty($name)) { 
      $errors[] = 'You need to supply a title'; 
     } else if (strlen($name) > 255) { 
     $errors[] = 'Title cannot be longer than 255 characters'; 
     } 

     if (empty($description)) { 
     $errors[] = 'You need to supply text'; 
     } 

     if (empty($price)) { 
     $errors[] = 'You need to supply text'; 
     } 

     if (empty($sale)) { 
     $errors[] = 'You need to supply text'; 
     } 

     if (empty($picture)) { 
     $errors[] = 'You need to supply text'; 
    } 

    if (! category_exists('id', $_POST['category'])) { 
    $errors[] = 'Category does not exist'; 

    } 

    if (empty($errors)) { 
    edit_product($_GET['id'], $name, $description, $price, $sale, $picture, $_POST['category']); 
    header("Location: ../admin/edit_products.php?id={$post[0]['post_id']}"); 
    die(); 
    } 
} 
?> 
<div style="width:100%; height:150px; background-color:white;"><span style="font-family:saxMonoRegular; letter-spacing:2px; display:block; font-size:4.5em; text-align:center; padding-top:15px;"> Edit <?php echo $post[0]['name']; ?> </span></div> 

<div class="link" style="width:100%; background-color:#ccc;"> 

<form action="" method="post"> 

<?php 
if (isset($errors) && ! empty($errors)) { 
echo '<ul><li>', implode('</li><li>', $errors), '</li></ul>'; 
} 
?> 

<label for="name">Title</label> 
<input type="text" name="name" value="<?php echo $post[0]['name']; ?>"><br/> 
<label for="price">Price</label> 
<input type="text" name="price" value="<?php echo $post[0]['price']; ?>"><br/> 
<label for="sale">Sale</label> 
<input type="text" name="sale" value="<?php echo $post[0]['sale']; ?>"><br/> 
<label for="picture">Picture</label> 
<input type="text" name="picture" value="<?php echo $post[0]['picture']; ?>"><br/> 


<label for="description">Description</label> 
<textarea name="description" rows="15" cols="50"><?php echo $post[0]['description']; ?></textarea><br/> 


<label for="prod_id">Category</label> 
<select name="prod_id"> 
<?php 
foreach (get_categories() as $category) { 
$selected = ($category['name'] == $post[0]['name']) ? " selected" : ''; 
?> 

<option value="<?php echo $category['id']; ?>" <?php echo $selected; ?>> <?php echo $category['name']; ?></option> 
<?php 
} 
?> 
</select><br/> 

<input class="button-link" type="submit" value="Edit Post"> 
</form> 

</div> 

addprodcat.php

function edit_product($id, $prod_id, $prod_sub_id, $name, $description, $price, $sale, $picture, $category) { 

     $id   = (int) $id; 
     $prod_id  = (int) $prod_id; 
     $prod_sub_id = (int) $prod_sub_id; 
     $name   = mysql_real_escape_string($name); 
     $description = mysql_real_escape_string($description); 
     $price  = mysql_real_escape_string($price); 
     $sale   = mysql_real_escape_string($sale); 
     $picture  = mysql_real_escape_string($picture); 
     $category = (int) $category; 


     mysql_query("UPDATE `products` SET 
     `cat_id`  = {$category}, 
     `prod_id`   = {$prod_id}, 
     `prod_sub_id ` = '{$prod_sub_id}', 
     `name`   = '{$name}', 
     `description`  = '{$description}', 
     `price`   = '{$price}', 
     `sale`   = '{$sale}', 
     `picture`   = '{$picture}' 
     WHERE `id`  = {$id}"); 
    echo mysql_error(); 
    } 
+4

你應該'echo'生成的查詢字符串,並在此處顯示:[**,請勿在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql) 。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – DaveRandom

回答

5

你的更新形式僅通過7個參數到edit_products功能;這個功能,但是,預計9

edit_product($_GET['id'], $name, $description, $price, $sale, $picture, $_POST['category']); 

...

function edit_product($id, $prod_id, $prod_sub_id, $name, $description, $price, $sale, $picture, $category) 

您需要通過$prod_id$prod_sub_id爲好。

作爲一個額外的注意事項,在調試代碼時,值得註釋掉任何重定向,因爲任何(非致命的)錯誤/警告會以其他方式顯示錯過。

+0

非常感謝現在的作品,但另一方面,如果你不介意的話,它不會提取價格,銷售和圖片的價值,當我刪除'$ errors = array();'腳本時,它處理腳本但離開這些字段爲空。顯然它不是從表格中拾取字段,但我無法看到在哪裏...... – user1941674

+0

您還沒有完成'$ price = trim($ _ POST ['price']);'等等, $ description'。 – MichaelRushton

+0

現在如此明顯。感謝邁克爾。你是明星! – user1941674

0

功能參數的數量不同。該功能需要9,但您提供了7.

這是一個常見的用戶錯誤,發生在很長的一行。

使用的編碼標準是這樣的:

function edit_product(
    $id, 
    $prod_id, 
    $prod_sub_id, 
    $name, 
    $description, 
    $price, 
    $sale, 
    $picture, 
    $category 
) { 
    /*function code */ 
} 

遵循相同的標準,當你調用「功能了。

相關問題