Условие для цикла do-while

Статус
В этой теме нельзя размещать новые ответы.

Samagonische

Создатель
Регистрация
16 Июл 2007
Сообщения
35
Реакции
16
Здравствуйте.
Уважаемые знатоки, прошу помощи.
Есть таблица вида:
__________________
ID | Name | Group |
------------------|
1 |Alternative | Alternative |
2 |Crossover | Alternative |
3 |Disco-Punk | Alternative |
4 |Electro-Punk | Alternative |
5 |EMO | Alternative |
8 |Field Rec. | Avant-garde |
9 |Improve | Avant-garde |
10|Musique Con. | Avant-garde |
11|Spoken Word | Avant-garde |
12|Classic | Blues |
13|Contemporary | Blues |
14|Electric | Blues |
15|Funk | Blues/R'N'B |
16|Motown | Blues/R'N'B |
17|New Jack | Blues/R'N'B |
18|Piano Blues | Blues/R'N'B |
19|Soul | Blues/R'N'B |
------------------------------
Есть действие:
PHP:
<?php
require_once( "config.php" );
session_start( );
require_once( "functions.php" );
$login = $_SESSION['login'];
$pass = $_SESSION['pass'];
$user = getuserid( $login, $pass);
$action = isset($_REQUEST['action']) ? strtolower( $_REQUEST['action']) : "";                       
if (getrights($action, $user))
{
    switch ( $action )
    {
case "getgenres" :
  $wheres = array();
  if (getrights("show_hidden", $user))
   {
     $wheres[] = " music_albums.Hide=0 ";
    }
    $where = count( $wheres ) ? " WHERE ".implode( " AND ", $wheres ) : "";
     $_RESULT['genres'] = array( );
      $sql = "SELECT music_genres.Group as Name, count(*) as Count FROM music_genres RIGHT JOIN music_albumgenres ON (music_genres.ID = music_albumgenres.GenreID) LEFT JOIN music_albums ON (music_albums.ID = music_albumgenres.AlbumID) ".$where." GROUP BY music_genres.Group ORDER BY Name";
                            $result = mysql_query( $sql );
                            do
                            {
                                if ( !$result || ( $field = mysql_fetch_assoc( $result ) ) )
                                {
                                    if ( $field['Name'] )
                                    {
                                        $_RESULT['genres'][] = $field;
                                    }
                                }
                            } while ( 1 );
  }
}
                            else
 {
    $_RESULT['errors'][] = "Извините, ".$login.", у Вас недостаточно прав для совершения действия '{$action}' ";
 }
При вызове действия "getgenres"
Цикл проходит 4-е раза, как видно из таблицы(Alternative,Avant-garde,Blues,Blues/R'N'B) и зависает проблема в пост условии цикла do-while.
Задача: остановить цикл логическим условием
PHP:
while ( ??? );
Помогите пожалуйста.
 
Переделай цикл следующим образом:
PHP:
$result = mysql_query( $sql );
while( $field = mysql_fetch_assoc( $result ) ) 
{
    if ( $field['Name'] )
    {
      $_RESULT['genres'][] = $field;
    }
}

Если честно зачем в if условие !$result не знаю)))ведь если $result=0 то !$result=1 и мы с пустым результатом выборки входим в цикл:)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху