2013-02-17 77 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