문제

여기 내가 지금까지 얻은 것입니다.

$awards_sql_1 = mysql_query('SELECT * FROM categories WHERE section_id = 1') or die(mysql_error());
$awards_sql_2 = mysql_query('SELECT * FROM categories WHERE section_id = 2') or die(mysql_error());
$awards_sql_3 = mysql_query('SELECT * FROM categories WHERE section_id = 3') or die(mysql_error());
$awards_sql_4 = mysql_query('SELECT * FROM categories WHERE section_id = 4') or die(mysql_error());

$loop = 1;

while($row_sections = mysql_fetch_array($sections_query)) {
    $category = 1;
    echo "<h3>" . $row_sections['section_name'] . " (Loop# $loop)</h3>";

    while($categories = mysql_fetch_array(${"awards_sql_{$loop}"})) {
        ${"winners_sql_{$loop}"} = mysql_query("SELECT * FROM 2009_RKR_bestof WHERE section = $loop && category = $category ORDER BY result_level ASC") or die(mysql_error());
        echo "<h4><strong>{$categories['category_name']}</strong></h4>";
        echo "<ul class=\"winners\">";
>>          while($winners = mysql_fetch_array(${"winners_sql_{$loop}"})) {
                switch ($winners['result_level']) {
                    case 1: $result_level = "Platinum"; break;
                    case 2: $result_level = "Gold"; break;
                    case 3: $result_level = "Silver"; break;
                }
                if (isset($winners['url'])) { $anchor = "<a href=\"http://{$winners['url']}\" target=\"_blank\">"; $close = "</a>"; }
                echo "<li>$anchor{$winners['winner']}$close ($result_level)</li>";

                unset($anchor);
                unset($close);
            }
        echo "</ul>";
        $category++;
    }
    $loop++;
}

내가 그루터기를 받고있는 곳에서,이 일이 올바르게 루프를 받고 있는가, 내 루프 카운터 ($ 루프)가 작동하지만, 승자를 통한 첫 번째 루프 후 실제 보상 수신자를 뱉어 낼 시간이되면 카테고리 제목을 생성하면 목록 항목이 루프가되지 않습니다.

나는 문제가 시작되거나 중심에 있다고 생각하는 곳에 약간의 포인터를 추가했습니다 (>>).

내 생각에 나는 어딘가에 var를 없애야 할 수도 있지만 모르겠지만 볼 수 없습니다.

도움이 되었습니까?

해결책

나는 KM을 사용하고 있습니다 - 당신은 단일 페이지를 표시하고 있고 루프가 있는데, 한 번에 많은 쿼리가 발생합니다. 1,000 명이 동시에 그 페이지를 쳤다면 어떻게 될까요? 아야...

더 큰 쿼리 (일부 반복 데이터 포함)를 고려하고 한 번 루프를 고려할 수 있습니까?

예를 들어:

SELECT 
  section_name, 
  category_name,
  result_level,
  url,
  winner
FROM 2009_RKR_bestof
INNER JOIN categories ON 2009_RKR_bestof.category = categories.id
INNER JOIN sections ON 2009_RKR_bestof.section = sections.id
ORDER BY section_name,category_name ASC

루프에서 새 섹션에 있는지 확인하기 위해 확인을 수행 할 수 있습니다.

//pseudo-code
$current_section = "";
while($stuff = mysql_fetch_array($sql))
{
  if ($current_section == "")
  {
    $current_section = $stuff["section_name"];
  }
  if ($current_section == $stuff["section_name"])
  {
    //keep going in your loop
  }
  else
  {
    //we've gotten to a new section - so close your html and start a new section
  }
}

당신은 아이디어를 얻습니다 ..

다른 팁

내 생각에 데이터 문제라는 것입니다. 타이틀을 읽는 데 어려움이없고 승자 만 읽습니다. 한 번 반복되면 데이터를 확인하고 Winners_SQL_2 -WINNDERS_SQL_4가 실제 데이터를 받고 있는지 확인합니다. 아마도 쿼리의 내용을 출력하여 echo winners_sql_2 라인을 추가하고 쿼리가 올바르게 프레임을 만들 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top