2013-08-26 3 views
1

на моем сайте я есть FAQ страницу, пользователи могут добавлять вопросы и изображенияКак я могу динамически изменять php по ширине html div?

<div class="FAQ container"> 
<div class="content">text text text</div> 
<div class="pic"><img></div> 
</div> 

если пользователь добавляет только текст на вопрос, то Div .class должна быть ширина 100%, если пользователь добавляет текст и IMG 2 div должны быть 50% каждый, рядом друг с другом, Как я могу это сделать?

+0

Это можно сделать разными способами. Для одного нет необходимости печатать div (альбом), если нет изображений. – JimL

+0

Вы упомянули решение самостоятельно 'if .... elseif ...' Поэтому я не вижу, где проблема? – HamZa

+0

Скорее всего, это лучше сделать в JS, а не в PHP. В php вы можете делать только жестко закодированный стиль, который является уродливым, как ад, и мешает использованию класса. Поэтому вместо этого создайте JS-процедуру, чтобы проверить, есть ли какие-либо изображения, присутствующие прямо при загрузке страницы, и при необходимости изменяет размеры разделов. – arkascha

ответ

0

Я предполагаю, что вы используете базу данных, такую ​​как MySQL. Я также собираюсь предположить, что ваш запрос к базе данных возвращает следующие поля вопрос, Ответ и _image_path_.

PHP

$faq_html = '<div class="faq %s"><div class="content">Q: %s<br>A: %s</div>%s</div>'; 
while ($row = $result->fetch_object()) : 
     $container_class = 'no-image'; 
     $faq_img_html = ''; 
     if (! empty($row->image_path)) : 
      $container_class = 'has-image'; 
      $faq_img_html = sprintf('<div class="pic"><img src="%s" /></div>', $row->image_path); 
     endif; 
     $faqs .= sprintf($faq_html, $container_class, $row->question, $row->answer, $faq_img_html); 
endwhile; 

echo '<div class="faqs-container">' . $faqs . '</div>'; 

Выходной сигнал будет либо иметь класс .no-image или .has-image на DIV обертка для каждого отдельного FAQ.

HTML

<div class="faq no-image"> 
     <div class="content"> 
      Q: text text text? <br> 
      A: text text text 
     </div> 
</div> 

<div class="faq has-image"> 
     <div class="content"> 
      Q: text text text? <br> 
      A: text text text 
     </div> 
     <div class="pic"><img src="your-img.jpg" /></div> 
</div> 

После того, как вы есть, что просто посыпать немного CSS.

.no-image .content { width: 100%; } 
.has-image .content, 
.has-image .pic { width: 50%; } 
+0

\ спасибо за вашу помощь \ но я получаю сообщение об ошибке «Вызов функции-члена fetch() для не-объекта» –

+0

В моем примере используются PHPs 'MySQLi'. Ваша реализация может отличаться. Этот метод является 'fetch_object()'. – hungerstar

+0

Я работаю над css/html этого проекта, я знаю меньше о php, так что вот php-код, который, как мне кажется, связан с проблемой div-dynamically width, поэтому, если в ответном файле нет изображения ---> чем ширина = 100 ДИВ% - если есть изображение, чем ---> ширина = сОн 50/50 –

0

Если я правильно понял, текст-Div всегда заполнен и изображение-Div только иногда, правильно? В этой ситуации я хотел бы предложить, что вы попробуете это CSS (непроверенные):

.pic{ 
max-width: 50%; 
float: right; 
} 

.FAQcontainer{ /* you can not have space in class names */ 
    clear: both; 
} 

Таким образом, изображение-Div будет отображаться на правой стороне. Если он не содержит изображения, то он будет очень маленьким. Если он кодирует изображение, он не будет более чем на 50% из FAQcontainer-Div.

Обратите внимание, что некоторые старые браузеры не понимают «max-width». И если изображение будет шире, чем 50%, это займет место и «разрушит» макет.

Более надежным решением было бы генерировать эти DIVs динамически с помощью сценария на стороне сервера, который при необходимости распечатывает Image-Div. Сценарий также может заботиться о разных размерах изображений.

0

Есть много способов сделать это - с PHP или JavaScript:

PHP

Вы можете применять различные классы в зависимости от того, что их это изображение или нет, а затем стиль их по-разному. Если каждый набор ответов/изображений хранится в виде массива, вы можете проверить, применяется ли изображение, а затем эхо-класс, если изображение не пустое.

JavaScript

Это будет метод, который я был бы склонен к использованию. С помощью JavaScript проверьте, соответствует ли изображение, а затем соответствующим образом изменяйте стили. Тем не менее, убедитесь, что существует соответствующий CSS-отступ только для браузеров с отключенным JS (например, есть изображение выше текста для этих пользователей).

+0

'их' должно быть' там' – hungerstar

Смежные вопросы