2012-09-03 18 views
-5

當我點擊任何鏈接,它會打開我的數據庫中的所有電影。我只想要那首以那封信開頭的電影,我不知道我犯了什麼錯誤。這裏是我的代碼:PHP MYSQL每個字母都鏈接到另一個電影,但當我點擊我得到所有電影

$azRange = range('A', 'Z'); 
foreach ($azRange as $letter){ 
    echo '<a href="index.php?naslov='.$letter.'&task=view">'.$letter.'</a> | '; 
} 

if(isset($_GET["task"]) && $_GET["task"] == "view"){ 
    $naslov = $_GET['naslov']; 

$query = "SELECT filmovi.naslov, filmovi.godina, filmovi.trajanje, filmovi.slika 
      FROM filmovi 
      ORDER BY naslov"; 

$result = mysql_query($query) 
      or die ('SQL Greska: '.mysql_error()); 

if($result){ 
    while($filmovi = mysql_fetch_array($result)){ 
     echo '<center><b>'; 
     echo '<td><img src="img/'.$filmovi["slika"].'" border="0" width="100" /></td>'; 
     echo '</br>'; 
     echo '<td>'.$filmovi["naslov"].'</td>'; 
     echo '<td> ('.$filmovi["godina"].')</td>'; 
     echo '<br>'; 
     echo '<td>Trajanje: '.$filmovi["trajanje"].' min</td>'; 
     echo '</b></center>'; 
    echo '</tr>'; 
} 
+5

忘記'WHERE'子句? –

回答

2
$query = 
    "SELECT filmovi.naslov, filmovi.godina, filmovi.trajanje, filmovi.slika 
    FROM filmovi 
    WHERE naslov LIKE '$naslov%' 
    ORDER BY naslov"; 
3

您在任何時候都沒有將字母傳遞給數據庫查詢。

1

您的查詢

$query = "SELECT filmovi.naslov, filmovi.godina, filmovi.trajanje, filmovi.slika 
    FROM filmovi 
    ORDER BY naslov"; 

是獲取所有從數據庫中的電影。這裏沒有過濾。爲此查詢添加一些where條件,您將獲得預期的結果。

1

改變這個查詢可能會有所幫助:

SELECT filmovi.naslov, filmovi.godina, filmovi.trajanje, filmovi.slika 
FROM filmovi 
WHERE `naslov` LIKE '{$naslov}%' 
ORDER BY naslov 
0

既然別人已經回答了你的問題(缺少WHERE子句),我只是想提一提的是,<center> HTML標籤已被棄用,你應該使用CSS代替。

爲PHP MySQL驅動程序也是如此過時的,而不是使用:

mysql_query($query); 

你應該使用

mysqli_query($link, $query); 

更好的安全性,OOP的支持,準備語句和事務。

你可以閱讀一下here

即使你是一個初學者,你不關心的這些功能的意思是,你應該嘗試並進入使用的mysqli反正的習慣,所以,當這一天當你學會欣賞它時,你不必返回並更新你的所有代碼。

相關問題