Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: как вывести из базы данных значения чекбоксов, селектов и т.п.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
LEONeso
Отправлено: 27 Октября, 2010 - 20:31:23
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




Здравствуйте, каким образом выводятся из базы данных значения чекбоксов, селектов и т.п.?

Значения сохранения из value т.е. имеет обычное слово, но не понятно как это слово сопоставить с списком и выделить его или чекнуть.

Кто имеет опыт, поделитесь. Спасибо.


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
OrmaJever Модератор
Отправлено: 27 Октября, 2010 - 20:47:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Чек боксы и селекты находятся на странице и приходят в масив $_POST причём тут база даных? В чём суть вопроса?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
LEONeso
Отправлено: 27 Октября, 2010 - 21:14:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




В начале я отправил их в базу данных mysql. Не погу понять, как вывести их при редактировании записи, вывод текста в формы не составляет труда, а вот вывод выбора чекбокса и ли селекта я вот не знаю.

Единственное, что известно - это значение т.к. оно берется из базы данных. Сравнивать значения? У меня это может выйти огромной кучей кода из if-else.


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
Uchkuma
Отправлено: 27 Октября, 2010 - 21:22:06
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




PHP:
скопировать код в буфер обмена
  1. if(условие) echo ' checked';
Все зависит от вашей конкретной ситуации. Телепатов-то нет как всегда ((
 
 Top
LEONeso
Отправлено: 27 Октября, 2010 - 21:44:32
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




CODE (html):
скопировать код в буфер обмена
  1. <select name="submit_mult" dir="ltr" onchange="this.form.submit();">
  2.    
  3.             <option value="С отмеченными:" selected="selected">С отмеченными:</option>
  4.             <option value="Уничтожить">Уничтожить</option>
  5.             <option value="Очистить">Очистить</option>
  6.             <option value="Версия для печати">Версия для печати</option>
  7.             <option value="Проверить таблицу">Проверить таблицу</option>
  8.             <option value="Оптимизировать таблицу">Оптимизировать таблицу</option>
  9.             <option value="Починить таблицу">Починить таблицу</option>
  10.             <option value="Анализ таблицы">Анализ таблицы</option>
  11.                     </select>

в базе данных хранятся, только value выбранного option, для простоты вывода их в статический вид, но как только заходит речь о редактировании, я не могу сам себе ответить, как я это буду реализовывать, есть предположение о таком коде:
PHP:
скопировать код в буфер обмена
  1. function seleted ($a, $b) {if ('$b'=== '$a') {echo 'selected="selected"';}}
  2.  $delete=$myrow['delete'];
  3. echo'
  4. <select name="submit_mult" dir="ltr" onchange="this.form.submit();">
  5.            <option value="С отмеченными:" '.seleted("","delete").'>С отмеченными:</option>
  6.            <option value="Уничтожить"'.seleted("Уничтожить","$delete").'>Уничтожить</option>
  7.            <option value="Очистить"'.seleted("Очистить","$delete").'>Очистить</option>
  8.            <option value="Версия для печати"'.seleted("Версия для печати","$delete").'>Версия для печати</option>
  9.            <option value="Проверить таблицу"'.seleted("Проверить таблицу","$delete").'>Проверить таблицу</option>
  10.            <option value="Оптимизировать таблицу"'.seleted("Оптимизировать таблицу","$delete").'>Оптимизировать таблицу</option>
  11.            <option value="Починить таблицу"'.seleted("Починить таблицу","$delete").'>Починить таблицу</option>
  12.            <option value="Анализ таблицы"'.seleted("Анализ таблицы","$delete").'>Анализ таблицы</option>
  13.                    </select>';


Мысли: можно не читать
по поводу запроса к базе данных из функции, собственно он даже не сможет узнать куда и зачем ему послать запрос, чтоб выдернуть значение ячейки таблицы. Как вариант, вывод запроса в переменную $delete=$myrow['delete']; правда там еще придется описать else, ведь переменная может быть пустой =) а пустая переменная - это значение по стандарту, ну в моём понимании кода, зачем выводить "С отмеченными:" в статическом виде записи. По крайней мере, оно мне не надо - это информирующий текст о выпадающем списке.

(Отредактировано автором: 27 Октября, 2010 - 22:02:56)



-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
Uchkuma
Отправлено: 27 Октября, 2010 - 22:23:00
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Создайте массив с опциями, а потом обходите их в цикле:
PHP:
скопировать код в буфер обмена
  1. $options = array(
  2. 'Уничтожить',
  3. 'Очистить',
  4. 'Версия для печати',
  5. 'Проверить таблицу',
  6. 'Оптимизировать таблицу',
  7. 'Починить таблицу',
  8. 'Анализ таблицы'
  9. );
  10.  
  11. echo '<select name="submit_mult" dir="ltr" onchange="this.form.submit();">
  12. <option>С отмеченными:</option>';
  13.  
  14. foreach($options as $key=>$option){
  15. echo '<option value="'.$key.'"'.($myrow['option']==$key ? ' selected':'').'>'.$option.'</option>';
  16. }
  17.  
  18. echo '</select>';
В качестве значения опций используйте целочисленный ключ или строку на латинице и его храните в базе. Если будете использовать строковый ключ, с соответствующими ключами создавайте элементы массива
PHP:
скопировать код в буфер обмена
  1. $options = array(
  2. 'destroy'=>'Уничтожить',
  3. 'clear'=>'Очистить',
  4. 'print'=>'Версия для печати',
  5. ...
  6. );
 
 Top
OrmaJever Модератор
Отправлено: 27 Октября, 2010 - 22:24:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




ну можно зделать так

PHP:
скопировать код в буфер обмена
  1.  
  2. switch($myrow['delete'])
  3. {
  4.      case 'Уничтожить':
  5.            echo 'option с первым отмеченым';
  6.      break;
  7.      case 'Очистить':
  8.            echo 'option со вторым отмеченым';
  9.      break;
  10.      
  11.      и т.д.
  12. }


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Uchkuma
Отправлено: 27 Октября, 2010 - 22:25:07
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




И, ради бога, пишите переменные без кавычек!
(Добавление)
OrmaJever, немного не то. У вас выведется лишь один option.
 
 Top
OrmaJever Модератор
Отправлено: 27 Октября, 2010 - 22:30:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Uchkuma пишет:
OrmaJever, немного не то. У вас выведется лишь один option.

Я имел виду в каждую ячейку ложить весь селект. Ну вариантов может быть многоУлыбка


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Uchkuma
Отправлено: 27 Октября, 2010 - 22:36:45
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




OrmaJever пишет:
Я имел виду в каждую ячейку ложить весь селект.
Круто!
Упрощать надо, упрощать! А у вас индокод получается =(
 
 Top
LEONeso
Отправлено: 28 Октября, 2010 - 20:28:28
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




спасибо всем, буду пробовать, спасибо даже за свитч, я про него вообще забыл, кейсы тож полезная штука в некоторых моментах Подмигивание
--
массивы фактически не использовал, теперь начну их использовать, возможно в будущем пойму, как их использовать с максимальной выгодой для упрощения кода.


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
Uchkuma
Отправлено: 28 Октября, 2010 - 22:44:52
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




LEONeso пишет:
спасибо даже за свитч, я про него вообще забыл, кейсы тож полезная штука в некоторых моментах
Вообще-то это одна конструкция ;)
 
 Top
LEONeso
Отправлено: 29 Октября, 2010 - 14:49:07
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




схожая =) но там же не номер указывается, а название кейса. как я понимаю.
вот в данный момент стопарнулся на выводе этих списков, буду пробовать =)
(Добавление)
Uchkuma пишет:
$key

Что есть $key? - сделал по аналогии, но не вышло. не работает список, не выводится верно. Верней, массив выводится верно, список верный, но не может выделить верно нужную строку.

Хотя требуется всего лишь сравнить данные из таблицы и данные в массиве и пометить селект.

Придется экспериментировать, методом тыка м.б. и получится спустя сотни ошибок.


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
Uchkuma
Отправлено: 29 Октября, 2010 - 18:27:36
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




$key - это ключ элемента массива и соответственно значение <option>. Но если у вас значение элемента списка такое же, как и его заголовок, то используйте переменную $option вместо $key. Вообще-то это неправильно, поэтому я вас поправил. Читайте внимательней мой пост с примерами.
И switch-case тут не надо использовать. Не тот случай.
LEONeso пишет:
схожая =) но там же не номер указывается, а название кейса
В switch может быть указано как число, так и строка. Еще раз говорю, это одна конструкция, единое целое. Почитайте.
 
 Top
LEONeso
Отправлено: 29 Октября, 2010 - 19:39:58
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




Почитал и про свитч и про ФОР'each

сделал так, собственно как и говорилось выше:
PHP:
скопировать код в буфер обмена
  1.  
  2.       $options = array(
  3.       'Уничтожить',
  4.       'Очистить',
  5.       'Версия для печати',
  6.       'Проверить таблицу',
  7.       'Оптимизировать таблицу',
  8.       'Починить таблицу',
  9.       'Анализ таблицы'
  10.       );
  11.       echo '<select name="submit_mult" dir="ltr" onchange="this.form.submit();">
  12.      <option>С отмеченными:</option>';
  13.       foreach($options as $options){
  14.       echo '<option value="'.$options .'"'.($myrow['option']==$options  ? ' selected':'').'>'.$option.'</option>';
  15.       }
  16.       echo '</select>';

Выбрал способ без ключа.

Я как понял, ключ нужен для сравнения массивов таких видов:
PHP:
скопировать код в буфер обмена
  1. $a = array (
  2.     "one" => 1,
  3.     "two" => 2,
  4.     "three" => 3,
  5.     "seventeen" => 17
  6. );
  7.  

где $key=>$name,
(Добавление)
забыл написать, что все работает, пока еще не тестил упорно, но завтра при работе над всем кодом, буду смотреть, что там отпадёт при совместной работе с "радио точками" и чекбоксами.

Спасибо. По пиву!
(Добавление)
К стати ,если я вывожу массив с ключем, то получается так?

в распоряжении:
PHP:
скопировать код в буфер обмена
  1. $a = array (
  2.     "one" => 1,
  3.     "two" => 2,
  4.     "three" => 3,
  5.     "seventeen" => 17
  6. );


присваивание:
PHP:
скопировать код в буфер обмена
  1. <input type=\"text\" name=\"test\" id=\"test\" value=\"".$a[1]."\" title=\"".$a['one']."\" maxlength=\"11\">
  2.  


на выходе: ?
CODE (html):
скопировать код в буфер обмена
  1. <input type="text" name="test" id="test" value="one" title="1" maxlength="11">


Верно я понял использование таких массивов? вне цикла

(Отредактировано автором: 29 Октября, 2010 - 19:45:29)



-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB