2011-11-27 84 views
1

我想創建一個菜單,用戶可以查看他們創建的菜單。該菜單由一個下拉框組成,用戶可以使用該框來按周過濾菜單。PHP有這樣一個更簡單和更整潔的方法嗎?

然後菜單會顯示一週中的七天和他們早餐,午餐,晚餐,布丁和小吃的五種用餐時間。以下是我目前爲止的顯示效果。

$sqlmeasurement = mysql_query("SELECT title FROM recipe JOIN menu ON recipe.recipeid = menu.recipeid WHERE menu.weekid = '".$selectweek."' AND menu.mealtimeid = '1'") or die(mysql_error()); 
Print '<table border="0"> 
    <tr> 
     <th width="100"> </th> 
     <th width="200">Monday</th> 
    </tr>'; 
    echo "<tr>"; 
    echo "<td><strong>Breakfast</strong></td>"; 
    echo "<td>"; 
while($info = mysql_fetch_array($sqlmeasurement)) 
{ 
    echo $info['title']; 
    echo "<br/>"; 
} 
echo "</td> "; 
echo "</tr>"; 
echo "</table>"; 

正如你可以看到這個PHP語句選擇什麼,我從桌上想,而是因爲一週有7天,5種類型的餐次,這意味着我將有35倍,以便複製此代碼顯示所有我想要的。

因此,例如代碼的下一位會是這樣:

$sqlmeasurement2 = mysql_query("SELECT title FROM recipe JOIN menu ON recipe.recipeid = menu.recipeid WHERE menu.weekid = '".$selectweek."' AND menu.mealtimeid = '2'") or die(mysql_error()); 
Print '<table border="0">'; 

    Print '<tr> 
     <th width="100"> </th> 
     <th width="200"> </th> 
    </tr>'; 
    echo "<tr>"; 
    echo "<td><strong>Lunch</strong></td>"; 
    echo "<td>"; 
while($info2 = mysql_fetch_array($sqlmeasurement2)) 
{ 
    echo $info2['title']; 
    echo "<br/>"; 
} 
echo "</td> "; 
echo "</tr>"; 
echo "</table>"; 

依此類推,直到我所有的日子和他們的用餐時間。

有沒有辦法顯示所有的信息,沒有這個迭代?

+0

是的,你得到所有你需要的信息在一個數組中。然後你開始輸出。更好地使用某種模板引擎。例如,Smarty。 – Jauzsika

+0

ps。打印 - 回聲較慢 – user956584

+0

@Userpassword是的,我猜想,有些怪異的微秒會顯着改善用戶體驗。一個很好的改進是使用html插值,並在與「視圖」頁面不同的部分進行查詢。 –

回答

3

您有各種選擇。你可以把輸出放到一個函數中,然後用不同的參數調用它。

function ouptutMeal($selectweek, $mealtime, $mealname) { 
    $sqlmeasurement2 = mysql_query("SELECT ... WHERE menu.weekid = '$selectweek' AND menu.mealtimeid = '$mealtime'"); 

    echo "<table> 
      <tr> 
       <th> </th> 
       <th> </th> 
      </tr> 
      <tr> 
      <td><strong>$mealname</strong></td> 
      <td>"; 
    while($info2 = mysql_fetch_array($sqlmeasurement2)) { 
     echo $info2['title'], '<br/>'; 
    } 
    echo '</td> 
      </tr> 
     </table>'; 
} 

ouptutMeal($selectweek, 1, 'breakfast'); 
ouptutMeal($selectweek, 2, 'lunch'); 

或者你可以使用不同的查詢,一次獲得所有的信息,並遍歷它:

$q = "SELECT title, mealtimeid, mealtimename 
     FROM ... 
     WHERE menu.weekid = '$selectweek' 
     ORDER BY menu.mealtimeid"; 

然後,您可以遍歷這些結果,將它們組裝成,比方說,一個2D基於使用進餐時間作爲關鍵字的數組。例如

$mealInfo = array() 

while($info = mysql_fetch_array($result)) { 
    $mealInfo[$info['mealtimename'][] = $info; 
} 

foreach ($mealInfo as $mealName => $mealData) { 
    ouptutMeal($mealName, $mealData); 
} 
相關問題