2012-04-04 37 views
0

我正在從數據庫表中獲取所有記錄到頁面使用;PHP得到以前的鏈接ID

SELECT * FROM table_name; 

頁面上顯示的車詳細信息的摘要:

car-list

現在的想法是創建另一個網頁,將裝載每節車廂的全部內容。問題是我不知道如何去做。我在互聯網上搜索,但我沒有得到任何結果,我是新來的PHP。

MYSQL查詢會是這樣的;

SELECT * FROM table_name WHERE id = {$clicked-id} 

其中點擊的id是之前點擊的汽車。我想我必須爲每個以前的車標題分配一個id。

我很迷茫,有人可以幫我。

+0

我不會爲每輛車分配一個id,而是一個url,所以你可以把它傳遞給查詢而不是一個數字,保持它的SEO如此喜歡:'SELECT * from cars_table WHERE url =「fordfocus」'所以你的鏈接看起來像'site.com/details/fordfocus' – 2012-04-04 14:13:37

+0

在另一個註釋中,最有可能的是你不需要'SELECT *'。雖然這可能只是一個測試,但立即學習好習慣並選擇你真正需要的東西是很好的。 – nico 2012-04-04 14:14:21

+1

@勞倫斯這不會起作用,因爲'fordfocus'不會是唯一的。您最好傳遞唯一的主鍵。漂亮的網址和搜索引擎優化應該在開發過程的後期進行。 – meagar 2012-04-04 14:16:17

回答

2

閱讀PHP manual,這非常有幫助。

基本上鍊接應該是這樣的:

<a href="/detail.php?id=<?= $car_id ?>"> car info .. </a> 

所以你通過在id參數點擊的ID。

然後,在您的詳細信息頁面,您檢索這樣的:

<?php 
    $car_id = $_GET['id']; 
    $query = 'SELECT * FROM cars WHERE id = '.intval($car_id); 
?> 

我使用$_GET這裏因爲參數進來的URL。再次檢查一下PHP manual,這對早期的東西非常有幫助。

請注意,我使用intval來保留SQL injection背對背。如果你不知道它的意思,你應該研究一下。這裏的基本思路是,以防止用戶調用類似detail.php?id=1;DROP TABLE cars;,其中,如果不使用intval,將使您的查詢:

SELECT * FROM cars WHERE id = 1;DROP TABLE cars; 

這將破壞你的數據。

+0

如果您證明您的鏈接對所提問題有幫助,我會對此答案滿意。 – 2012-04-04 14:16:35

+2

你的意思是PHP手冊鏈接?這是一個鏈接到主要的PHP文檔。我認爲OP應該閱讀第一章,其中包含使用該語言的基礎知識。在這種特殊情況下,他需要閱讀有關超全球('$ _GET'等)的內容,但我認爲如果他閱讀整個內容會更好。 – cambraca 2012-04-04 14:18:50

+0

好的,-1然後,雖然答案的其餘部分是好的。 – 2012-04-04 14:23:59

-2

簡單。在detailView.php

<a href="detailview.php?carid=12">Detail view</a> 

現在,您可以使用paramenter使SQL查詢,像這樣

:當你建立鏈接到汽車的「詳細信息視圖」,添加參數,例如
<?php 
    $query = "SELECT * FROM table_name WHERE id = ".$_GET["carid"]; 
    ... 
?> 
+2

安全是一件值得記住的事情 – 2012-04-04 14:14:10

+0

是的,它是。但那是另一回事。我只是在這裏說明使用URL參數將數據發送到另一個頁面的機制。我認爲在這裏討論安全問題太廣泛了。 – 2012-04-04 14:19:25

+0

答案的質量就是這個問題。發佈可用的代碼或不發佈任何內容。 – 2012-04-04 14:22:51

1

你想在PHP中查看$_GET變量。這個「特殊」的變量可以讓你獲得在URL中傳遞的參數,

有了這個,你將在URL可以傳遞參數,就像這樣:

http://yoursite.com/showcar.php?id=5 

然後,你可以得到價值的指定id$_GET['id']

這裏查看更多信息:http://www.php.net/manual/en/reserved.variables.get.php

-1

當你點擊了一輛車,PHP需要知道你點擊什麼車。例如,概覽頁面爲www.example.com/cars。鏈接到每輛車的汽車詳細信息頁面:www.example.com/viewcar?id=1。這裏是數據庫中汽車的ID。

viewcar頁面上,您可以通過$_GET['id']獲取該ID。在查詢中使用此值:

SELECT * FROM `cars` WHERE id = $_GET['id']; 

注意要注意的是這個解決方案說明了這一概念,但不應該使用,因爲這是SQL injection非常脆弱。

+4

發佈不應該使用的解決方案有什麼意義? – 2012-04-04 14:17:56

+0

我更喜歡點擊downvote按鈕而不是我的評論 – 2012-04-04 14:21:50

+0

這個問題涉及到非常常見的'問題',這可以通過許多解決方案來解決。我嘗試給出一個相當完整的答案,以幫助OP在路上的一點。爲什麼你不高興我提到這個缺陷,因爲這個線程中的所有答案都指向注入'$ _GET'到查詢中。 – 2012-04-04 14:55:54

1

好了,所以這裏是從你的第二輛車呈現列表上的標記:

<table cellspacing="0" cellpadding="0" border="0"> 
    <tbody> 
     <tr> 
     <td valign="top" rowspan="3" style="padding: 8px 15px 0px 0px;"><img src= 
     "car-images/2_main.jpg" class="car-list" /></td> 

     <td valign="top" colspan="4"> 
      <h2>MG ZR</h2> 
     </td> 
     </tr> 

     <tr> 
     <td valign="top" colspan="4">3 Door Hatchback, Yellow, Petrol, Manual, Drivers 
     airbag, 1 owner from new, Folding rear seats, Sports seats, Trip computer, Front 
     electric windows, Alarm.service history,ABS,cd player,power steering,remote 
     central locking</td> 
     </tr> 

     <tr> 
     <td valign="bottom"> 
      <h4 class="car-info">Fuel</h4>Petrol 
     </td> 

     <td valign="bottom"> 
      <h4 class="car-info">Miles</h4>85000 
     </td> 

     <td valign="bottom"> 
      <h4 class="car-info">Year</h4>2006 
     </td> 

     <td valign="bottom"> 
      <h4 class="car-info">Price</h4>&Acirc;&pound;7500 
     </td> 
     </tr> 
    </tbody> 
</table> 

讓我們假設你想點擊圖片查看詳細信息。你需要換一個錨定標記的圖像周圍,例如:

... 
<a href="deatils.php?carId=2"><img src="car-images/2_main.jpg" class="car-list" /></a> 
... 

carId=2需要來自任何代碼生成您<div id="car-list">標記。

當然,您需要一個頁面來接收名爲details.php的URL中的詳細信息(按照我的示例),並像$id = $_GET['carId']那樣解析carId=2。然後,您可以使用$id變量來查詢數據庫。