Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Не работает вывод из базы

Сообщения:  [1-10]   [11-18] 

 
 автор: confirm   (28.08.2013 в 12:18)   письмо автору
 
   для: Habl   (28.08.2013 в 12:06)
 

Перенесите if ($i && !($i % 3)) echo '<div style="clear:both"></div>'; в самое начало цикла.

<style>
.products {
    list-style: none;
    margin: 0;
    padding: 0;
}
.products li {
    display: inline-block;
    width: 30%; /* по 3 товара в строке*/
    vertical-align: top;
    margin-right: 20px;
    margin-bottom: 50px;
}</style>

<ul class="products">
<?
for($i=0$i<13$i++) echo '<li><h4>Product</h4><img /><p>text text text text text text text text text text text text text</p></li>';
?>
</ul>

И забейте на div. Стоит только изменить ширину li в процентах, и можно выводить в строке сколько влезет в родителя.

  Ответить  
 
 автор: Habl   (28.08.2013 в 12:06)   письмо автору
 
   для: confirm   (28.08.2013 в 12:02)
 

Да стили в css это понятно, у меня почему то первые 4 элементы выводятся в одну строчку, а другие уже по 3

  Ответить  
 
 автор: confirm   (28.08.2013 в 12:02)   письмо автору
 
   для: Habl   (28.08.2013 в 11:58)
 

Пропустил, добавьте.

А что думать, если надо через три вставлять, то я написал как. Могут быть только вариации, но принцип будет тот же. Если форматирование по другому, то лучше <u><li>элементы описывающие товар</li></ul>, и стили перенести в CSS.

  Ответить  
 
 автор: Habl   (28.08.2013 в 11:58)   письмо автору
 
   для: confirm   (28.08.2013 в 11:50)
 

Хорошо буду думать как решить по другому
У Вас ошибочка
<p><a href="/shop/'.$row['hpu_cat'].'/'.$row['id'].'>'.$row['title'].'"</a></p>
двойная кавычка нужна для закрытия ссылки

  Ответить  
 
 автор: confirm   (28.08.2013 в 11:50)   письмо автору
 
   для: Habl   (28.08.2013 в 11:34)
 

$result, это ресурс возвращенный запросом, а $i < $result;, это мягко выражаясь несуразица.

  Ответить  
 
 автор: Habl   (28.08.2013 в 11:34)   письмо автору
 
   для: confirm   (28.08.2013 в 10:01)
 

о ясно, а я думаю что у меня <div style:clerar:both;></div> выводится столько же раз сколько и позиций к выводу, ок теперь увидел свою ошибку, спасибо!

  Ответить  
 
 автор: confirm   (28.08.2013 в 10:01)   письмо автору
 
   для: Habl   (28.08.2013 в 09:41)
 

<?
$i 
0;
while (
$row mysql_fetch_assoc($result)) { 
    echo 
'<div style="float:left;padding:30px"> 
            <p><img alt="'
.$row['title'].'" title="'.$row['title'].'" src="'.$row['img'].'"/></p> 
            <p><a href="/shop/'
.$row['hpu_cat'].'/'.$row['id'].'>'.$row['title'].'</a></p> 
            <p>'
.$row['settings'].'</p> 
            <p>'
.$row['price'].' руб. за 1 метр</p> 
        </div>'

    if (
$i && !($i 3)) echo '<div style="clear:both"></div>';
    
$i++;   
}

То что в одинарных кавычках, это строка:
<?
$a 
12;
echo 
'string 1 $a'//выведет как есть

То что в двойных кавычках подлежит обработке:
<?
$a 
12;
echo 
"string 2 $a"//выведет string 2 12

Поэтому не "<div style='clear..., а '<div style="clear..., так как нет в этой строке ничего, на что бы нужно было обратить внимание интерпретатора, нет в ней данных для него.

printf выводит отформатированную строку согласно параметрам sprintf. Нечего в данном случае форматировать, и использовать эту функцию здесь, ну ради что нагрузить интерпретатор лишней работой, более ничего.

PS. Кстати, div float:left и прицепом к нему '<div style="clear:both"></div>', это не единственный и далеко не лучший способ вывода товаров на страницу, в смысле форматирования страницы.

  Ответить  
 
 автор: Habl   (28.08.2013 в 09:41)   письмо автору
 
   для: confirm   (27.08.2013 в 13:06)
 

Спасибо Вам за совет читать :) Уже начал просматривать мануал php, доступно написано.
Еще один вопрос...
Что я делаю тут не так? Мне нужна что выводилось по три элемента на странице, а далее перенос строки и опять вывод трех элементов


<?php 
while ($row mysql_fetch_assoc($result)) {
    
printf ("
        
        <div style='float:left; padding:30px;'>
        <p><img alt='
$row[title]' title='$row[title]' src='$row[img]'/></p>
            <p><a href='/shop/%s/%s'>
$row[title]</a></p>
            <p>
$row[settings]</p>
            <p>
$row[price] руб за 1 метр</p>
        </div>
        "
$row["hpu_cat"],$row["id"],$row["title"]);
     for (
$i=0$i $result$i++){
      if (
$i == 0) echo "<div style='clear:both;'></div>";  
          }
    }
?>

  Ответить  
 
 автор: psychomc   (27.08.2013 в 15:04)   письмо автору
 
   для: confirm   (27.08.2013 в 13:06)
 

да, плюс ко всему, конкатенация еще и хорошо видна в любом редакторе.

  Ответить  
 
 автор: confirm   (27.08.2013 в 13:06)   письмо автору
 
   для: Jovidon   (27.08.2013 в 12:29)
 

Не знаю с видео уроков ли эта мода или нет, но уж коли так хочется эту функцию прикрутить к выводу массива, то почему тогда не vprintf или vsprintf, если цель упростить. Не понятно вообще чего тут форматировать надо, при выводе незатейливых данных из базы.

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

  Ответить  

Сообщения:  [1-10]   [11-18] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования