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 :: Массив checkbox'ов [2]

 PHP.SU

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


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

> Описание: добавление его в базу данных
Dezmont
Отправлено: 17 Февраля, 2012 - 11:58:09
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


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




imper пишет:
нееее, битовые маски мне тут явно не помогут, мне нужно, лично по мое идиотской логике,
что бы сам запрос был не в цикле а $i была в запросе может из запроса ссылаться на $i?
&$i


Ну так на той странице, где вы записываете в БД обработайте ваш массив чекбоксов.
PHP:
скопировать код в буфер обмена
  1. foreach($dop_yslygi as $k => $v){
  2.    $value . = $v.',';
  3. }
  4. $value = substr($value, 0, -1);


А потом в свой SQL запрос вставляете просто строковую переменную и всё. И получите в столбце checkbox, для id=1 значения: "Один,два,три,четыре"

З.Ы. Это если я правильно понял чего вы хотите.

(Отредактировано автором: 17 Февраля, 2012 - 11:59:41)

 
 Top
imper
Отправлено: 17 Февраля, 2012 - 12:00:13
Post Id



Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Февр. 2012  
Откуда: Тольятти


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

[+]


imper пишет:
Окей щас всё будет =-)
CREATE TABLE IF NOT EXISTS `zakaz` (
`id` int(20) NOT NULL AUTO_INCREMENT,
`type_kontakta` varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`nomer_kontakta` varchar(40) NOT NULL,
`name_famil` varchar(65) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`type_site` varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`date` varchar(20) NOT NULL,
`dop_text` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`sites` tinytext CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`dop_yslygi` varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=75 ;
вот моя структура

вот я беру из выделенных чекбоксов массив
if(isset($_POST['dop_yslygi']))
{
$dop_yslygi = $_POST['dop_yslygi'];
$count = count($dop_yslygi);
echo $count;
}

Тут я добавляю информацию

$query = "INSERT INTO zakaz VALUES".
"('NULL','$variant','$nomer_kontakta','$name_famil','$typesite','$date','$text1','$text2',' ')";
$result = mysql_query($query);
if(!$result)
{
echo "Сбой при вставке данных в базу" . mysql_error() . "<br /><br />";
}

а тут я пытаюсь добавить в поле dop_yslygi все выделенные чекбоксы которые в массиве
$dop_yslygi Голливудская улыбка


if($count != 0)
{
for ($i=0; $i < $count; $i++)
{
$query = "INSERT INTO zakaz(dop_yslygi) VALUES" . "('$dop_yslygi[$i]')";
}
if(!mysql_query($query)) echo mysql_error();
}



чуть не забыл вот как чек боксы в html выглядят
<input type="checkbox" name="dop_yslygi[]" value="Портфолио" id="" />
<input type="checkbox" name="dop_yslygi[]" value="Сертификаты" id="" />
<input type="checkbox" name="dop_yslygi[]" value="Меню" id="" />


-----
Самое лучшее решение проблемы
самое простое
 
 Top
sKaa
Отправлено: 17 Февраля, 2012 - 12:00:37
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


Битовые маски тут в самый раз применимы. Лучше них не придумать )
 
 Top
illy
Отправлено: 17 Февраля, 2012 - 12:01:29
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


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




Да Хорошо


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
imper
Отправлено: 17 Февраля, 2012 - 12:06:24
Post Id



Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Февр. 2012  
Откуда: Тольятти


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

[+]


Dezmont пишет:
imper пишет:
нееее, битовые маски мне тут явно не помогут, мне нужно, лично по мое идиотской логике,
что бы сам запрос был не в цикле а $i была в запросе может из запроса ссылаться на $i?
&$i


Ну так на той странице, где вы записываете в БД обработайте ваш массив чекбоксов.
PHP:
скопировать код в буфер обмена
  1. foreach($dop_yslygi as $k => $v){
  2.    $value . = $v.',';
  3. }
  4. $value = substr($value, 0, -1);


А потом в свой SQL запрос вставляете просто строковую переменную и всё. И получите в столбце checkbox, для id=1 значения: "Один,два,три,четыре"

З.Ы. Это если я правильно понял чего вы хотите.



воооооооо она моя мечта, ой спасибо я блин эту функцию по объеденению строк искал часа 2, ещё раз огромное спасибо =-)


-----
Самое лучшее решение проблемы
самое простое
 
 Top
Dezmont
Отправлено: 17 Февраля, 2012 - 12:12:33
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


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




imper, Строки
Если вы про конкатенацию .=, то это не функция, а конструкция языка. Прочитайте по ссылке сверху, узнаете очень много нового и полезного.

(Отредактировано автором: 17 Февраля, 2012 - 12:12:47)

 
 Top
Panoptik
Отправлено: 17 Февраля, 2012 - 12:32:41
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




Dezmont пишет:
Ну так на той странице, где вы записываете в БД обработайте ваш массив чекбоксов.
PHP:
скопировать код в буфер обмена

foreach($dop_yslygi as $k => $v){
$value . = $v.',';
}
$value = substr($value, 0, -1);


есть более простой способ

(Отредактировано автором: 17 Февраля, 2012 - 12:33:10)



-----
Just do it
 
 Top
Viper
Отправлено: 17 Февраля, 2012 - 13:00:36
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




sKaa я понимаю что это можно и так сделать, но зачем делать новое устройство в заднице делая заведомую ошибку в планировании приложения и обработке данных...


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
illy
Отправлено: 17 Февраля, 2012 - 13:11:53
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


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




Viper пишет:
зачем делать новое устройство в заднице
Ха-ха


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
sKaa
Отправлено: 17 Февраля, 2012 - 13:38:41
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


Viper, я не совсем понял вашу мысль, но если вы считаете, что использование битовых масок - заведомая ошибка в приложении и планировании мне вас очень жаль.
Битовые маски используются повсеместно - достаточно взглянуть практически любой из методов api.vk : http://vk[dot]com/developers.php?o=-[dot][dot][dot]mp;p=getVariable

Код ошибки

Цитата:
Описание
1
Unknown error occurred.
2
Application is disabled. Enable your application or use test mode.
4
Incorrect signature.
5
User authorization failed.
6
Too many requests per second.
110
Invalid key.
 
 Top
illy
Отправлено: 17 Февраля, 2012 - 13:43:16
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


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




Да. Битовые маски рулят Хорошо


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
Dezmont
Отправлено: 17 Февраля, 2012 - 13:46:37
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


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




sKaa, Viper хотел сказать, что imper уже неверно составил структуру своей БД... А уж битовые маски, там вообще до 1 места...
 
 Top
imper
Отправлено: 17 Февраля, 2012 - 18:54:39
Post Id



Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Февр. 2012  
Откуда: Тольятти


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

[+]


Panoptik пишет:
Dezmont пишет:
Ну так на той странице, где вы записываете в БД обработайте ваш массив чекбоксов.
PHP:
скопировать код в буфер обмена

foreach($dop_yslygi as $k => $v){
$value . = $v.',';
}
$value = substr($value, 0, -1);


есть более простой способ


Спасибо большое очень нужная информация =-)
(Добавление)
Кстати структуру я составил правильно, а вот битовые маски мне зачем? так понять и не могу, если всего то одну строку надо вставить нужно было, самый лучший выход из ситуации самый простой =-)


-----
Самое лучшее решение проблемы
самое простое
 
 Top
Metalpriest
Отправлено: 27 Июля, 2012 - 12:51:26
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Июль 2012  


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




Ребята, вопрос по теме
у меня есть чекбоксы, массив содержащий ихние имена, я затрудняюсь в том как сделать так чтобы выведенные чекбоксы писались словами?

Вот массивы содержащие цены и названия
PHP:
скопировать код в буфер обмена
  1. $new = array(
  2.     1 => array(           // Квартиры
  3.                    6 => 1100, // Рабочие чертежи
  4.                    7 => 200, // Авторский надзор
  5.                                    8 => 180, // 3D визуализация
  6.                    9 => 180, // Подбор материалов
  7.                                    ),
  8.                
  9.                 2 => array(           // Коттедж
  10.                    6 => 1000, // Рабочие чертежи
  11.                    7 => 180, // Авторский надзор
  12.                                    8 => 160, // 3D визуализация
  13.                    9 => 160, // Подбор материалов
  14.                                    ),
  15.             3 => array(           // Офис
  16.                    6 => 900, // Рабочие чертежи
  17.                    7 => 160, // Авторский надзор
  18.                                    8 => 150, // 3D визуализация
  19.                    9 => 150, // Подбор материалов
  20.                                    ),
  21.             4 => array(           // Магазин, кафе
  22.                    6 => 900, // Рабочие чертежи
  23.                    7 => 160, // Авторский надзор
  24.                                    8 => 150, // 3D визуализация
  25.                    9 => 150, // Подбор материалов
  26.                                    ),                  
  27.                                    );
  28.                                    
  29.                                    
  30.                                    
  31.  $newslova  = array(
  32.          1 => array(           // Квартиры
  33.                    6 => 'Рабочие чертежи', // Рабочие чертежи
  34.                    7 => 'Авторский надзор', // Авторский надзор
  35.                                    8 => '3D визуализация', // 3D визуализация
  36.                    9 => 'Подбор материалов', // Подбор материалов
  37.                                    ),
  38.                
  39.             2 => array(           // Квартиры
  40.                    6 => 'Рабочие чертежи', // Рабочие чертежи
  41.                    7 => 'Авторский надзор', // Авторский надзор
  42.                                    8 => '3D визуализация', // 3D визуализация
  43.                    9 => 'Подбор материалов', // Подбор материалов
  44.                                    ),
  45.             3 => array(           // Квартиры
  46.                    6 => 'Рабочие чертежи', // Рабочие чертежи
  47.                    7 => 'Авторский надзор', // Авторский надзор
  48.                                    8 => '3D визуализация', // 3D визуализация
  49.                    9 => 'Подбор материалов', // Подбор материалов
  50.                                    ),
  51.                 4 => array(           // Квартиры
  52.                    6 => 'Рабочие чертежи', // Рабочие чертежи
  53.                    7 => 'Авторский надзор', // Авторский надзор
  54.                                    8 => '3D визуализация', // 3D визуализация
  55.                    9 => 'Подбор материалов', // Подбор материалов
  56.                                    ),
  57.                                    );


Сама форма с чеками
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <input type="checkbox" name="diz[]" value="6" />Рабочие чертежи
  3. <input type="checkbox" name="diz[]" value="7"/>Авторский надзор
  4. <input type="checkbox" name="diz[]" value="8" />3D визуализация
  5. <input type="checkbox" name="diz[]" value="9"/>Подбор материалов
  6. <br />



Далее я затрудняюсь в том как вывести все ОТМЕЧЕННЫЕ чебоксы
написал чтото типо

PHP:
скопировать код в буфер обмена
  1.     $diz1 = isset($_POST['diz']) ? $_POST['diz'] : array();
  2.    
  3.     foreach($diz1 as $param1)
  4. echo $newslova[$_POST['type']][$param1];


Таким образом выводит название последнего отмеченного чекбокса, а как сделать что-бы все отмеченные приходили?

(Отредактировано автором: 27 Июля, 2012 - 12:53:01)

 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB