2013-02-17 87 views
2

我是新來的PHP和編程,我一直在關注教程,但是當嘗試將產品展示到網頁上時遇到了問題,這是代碼正在測試PHP - 通過網頁瀏覽器呈現動態網頁

<?php 

if (isset($_GET['id'])) { 

    include "storescripts/connect_to_mysql.php"; 
    $id = preg_replace('#[^0-9]#i', '', $_GET['id']); 
    $sql = mysql_query("SELECT * FROM products WHERE id='$id' LIMIT 1"); 
    $productCount = mysql_num_rows($sql); 
    if ($productCount > 0) { 

     while($row = mysql_fetch_array($sql)){ 
      $product_name = $row["product_name"]; 
      $price = $row["price"]; 
      $details = $row["details"]; 
      $category = $row["category"]; 
      $subcategory = $row["subcategory"]; 
      $date_added = strftime("%b %d, %Y", strtotime($row["date_added"])); 
     } 

    } else { 
     echo "That item does not exist."; 
     exit(); 
    } 

} else { 
    echo "Data to render this page is missing."; 
    exit(); 
} 
mysql_close(); 
?> 

當我試圖通過我的瀏覽器中查看網頁我得到的消息「數據呈現此頁面丟失」

據我所知,這是什麼東西做

if (isset($_GET['id'])) { 

我假設也許這是'ID'的事情,但我無法解決如何解決它。任何指針和幫助將不勝感激,對不起,如果這似乎是基本的,但就像我說我是新的,不能解決這個問題。我一直在試圖整天

感謝

回答

0

當你看到$ _GET它尋找的URL的參數。所以:

http://localhost/yourphpscript.php?id=123 

...是它的期待。一些ID必須在URL中定義。

+0

謝謝,我不知道如何定義URL – 2013-02-18 16:49:46

+0

我會試着解決如何做到這一點,如果我陷入困境,我會要求進一步的幫助:) – 2013-02-18 17:35:16

1

顯然,$_GET['id']未設置。如果您的鏈接類似http://www.example.com/index.php?id=32,它將被設置。

其次,不要在查詢中使用GET/POST變量而不消毒它們!

第三,不要擺在首位使用的mysql_query,但PDO或mysqli的,而不是

+0

好的,謝謝你,我不知道如何設置的網址,但我會去看看它。我認爲我的代碼已經設置了它。感謝這些觀點。你爲什麼說不使用mysql_query? – 2013-02-18 18:01:12

+0

它已被棄用,它將被從未來的PHP版本中刪除,所以它可以節省您的麻煩,如果你現在停止使用它 – 2013-02-19 16:50:49

+0

哦,我明白了,謝謝指出:) – 2013-02-21 12:46:23

0

你可以試試這個代碼:

<?php 
    if (isset($_GET['id'])){ //Someone submitted a form or just prepended parameter to link 
     include "storescripts/connect_to_mysql.php"; //Include script with mysql connection 
     $id = preg_replace('#[^0-9]#i', '', $_GET['id']); //Sanitize input - remove everything besides numbers 
     $result = mysql_query("SELECT * FROM products WHERE id='$id' LIMIT 1"); //Execute query. Only 1 product because of LIMIT 1 
     if (mysql_num_rows($result)==1){ //If the product is found 
     $product = mysql_fetch_assoc($result) ; //Take the product 
     foreach ($product as $property => $value){ //Go through each property of product 
      echo "<div> {$property} : {$value} </div>" ; 
     } 
     } 
    } else {?> 
     <form method="get" action="<?php $_SERVER['PHP_SELF'] ; ?>"> 
     <input type="text" name="id" /> 
     <input type="submit" value="Submit product ID"/> 
     </form> 
<?php  
} 
    ?> 

,如果您有任何問題,只是問。

+0

嗨,感謝您的幫助,我認爲這不會對我使用該代碼有好處,因爲我已經在其他頁面上設置了所有變量等,並且可能不得不全部改變它們,謝謝,這讓我對如何以不同方式執行操作有所瞭解。 – 2013-02-18 18:04:52

0

學會跟蹤你的ID。消毒和檢查的網址發送了過去,正確的id值再次開始時檢查值作爲

     <?php 
        echo $_GET['id']; 
         ?> 

使用該知道它是你的值id

+0

好的,謝謝你提供這方面的信息,我會研究一下:) – 2013-02-18 18:02:30