Показать сообщение отдельно
  #23 (permalink)  
Старый 19.02.2015, 15:48
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Перепишите этот, слов нет назвать классом, так:

$select = mysql_query("SELECT uid, seo_name FROM filter");
if($selec) {
    if(mysql_num_rows($select)) {
         while ($r = mysql_fetch_object($select)) $opt .= '<option value="'.$r->uid.'">'.$r->seo_name.'</option>';
         echo $opt; 
    } else //вывод сообщения об отсутствии записей в базе, и это должно как-то определяться в рамках единого диалога
} else //действие - ошибка запроса


Пояснение о uid. Ваш список в качестве и текста опций, и их значений использует одно и тоже - текст seo_name. Это не смертельно, но и не лучшее, что можно придумать. Я не знаю назначение вашего списка, но обычно такие вещи как-то связаны с другими таблицами, где этот список используется. И такая связь зачастую осуществляется посредством ID - уникальных идентификаторов. Уникальность достигается полем с автоинкрементом. Вот в моем запросе я как бы подразумеваю, что такой идентификатор есть и у вашего списка, именно его значение будет иметь опции в качестве значений, а не строки описания этого списка. Можете это удалить, но обдумайте прежде хорошо структуру своих данных.

Как вставить этот html я уже показывал, а если не получается, то проверяйте запросы, передается ли $_GET['do'] == "updateselect", GET ли метод у вашего запроса и т.п.

PS. Тут тема уже не поянть что к чему ) Как в массив строки из базы, а не в html? Вместо этого:
while ($r = mysql_fetch_object($select)) $opt .= '<option value="'.$r->uid.'">'.$r->seo_name.'</option>';
         echo $opt;

это:
while ($r = mysql_fetch_assoc($select)) $opt[] = $r;
         echo json_encode($opt);


Если скрипт пишется под РНР версию не ниже 5.4, то можно использовать опцию JSON_UNESCAPED_UNICODE в json_encode().

Последний раз редактировалось laimas, 19.02.2015 в 16:41.
Ответить с цитированием