2011-11-27 3 views
1

사용자가 만든 메뉴를 볼 수있는 메뉴를 만들려고합니다. 메뉴는 사용자가 주별로 메뉴를 필터링하는 데 사용하는 드롭 다운 상자로 구성됩니다.PHP는이 작업을보다 간단하고 깔끔하게 처리 할 수있는 방법이 있습니까?

메뉴에는 주중 일곱 가지 요일과 아침, 점심, 저녁, 푸딩 및 간식이있는 5 가지 유형의 식사 시간이 표시됩니다. 아래는 어떻게 지금까지 그것을 표시 currentley 오전입니다. 이 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>"; 

내가 테이블에서 원하는하지만, 주 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. 인쇄 - 느립니다. echo – 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, 말,에 조립의 결과를 반복 할 수 있습니다 mealtimename을 키로 사용하여 배열. 예 :

$mealInfo = array() 

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

foreach ($mealInfo as $mealName => $mealData) { 
    ouptutMeal($mealName, $mealData); 
} 
관련 문제