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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: вывод информации в три области из базы данных
 
 автор: Slo_Nik   (25.05.2009 в 19:39)   письмо автору
80 Кб
 
 

Помогите, пожалуйста, решить проблему.
есть часть страницы, написаной на html, мне надо переделать всё в php, но я не могу сообразить как.
прилагаю картинки и часть кода.
на картинке блок, состоящий из 3-х прямоугольных областей, таких блоков в конечном счёте должно быть три, расположеных по вертикали.
в каждой из областей должна быть информация, список катерорий, в общей сложности 9-ть.
основная проблема в том, что как совместить вывод из БД с самим оформлением.

  Ответить  
 
 автор: VITtek   (25.05.2009 в 19:59)   письмо автору
 
   для: Slo_Nik   (25.05.2009 в 19:39)
 

какие данные в бд? в каком виде??

  Ответить  
 
 автор: Slo_Nik   (25.05.2009 в 20:34)   письмо автору
 
   для: VITtek   (25.05.2009 в 19:59)
 

в БД категории в одной таблице, а во второй подкатегории.

  Ответить  
 
 автор: Slo_Nik   (26.05.2009 в 10:35)   письмо автору
 
   для: Slo_Nik   (25.05.2009 в 20:34)
 

так и ни кто не может подсказать?

  Ответить  
 
 автор: VITtek   (26.05.2009 в 10:58)   письмо автору
 
   для: Slo_Nik   (26.05.2009 в 10:35)
 

Надо структуру БД смотреть. Напиши строки.

  Ответить  
 
 автор: Slo_Nik   (26.05.2009 в 11:58)   письмо автору
 
   для: VITtek   (26.05.2009 в 10:58)
 

это подкатегории
CREATE TABLE cat_all(id_cat_all INT(3) NOT NULL AUTO_INCREMENT,
                     name_cat_all TINYTEXT,
                     id_cat INT(3) NOT NULL DEFAULT '0',
                     PRIMARY KEY (id_cat_all),
                     KEY (id_cat)
                     )ENGINE=MyISAM DEFAULT CHARSET=utf8;

это категории
CREATE TABLE cat(id_cat INT(3) NOT NULL AUTO_INCREMENT,
                 name_cat TINYTEXT,
                 PRIMARY KEY (id_cat)
                 )ENGINE=MyISAM DEFAULT CHARSET=utf8;


да проблема в основном не в выводе из базы, а в том как связать php с вёрсткой, вёрстка на div

  Ответить  
 
 автор: VITtek   (26.05.2009 в 12:56)   письмо автору
 
   для: Slo_Nik   (26.05.2009 в 11:58)
 


<?php 
$tablis 
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Документ без названия</title>
</head>
<body>


<!--  это оформление самого блока -->
<div class=\'boxes\'>
     <div class=\'boxes-bg\'>
        <div class=\'boxes-info\'>
        
 </div>
  </div>
    </div>    
    
 <!--вот так это всё вместе выглядит-->
<div class="boxes">
    <div class="boxes-bg">
        <div class="boxes-info">
'
;

//первая таблица
$result=mysql_query("SELECT * FROM cat_all");
while (
$myrow=mysql_fetch_array($result)) $mass[] = $myrow;

//начинвем перебор данных-1 ... это нужно если блока три: and $id_i<4
for ($id_i=0; isset($mass[$id_i][id_cat_all]) and $id_i<4$id_i++)
{
    
$tablis .= '<div class="box">
                <div class="photo">
                    <div>
                        <img src="images/img01.jpg" width="124" height="65" alt="" />
                    </div>
                </div>
                <h3>'
.$mass[$id_i][name_cat_all].'</h3>
                <ul>'
;
    
//вторя таблица
    
$result_1=mysql_query("SELECT * FROM cat WHERE id_cat='$mass[$id_i][id_cat]'");
    while (
$myrow_1=mysql_fetch_array($result_1)) $mass_1[] = $myrow_1;
    
//начинaем перебор данных-2
    
for ($id_i_1=0; isset($mass_1[$id_i_1][id_cat]); $id_i_1++) $tablis .= '<li><a href="#">'.$mass_1[$id_i_1][name_cat].'</a></li>';
    
$tablis .='</ul></div>';
}

$tablis .='</div>
    </div>
  </div>
<!--таких блоков должно быть три.
    -->                              


</body>
</html>'
;
print_r ($tablis);
?>


Я бы Связал через id_cat, но он не должен быть AUTO_INCREMENT, а например
--таблица-1--
Одежда для мальчиков: id_cat_all=1
Товары для прогулок: id_cat_all=2

--Таблица-2--
от 6 мес. до 1 года: id_cat=1
от 1 до 3 лет: id_cat=1
от 3 до 5 лет: id_cat=1

Коляски: id_cat=2
Автокресла: id_cat=2
Кенгурушки, слинги: id_cat=2

  Ответить  
 
 автор: Slo_Nik   (26.05.2009 в 14:33)   письмо автору
189.8 Кб
 
   для: VITtek   (26.05.2009 в 12:56)
 

попробовал, что то ни фига не получилось.
правда переделал немного запросы. в таблице с категориями (cat) id_cat auto_increment, а в таблице подкатегорий(cat_all) просто key, для связи с cat.
в первой $tablis убрал всё, кроме
<div class="boxes"> 
    <div class="boxes-bg"> 
        <div class="boxes-info">

в низу в $tablis убрал, естественно,
<body> и <html>

прилагаю две картинки, как должно быть и что получилось

  Ответить  
 
 автор: Лена   (26.05.2009 в 15:48)   письмо автору
 
   для: Slo_Nik   (26.05.2009 в 14:33)
 

Беру только кусок, который нужно выводить через цикл:

<div class="box one">
                <div class="photo">
                    <div>
                        <img src="images/img01.jpg" width="124" height="65" alt="" />
                    </div>
                </div>
                <h3>Одежда для мальчиков</h3>
                <ul>
                    <li><a href="#">от 6 мес. до 1 года</a></li>
                    <li><a href="#">от 1 до 3 лет</a></li>
                    <li><a href="#">от 3 до 5 лет</a></li>
                    <li><a href="#">от 5 до 12 лет</a></li>
                    <li><a href="#">Обувь</a></li>
                </ul>
            </div>

Я бы сделала одним запросом к базе:

<?php
$sql
='SELECT main.name_cat AS m,sub.name_cat_all AS s, sub.id_cat_all AS id
      FROM cat AS main
      LEFT JOIN cat_all AS sub 
      ON main.id_cat = sub.id_cat
      '
;
$res mysql_query($sql); 
if(!
$res) exit("Error in $sql: "mysql_error());
while(
$title mysql_fetch_assoc($res)) { 
  echo 
'<div class="box one">
                <div class="photo">
                    <div>
                        <img src="images/img01.jpg" width="124" height="65" alt="" />
                    </div>
                </div>
                <h3>'
.  htmlspecialchars($title['m']) .'</h3>
                <ul>
                    <li><a href="' 
$title['id'] . '">' .  htmlspecialchars($title['s']) . '</a></li>
                </ul>
          </div>'
;
}
?>


Писала быстро, может, с ошибками.

  Ответить  
 
 автор: Slo_Nik   (26.05.2009 в 15:55)   письмо автору
 
   для: Лена   (26.05.2009 в 15:48)
 

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

  Ответить  
 
 автор: Лена   (26.05.2009 в 16:07)   письмо автору
 
   для: Slo_Nik   (26.05.2009 в 15:55)
 

А если вынести <div class="box one"> за пределы цикла?
Для полной картины прикрепите ваши таблицы стилей.

  Ответить  
 
 автор: Slo_Nik   (26.05.2009 в 16:21)   письмо автору
 
   для: Лена   (26.05.2009 в 16:07)
 

"box one" содержит только один параметр, который предназначен для оформления содержимого первой обрасти в блоке
сам блок формируется
<div class="boxes"> 
            <div class="boxes-bg"> 
             <div class="boxes-info">

  Ответить  
 
 автор: Лена   (26.05.2009 в 21:34)   письмо автору
 
   для: Slo_Nik   (26.05.2009 в 16:21)
 

Как я поняла, первая область у вас оформляется с <div class="box one"> , вторая и третья - с <div class="box">, значит, можно поставить условие внутри цикла:

<?php
for($j=0;$title mysql_fetch_assoc($res);) {  
  if(
$j=0){
    echo 
'<div class="box one">';
  }else{
     echo 
'<div class="box">';
  }
           echo  
'<div class="photo"> 
                    <div> 
                        <img src="images/img01.jpg" width="124" height="65" alt="" /> 
                    </div> 
                </div> 
                <h3>'
.  htmlspecialchars($title['m']) .'</h3> 
                <ul> 
                    <li><a href="' 
$title['id'] . '">' .  htmlspecialchars($title['s']) . '</a></li> 
                </ul> 
          </div>'


?>

  Ответить  
 
 автор: Slo_Nik   (26.05.2009 в 21:53)   письмо автору
 
   для: Лена   (26.05.2009 в 21:34)
 

нет,Вы не правильно поняли.
если ВЫ смотрели картинки, которые я прикрепил к сообщению, то там видно три прямоугольные области, расположенные по горизонтали, рамки оранжевого цвета, так вот, они формируются
<div class="boxes">  
            <div class="boxes-bg">  
             <div class="boxes-info">

содержимое оформляется
<div class="box one">// левая
           <div class="box">// средняя и правая 

теперь надо как то вывести сам блок(три рамки) и когда он заполнится вывести второй и третий.
должно быть три блока по три категории в каждом

  Ответить  
 
 автор: Лена   (26.05.2009 в 22:56)   письмо автору
 
   для: Slo_Nik   (26.05.2009 в 21:53)
 

Тут, по-моему, не только я ничего не поняла.
Прикрепите, пожалуйста, ваши css-файлы, где вы определяете классы стилей boxes, box one и т.д. Так будет понятней и можно будет проверить у себя, что получается и что должно получиться.

  Ответить  
 
 автор: Slo_Nik   (26.05.2009 в 23:44)   письмо автору
2.7 Кб
 
   для: Лена   (26.05.2009 в 22:56)
 

вроде всё собрал в кучу

  Ответить  
 
 автор: slo_nik   (27.05.2009 в 05:36)   письмо автору
 
   для: Slo_Nik   (26.05.2009 в 23:44)
 

Вопрос к модераторам форума
это написано мной в предыдущем сообщении
да проблема в основном не в выводе из базы, а в том как связать php с вёрсткой, вёрстка на div
потом с Лена обсуждение пошло далеко не о выводе с БД и запросах, а как раз о циклах и совмещении php кода с html вёрсткой.
Объясните, пожалуйста, смысл переноса темы и изменения названия???

  Ответить  
Rambler's Top100
вверх

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