PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Описание: Помогите разобраться с checkbox.
Поиск в теме | Версия для печати
DraMS
Отправлено: 02 Апреля, 2017 - 22:32:34
Новичок
Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2017
Помог: 0 раз(а)
Доброго времени суток.
Дано CMS Wordpress. Произвольные типа полей.
PHP:
скопировать код в буфер обмена
'label' => 'Удобства' ,
'desc' => 'Выберите удобства объекта' ,
'id' => $prefix . 'udobstva_group' ,
'type' => 'udobstva_group' ,
'label' => 'Балкон' ,
'value' => 'Балкон'
) ,
'label' => 'Посудомоечная машина' ,
'value' => 'Посудомоечная машина'
) ,
'label' => 'Холодильник' ,
'value' => 'Холодильник'
) ,
'label' => 'Стиральная машина' ,
'value' => 'Стиральная машина'
) ,
'label' => 'Телевизор' ,
'value' => 'Телевизор'
) ,
'label' => 'Кондиционер' ,
'value' => 'Кондиционер'
)
)
Вывожу в админке PHP:
скопировать код в буфер обмена
case 'udobstva_group' :
foreach ( $field [ 'options' ] as $option ) {
echo '<input type="checkbox" value="' . $option [ 'value' ] . '" name="' . $field [ 'id' ] . '[]" id="' . $option [ 'value' ] . '"' , $meta && in_array ( $option [ 'value' ] , $meta ) ?
' checked="checked"' : '' , ' /> <label for="' . $option [ 'value' ] . '">' . $option [ 'label' ] . '</label><br />' ;
}
echo '<span class="description">' . $field [ 'desc' ] . '</span>' ;
break ;
Вывожу на сайте PHP:
скопировать код в буфер обмена
<?PHP $mass = get_post_meta( $post -> ID , 'udobstva_group' , true ) ;
echo '<ul >' ;
foreach ( $mass as $value ) {
echo '<li value="' . $value . '">' . $value . '</li>' ;
}
echo '</ul>' ;
?>
Выводятся только отмеченные. Нужно чтоб и неотмеченные выводились, но вычеркнутыми.
Вставил <input type="hidden" name="'.$field['id'].'" value="0"> добавилось в списке нулей.Прикреплено изображение (Нажмите для увеличения)
Строитель
Отправлено: 02 Апреля, 2017 - 23:17:00
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014
Откуда: Украина
Помог: 73 раз(а)
DraMS пишет: Нужно чтоб и неотмеченные выводились, но вычеркнутыми.
Вроде бы так
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
// Изменённый массив для теста
$field [ 'options' ] = array ( 'label' => 'Балкон' ,
'value' => 'Балкон'
) ,
'label' => 'Посудомоечная машина' ,
'value' => 'Посудомоечная машина'
) ,
'label' => 'Холодильник' ,
'value' => 'Холодильник'
) ,
'label' => 'Стиральная машина' ,
'value' => 'Стиральная машина'
) ,
'label' => 'Телевизор' ,
'value' => 'Телевизор'
) ,
'label' => 'Кондиционер' ,
'value' => 'Кондиционер'
)
) ;
// Это временная строка для теста
$meta = [ 'label' => 'Стиральная машина' ] ;
foreach ( $field [ 'options' ] as $option ) {
if ( $meta && in_array ( $option [ 'value' ] , $meta ) ) { echo $option [ 'value' ] . '<br />' ;
} else {
echo '<s>' . $option [ 'value' ] . '</s><br />' ;
}
}
Тут будет стиральная машина выведена как обычно, а все остальные элементы будут зачёркнуты. В вашем коде не забудьте удалить временные строки (я их написал для демонстрации)
DraMS
Отправлено: 03 Апреля, 2017 - 11:52:04
Новичок
Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2017
Помог: 0 раз(а)
Спасибо за ответ.
Вставил код.
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?PHP $mass = get_post_meta( $post -> ID , 'udobstva_group' , true ) ;
echo '<ul >' ;
foreach ( $mass as $value ) {
if ( $mass && in_array ( $value [ 'value' ] , $mass ) ) { echo $value [ 'value' ] . '<br />' ;
} else {
echo '<s>' . $value [ 'value' ] . '</s><br />' ;
}
}
echo '</ul>' ;
?>
Получил вот это.
В чем моя ошибка?Прикреплено изображение
DraMS
Отправлено: 03 Апреля, 2017 - 17:50:15
Новичок
Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2017
Помог: 0 раз(а)
Спасибо за ответ Строитель.
Весь код.
Спойлер (Отобразить )
PHP:
скопировать код в буфер обмена
$testimonials_meta_fields = array ( 'label' => 'Адрес объекта' ,
'desc' => '' ,
'id' => 'adress' , // даем идентификатор.
'type' => 'text' // Указываем тип поля.
) ,
'label' => 'Тип объекта' ,
'desc' => 'Выберите тип объекта' ,
'id' => 'flatetype' ,
'type' => 'select' ,
'options' => array ( // Параметры, всплывающие данные 'label' => 'Квартира' , // Название поля
'value' => '1' // Значение
) ,
'label' => 'Комната' , // Название поля
'value' => '2' // Значение
) ,
'label' => 'Дом' , // Название поля
'value' => '3' // Значение
)
)
) ,
'label' => 'Количество комнат' ,
'desc' => 'Выберите количество комнат' ,
'id' => 'roomsnumber' ,
'type' => 'select' ,
'options' => array ( // Параметры, всплывающие данные 'label' => '1 комната' , // Название поля
'value' => '1' // Значение
) ,
'label' => '2 комнаты' , // Название поля
'value' => '2' // Значение
) ,
'label' => '3 комнаты' , // Название поля
'value' => '3' // Значение
) ,
'label' => '4+ комнаты' , // Название поля
'value' => '4' // Значение
)
)
) ,
'label' => 'Площадь, м2' ,
'desc' => '' ,
'id' => 'ploshad' , // даем идентификатор.
'type' => 'text' // Указываем тип поля.
) ,
'label' => 'Цена в месяц, руб' ,
'desc' => '' ,
'id' => 'price' , // даем идентификатор.
'type' => 'text' // Указываем тип поля.
) ,
'label' => 'Этаж' ,
'desc' => '' ,
'id' => 'etage' , // даем идентификатор.
'type' => 'text' // Указываем тип поля.
) ,
'label' => 'Удобства' ,
'desc' => 'Выберите удобства объекта' ,
'id' => $prefix . 'udobstva_group' ,
'type' => 'udobstva_group' ,
'label' => 'Балкон' ,
'value' => 'Балкон'
) ,
'label' => 'Посудомоечная машина' ,
'value' => 'Посудомоечная машина'
) ,
'label' => 'Холодильник' ,
'value' => 'Холодильник'
) ,
'label' => 'Стиральная машина' ,
'value' => 'Стиральная машина'
) ,
'label' => 'Телевизор' ,
'value' => 'Телевизор'
) ,
'label' => 'Кондиционер' ,
'value' => 'Кондиционер'
)
)
) ,
'label' => 'Особенности' ,
'desc' => 'Выберите особенности объекта' ,
'id' => $prefix . 'osobennosti_group' ,
'type' => 'osobennosti_group' ,
'label' => 'Можно курить' ,
'value' => 'Можно курить'
) ,
'label' => 'Подходит для мероприятий' ,
'value' => 'Подходит для мероприятий'
) ,
'label' => 'Можно с животными' ,
'value' => 'Можно с животными'
) ,
'label' => 'Подходит для семьи с детьми' ,
'value' => 'Подходит для семьи с детьми'
)
)
) ,
'label' => 'Галерея' ,
'desc' => 'Загрузите нужные изображения' ,
'id' => 'multiupload' ,
'type' => 'multiupload'
)
) ;
Весь код вывода на сайт
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<div class="title-block">
<div class="title">
<h1 itemprop="name"><?PHP the_title( ) ; ?> , <?PHP
$page_id = get_the_ID( ) ;
$meta = get_post_meta( $page_id , 'ploshad' , true ) ;
echo $meta ;
?> мІ</h1></div>
<div class="address-line"><?PHP
$page_id = get_the_ID( ) ;
$meta = get_post_meta( $page_id , 'adress' , true ) ;
echo $meta ;
?> </div>
</div>
<div class="contant">
<div class="single_flat">
<div>
<?PHP
$field = get_post_meta( get_the_ID( ) , 'multiupload' , true ) ;
$image = $field [ 0] ;
// get first image in the gallery [1] for second, [2] for third, and so on.
if ( $image ) {
echo "<a data-fancybox=\" image\" href='" . $image . "' class=\" bimgs img-reponsive\" ><img src='" . $image . "'/></a><br><br>" ;
}
foreach ( $field as $imgurl ) {
if ( $imgurl != 'none' ) {
echo "<a data-fancybox=\" image\" href='" . $imgurl . "'><img class=\" mimgs\" src='" . $imgurl . "' height=\" 100px\" /></a>" ;
}
}
?>
<div class="cardimg">
</div>
<div class="single_txt">Описание</div>
<?PHP if ( have_posts( ) ) while ( have_posts( ) ) : the_post( ) ; // старт цикла ?>
<?PHP the_content( ) ; // контент ?>
</ div>
< div class = "udobstva" >
< div class = "single_txt" > Удобства</ div>
<?PHP $mass = get_post_meta( $post -> ID , 'udobstva_group' , true ) ;
echo '<ul >' ;
foreach ( $mass as $value ) {
echo '<li value="' . $value . '">' . $value . '</li>' ;
}
echo '</ul>' ;
?>
</div>
<?PHP $mass = get_post_meta( $post -> ID , 'udobstva_group' , true ) ;
echo '<ul >' ;
foreach ( $mass as $value ) {
if ( $mass && in_array ( $value [ 'value' ] , $mass ) ) { echo $value [ 'value' ] . '<br />' ;
} else {
echo '<s>' . $value [ 'value' ] . '</s><br />' ;
}
}
echo '</ul>' ;
?>
<?PHP
$mass = $testimonials_meta_fields ;
echo "<pre>" ;
?>
</div>
<div class="osobennosti">
<div class="single_txt">Особенности</div>
<?PHP $mass = get_post_meta( $post -> ID , 'osobennosti_group' , true ) ;
echo '<ul>' ;
foreach ( $mass as $value ) {
echo '<li value="' . $value . '">' . $value . '</li>' ;
}
echo '</ul>' ;
?>
</div>
<div class="contact_form"><div class="contact_title">Понравилась квартира?</div><div><a >Снять квартиру</a></div></div>
</div>
<div class="column_right">
<div class="single_params">
<div class="price">
<div class="paramoption"><span>
<?PHP
$page_id = get_the_ID( ) ;
$meta = get_post_meta( $page_id , 'price' , true ) ;
echo $res ;
?> <span class="rub"> руб. </span><i>/ месяц</i></span></div>
</div>
<div><span class="paramoption">Комнат</span>
<div class="paramoption righttxt" >
<?PHP
$page_id = get_the_ID( ) ;
$meta = get_post_meta( $page_id , 'roomsnumber' , true ) ;
echo $meta ;
?> </div></div>
<div > <span class="paramoption">Площадь, м<sup>2</sup></span>
<div class="paramoption righttxt" >
<?PHP
$page_id = get_the_ID( ) ;
$meta = get_post_meta( $page_id , 'ploshad' , true ) ;
echo $meta ;
?> </div></div>
<div> <span class="paramoption">Этаж</span>
<div class="paramoption righttxt" >
<?PHP
$page_id = get_the_ID( ) ;
$meta = get_post_meta( $page_id , 'etage' , true ) ;
echo $meta ;
?>
</div></div>
Распечатка массива $testimonials_meta_fields
Спойлер (Отобразить ) Array
(
[0] => Array
(
[label] => Адрес объекта
[desc] =>
[id] => adress
[type] => text
)
[1] => Array
(
[label] => Тип объекта
[desc] => Выберите тип объекта
[id] => flatetype
[type] => select
[options] => Array
(
[one] => Array
(
[label] => Квартира
[value] => 1
)
[two] => Array
(
[label] => Комната
[value] => 2
)
[three] => Array
(
[label] => Дом
[value] => 3
)
)
)
[2] => Array
(
[label] => Количество комнат
[desc] => Выберите количество комнат
[id] => roomsnumber
[type] => select
[options] => Array
(
[one] => Array
(
[label] => 1 комната
[value] => 1
)
[two] => Array
(
[label] => 2 комнаты
[value] => 2
)
[three] => Array
(
[label] => 3 комнаты
[value] => 3
)
[four] => Array
(
[label] => 4+ комнаты
[value] => 4
)
)
)
[3] => Array
(
[label] => Площадь, м2
[desc] =>
[id] => ploshad
[type] => text
)
[4] => Array
(
[label] => Цена в месяц, руб
[desc] =>
[id] => price
[type] => text
)
[5] => Array
(
[label] => Этаж
[desc] =>
[id] => etage
[type] => text
)
[6] => Array
(
[label] => Удобства
[desc] => Выберите удобства объекта
[id] => udobstva_group
[type] => udobstva_group
[options] => Array
(
[one] => Array
(
[label] => Балкон
[value] => Балкон
)
[two] => Array
(
[label] => Посудомоечная машина
[value] => Посудомоечная машина
)
[three] => Array
(
[label] => Холодильник
[value] => Холодильник
)
[four] => Array
(
[label] => Стиральная машина
[value] => Стиральная машина
)
[five] => Array
(
[label] => Телевизор
[value] => Телевизор
)
[six] => Array
(
[label] => Кондиционер
[value] => Кондиционер
)
)
)
[7] => Array
(
[label] => Особенности
[desc] => Выберите особенности объекта
[id] => osobennosti_group
[type] => osobennosti_group
[options] => Array
(
[one] => Array
(
[label] => Можно курить
[value] => Можно курить
)
[two] => Array
(
[label] => Подходит для мероприятий
[value] => Подходит для мероприятий
)
[three] => Array
(
[label] => Можно с животными
[value] => Можно с животными
)
[four] => Array
(
[label] => Подходит для семьи с детьми
[value] => Подходит для семьи с детьми
)
)
)
[8] => Array
(
[label] => Галерея
[desc] => Загрузите нужные изображения
[id] => multiupload
[type] => multiupload
)
)
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB