Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> IF во вложенном WHILE 
V
    Опции темы
0Z0NE
Дата 16.3.2013, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



Доброго времени суток Уважаемые Знатоки. Прошу помочь с казалось бы тривиальной задачей, нужно вытащить с базы данных всех пользователей получивших бан, дальше с другой таблицы вытащить в <select> возможные причины бана и на причину бана полученную в первой таблице повесить selected="selected". Но к сожалению выходит два варианта, или выбраны ВСЕ варианты, или не одного ... Вот кусок кода ...

Код

$all_my_bans = mysql_query("SELECT `id`, `intruder`, `breach`, `comment` FROM `violation` WHERE `moderator`='".$auth[0]."'", $db)or die("База данных не доступна");
    while(($all_bans = mysql_fetch_array($all_my_bans)) != false){

      $reasons = mysql_query("SELECT `id`, `description` FROM `reasons`", $db)or die("База данных не доступна");
      echo('
      <tr>
        <td align="center" valign="bottom">
          '.$all_bans[0].'
        </td>
        <td align="center" valign="bottom">
          <a href="../my_page.php?u_id='.$all_bans[1].'">'.$all_bans[1].'</a>
        </td>
        <td align="center" valign="bottom">
          <select name="reasons">
            <option>'.$all_bans[2].'</option>
       '); 

       while(($reason = mysql_fetch_array($reasons)) != false){
                     
            $violation = (integer)$all_bans[2];

            if($violation == 1){
              $breach = 'selected="selected"';
            }elseif($violation == 2){
              $breach = 'selected="selected"';
            }elseif($violation == 3){
              $breach = 'selected="selected"';
            }elseif($violation == 4){
              $breach = 'selected="selected"';
            }elseif($violation == 5){
              $breach = 'selected="selected"';
            }elseif($violation == 6){
              $breach = 'selected="selected"';
            }elseif($violation == 7){
              $breach = 'selected="selected"';
            }elseif($violation == 8){
              $breach = 'selected="selected"';
            }elseif($violation == 9){
              $breach = 'selected="selected"';
            }else{
              $breach = '';
            };
                        
            
            
            echo('<option value="'.$reason[0].'" '.$breach.'>'.$reason[1].'</option>');

        }
        echo('
          </select>
        </td>
        <td align="center" valign="bottom">
          '.$all_bans[3].'
        </td>
        <td align="center" valign="bottom">
          Отмена<br />(право)
        </td>
      </tr>
      ');
    };


Подскажите пожалуйста в какую сторону копать ... а еще лучше ткните носом где я накрутил ... smile 
В идеальном варианте конечно это select для неограниченного списка возможных нарушений.... но всё начинается с малого  smile 

UPD(16.03.2013 21:30):

Судя по простоте решения моя логика в плане поиска альтернативных вариантов хромает, ну да ладно. Выкладываю ниже код, великоват конечно для таких простых задач но он работает, дальше думаю каждый сможет подпилить его под свои нужды (авось кому понадобиться, а коли тема посчитается мусорной так тому и быть под снос её  smile )

Код

    $all_my_bans = mysql_query("SELECT `id`, `intruder`, `breach`, `comment` FROM `violation` WHERE `moderator`='".$auth[0]."'", $db)or die("База данных не доступна");
    while(($all_bans = mysql_fetch_array($all_my_bans)) != false){
            
            switch($all_bans[2]){
              case 1:
                $breach_1 = 'selected="selected"';
              break;
              case 2:
                $breach_2 = 'selected="selected"';
              break;
              case 3:
                $breach_3 = 'selected="selected"';
              break;
              case 4:
                $breach_4 = 'selected="selected"';
              break;
              case 5:
                $breach_5 = 'selected="selected"';
              break;
              case 6:
                $breach_6 = 'selected="selected"';
              break;
              case 7:
                $breach_7 = 'selected="selected"';
              break;
              case 8:
                $breach_8 = 'selected="selected"';
              break;
              case 9:
                $breach_9 = 'selected="selected"';
              break;
              case 10:
                $breach_10 = 'selected="selected"';
              break;
              default:
                $breach_10 = '';
            };

      $reasons = mysql_query("SELECT `id`, `description` FROM `reasons`", $db)or die("База данных не доступна");
      echo('
      <tr>
        <td align="center" valign="bottom">
          '.$all_bans[0].'
        </td>
        <td align="center" valign="bottom">
          <a href="../my_page.php?u_id='.$all_bans[1].'">'.$all_bans[1].'</a>
        </td>
        <td align="center" valign="bottom">
          <select name="reasons">
            <option>'.$all_bans[2].'</option>
       '); 

        $i = 0;
        while(($reason = mysql_fetch_array($reasons)) != false){
                     
            $i++;

            if($i == 1){
              $breach = $breach_1;
            };
            if($i == 2){
              $breach = $breach_2;
            };
            if($i == 3){
              $breach = $breach_3;
            };
            if($i == 4){
              $breach = $breach_4;
            };
            if($i == 5){
              $breach = $breach_5;
            };
            if($i == 6){
              $breach = $breach_6;
            };
            if($i == 7){
              $breach = $breach_7;
            };
            if($i == 8){
              $breach = $breach_8;
            };
            if($i == 9){
              $breach = $breach_9;
            };
            if($i == 10){
              $breach = $breach_10;
            };
            
            echo('<option value="'.$reason[0].'" '.$breach.'>'.$reason[1].'</option>');
        
        }
        echo('
          </select>
        </td>
        <td align="center" valign="bottom">
          '.$all_bans[3].'
        </td>
        <td align="center" valign="bottom">
          Отмена<br />(право)
        </td>
      </tr>
      ');
    };


Примечание: неясно почему но параллельно с передачей selected передается ошибка о отсутствующей переменной  smile

Это сообщение отредактировал(а) 0Z0NE - 16.3.2013, 22:41
PM MAIL   Вверх
Another
Дата 27.9.2013, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 17.6.2006

Репутация: нет
Всего: -2



Цитата

Примечание: неясно почему но параллельно с передачей selected передается ошибка о отсутствующей переменной  smile

потому как оформление кода просто пипец)

Что мешало использовать массивы?

Это сообщение отредактировал(а) Another - 27.9.2013, 01:33
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0708 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.