2013-07-03 48 views
1

我想在簡單的PHP中編寫一個相冊的程序,但是我想讓它更先進一些,然後我就可以使用它。在mysql和php中按年份合併

平時我寫的是這樣的:

<?php $query = mysql_query("SELECT year FROM photo"); 
while($record = mysql_fetch_object($query)) { 
echo $record->year."<br>"; 
$query2 = mysql_query("SELECT albumName, url FROM photo WHERE year = '".$year."'"); 
while($album = mysql_fetch_object($query2)){ 
echo "<a href=\"".$album->url."\">".$albumName."</a><br>"; 
} 
} ?> 

正如你會明白這是非常糟糕的有兩個,而在一個循環,所以我想以不同的方式去做。我想學習如何更好地做到這一點。事情是,我不知道這個名字,所以很難搜索這個主題。有沒有人能夠給我一小段代碼,一個資源或一些東西來讓我走?

非常感謝。

回答

1

你可以做

<?php 
    $year = ''; // create a generic variable that will hold the album year 
    $query = mysql_query("SELECT albumName, url, year FROM photo ORDER BY year"); // Sort by year 
    while($album = mysql_fetch_object($query)) { 
     if($album->year != $year){ // check if $album->year is the same as the $year value 
     echo $album->year."<br>"; // if not the same echo the year 
     } 
     $year = $album->year; // set the $year value to the $album->year 
     echo "<a href=\"".$album->url."\">".$album->albumName."</a><br>"; 
    } 
?> 
+0

這正是我一直在尋找的!非常感謝你! – KarelSchapie

+0

很高興我能幫到你。 – Sean

0

如果你這樣做:

<?php $query = mysql_query("SELECT albumName, url, year FROM photo"); 
    while($record = mysql_fetch_object($query)) { 
     echo $record->year."<br>"; 
     echo "<a href=\"".$record->url."\">".$albumName."</a><br>"; 
    }  
?> 

什麼是錯的? 現在,如果每年有許多專輯,您的代碼可能會多次製作專輯。

+0

如果我會做這樣的,它會意味着之前的每一張專輯名稱後,它會顯示專輯的一年。事情是:目前只有兩年的時間每年都有超過10張專輯。肖恩的答案完成了這項工作,但感謝你的幫助! – KarelSchapie