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

Форум PHP

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

 

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

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

тема: Динамическая таблица
 
 автор: denandi   (29.08.2010 в 19:18)   письмо автору
 
 

Всем привет!
возникла задача вывести все фото из DB по три в ряд - следующий ряд это описания.
по принципу:
table width="100%" border="1" cellspacing="10" cellpadding="3" align="center">
      <tr>
        <td><img src="#" width="200" height="120" /></td>
        <td><img src="#" width="185" height="150" /></td>
        <td><img src="#" width="123" height="150" /></td>
      </tr>
      <tr>
        <td>описание1</td>
        <td>описание2</td>
        <td>описание3</td>
      </tr>
.......и.т.д.

=========================================
Фото то выводится, а прикрутить нижний ряд.. никак!

  <?php
..... 
$numcols 3;
$counter 0;
echo 
'<table width="100%" border="1" cellspacing="10" cellpadding="5" align="center">';     
while (
$rowM mysql_fetch_assoc($queryM)){
if (
$counter == 0) {echo '<tr>';}
if (
$counter == $numcols){echo "</tr>"$counter =0; }
echo 
"<td>".$rowM['linkm']."</td>";
 
$counter++;

echo 
"</table>";  
}
?>


Если есть знания или мысли как можно сделать, буду рад помощи..
Заранее благодарен.

  Ответить  
 
 автор: nikita2206   (29.08.2010 в 22:46)   письмо автору
 
   для: denandi   (29.08.2010 в 19:18)
 

Сначало вот - почитай http://ru.wikipedia.org/wiki/Стандарт_кодирования.

<?php

$numcols 
3;
$counter 0;
echo 
'<table width="100%" border="1" cellspacing="10" cellpadding="5" align="center">';

$descRows = array();

while (
$rowM mysql_fetch_assoc($queryM)) {
    
$descRows[] = $rowM['поле, в котором содержится описание'];

    if (
$counter == 0) {
        echo 
'<tr>';
    }
    if (
$counter == $numcols) {
        echo 
'</tr>';
        echo 
'<tr>';
        foreach(
$descRows as $descRow) echo '<td>'.$descRow.'</td>';
        echo 
'</tr>';
        
$descRow = array();
        
$counter 0;
    }
    echo 
"<td>" $rowM['linkm'] . "</td>";
    
$counter++;
}
echo 
"</table>";

  Ответить  
 
 автор: Denandi   (30.08.2010 в 08:28)   письмо автору
 
   для: nikita2206   (29.08.2010 в 22:46)
 

>Сначало вот - почитай http://ru.wikipedia.org/wiki/Стандарт_кодирования.
- Без паники, все 'вытянул' специально.. экономия места.. :)
про помощь, спасибо. немного не доработано (описание не делится по три в строку), позже будем смотреть.

  Ответить  
 
 автор: Denandi   (31.08.2010 в 06:38)   письмо автору
 
   для: nikita2206   (29.08.2010 в 22:46)
 

Не, данный вариант не подходит.
Описание выводится - ВСЕ.
А по условию задачи надо что бы она нарезалась, 
так же как и строка "$rowM['linkm']" -по три штуки в ряд.


Перепробовал по разному, но сложить эти две строки по 3 в ряд - никак .
Народ, нужна ваша помощь! :)

  Ответить  
 
 автор: Slo_Nik   (31.08.2010 в 10:00)   письмо автору
 
   для: Denandi   (31.08.2010 в 06:38)
 

можно сделать по принципу вложенных таблиц
примерно так

<?php 
echo "<table>";
/* временная переменная */
$td 0;
  while(){
     if(
$td == 0) echo "<tr>";
        echo 
"<td>
                     <table>
                         <tr>
                            <td>картинка</td>
                         </tr>
                         <tr>
                            <td>описание</td>
                         </tr>
                      </table>
                    </td>"
;
                   
$td++;
                   if(
$td == 3){
                     echo 
"</tr>";
                     
$td 0;
                   }
  }
echo 
"</table>";
?>

что то вроде этого. можно попробовать не использовать вложенную таблицу, но это на Ваше усмотрение

  Ответить  
 
 автор: Denandi   (31.08.2010 в 11:14)   письмо автору
 
   для: Slo_Nik   (31.08.2010 в 10:00)
 

Спасибо за решение. Работает, но получается по принципу:
   echo "<td>" .$rowM['linkm'] . "<div>".$rowM['titlem'];."</div></td>";


вся таблица плывет, все заголовки выше-ниже... что не является визуально симпатичным.

  Ответить  
 
 автор: Slo_Nik   (31.08.2010 в 16:05)   письмо автору
 
   для: Denandi   (31.08.2010 в 11:14)
 

что именно плывёт? тот вариант, что я дал или Ваш с дивами?
А самое главное, выводит информацию так как Вам надо, по три изображения в ряд и под каждым соответствующее описание ?

  Ответить  
 
 автор: Denandi   (31.08.2010 в 21:04)   письмо автору
 
   для: Slo_Nik   (31.08.2010 в 16:05)
 

>что именно плывёт? тот вариант, что я дал или Ваш с дивами?
Ваш вариант рабочий! Но, он такой же по качеству, что и с див.
Поясню, если фото имеют разные размеры, то и заголовок получается выше или ниже. если смотреть на этот синусоид.. то разница очевидна при сравнении с табл. данной в качестве примера , выше.
Но нарезало все четко. Хотя, при таком результате, можно выбрать вариант на дивах
Мне пришлось отказаться от подобного т.з. и перевести в другое более мягкое русло.
По сему, всем спасибо. жаль что решение так и не нашел.

  Ответить  
 
 автор: Slo_Nik   (31.08.2010 в 21:46)   письмо автору
 
   для: Denandi   (31.08.2010 в 21:04)
 

а применить css к оформлению ячеек таблицы или дивов ни как? тоже самое с тексту под фотографией.
Вы просили Вам показать, как можно сделать вывод информации, а по оформлению это уже совсем другой вопрос, да и на совершенно другом форуме.
или Вы думали, что информация сама себя оформит?
скриншот приложите "плывущего" сайта, пожалуйста

  Ответить  
 
 автор: Denandi   (01.09.2010 в 08:30)   письмо автору
 
   для: Slo_Nik   (31.08.2010 в 21:46)
 

:) Slo_Nik, что вас так зацепило? я же сказал, ваше решение рабочее, задачу выполнили. Просто результат получается такой же как и у меня с вложенным дивом.
css не спасло, пробовал.
я не говорю что css не может выровнять.. у меня не получилось.
И вообще я считал что эта задача 100% разрешима естественным путем, просто зависит от уровня знаний. Поэтому и пытался найти решение макс. похожее на табличный вариант. а css это оформление которое впоследствии дополнит сделанное.
Скрин, показать не могу.. так как перевел задачу в другое русло.
В любом случае, спасибо за помощь.

  Ответить  
 
 автор: Slo_Nik   (01.09.2010 в 12:20)   письмо автору
 
   для: Denandi   (01.09.2010 в 08:30)
 

меня ни чего не цепляло, но повозиться с css Вам надо, что бы придать Вашей информации надлежащий вид.
>И вообще я считал что эта задача 100% разрешима естественным путем, просто зависит от уровня знаний
Вот Вам как раз знаний по css не хватило, посмотрите, почитайте и всё получится.

  Ответить  
 
 автор: sim5   (01.09.2010 в 12:24)   письмо автору
 
   для: Denandi   (01.09.2010 в 08:30)
 

Значит вас одна таблица для форматирования вывода не устраивает, вам лучше куча их подходит?

  Ответить  
 
 автор: Denandi   (01.09.2010 в 14:29)   письмо автору
 
   для: sim5   (01.09.2010 в 12:24)
 

>Значит вас одна таблица для форматирования вывода не устраивает, вам лучше куча их подходит?

Устраивает? :))
sim5, именно одна таблица и есть грамотное решение.
Вот, мне очень импонирует ваш вариант. Спасибо за подсказку.
Использовать в эти разы уже не получится, но в шпаргалку занес... :)

  Ответить  
 
 автор: sim5   (01.09.2010 в 14:33)   письмо автору
 
   для: Denandi   (01.09.2010 в 14:29)
 

В предложенном выше не видно, чтобы это была одна таблица, а ниличие множества вложенных таблиц, это первое. А второе, это то, что они по большому счету вообще не нужны, не табличные данные чай выводите, и то, что вас устраивает лишнее на странице весьма печально. Улыбаться нет причины...

  Ответить  
 
 автор: sim5   (01.09.2010 в 05:42)   письмо автору
 
   для: Denandi   (31.08.2010 в 06:38)
 

Вам просто надо задуматься - каждая строка записи, это изображние плюс описание, и если выводить описания в следующей строке таблицы, то значит их надо запоминать и выводить после вывода изображений:
<?
$a 
= array(
  array(
'img'=>'img 1''desc'=>'text 1'),
  array(
'img'=>'img 2''desc'=>'text 2'),
  array(
'img'=>'img 3''desc'=>'text 3'),
  array(
'img'=>'img 4''desc'=>'text 4'),
  array(
'img'=>'img 5''desc'=>'text 5'),
  array(
'img'=>'img 6''desc'=>'text 6'),
  array(
'img'=>'img 7''desc'=>'text 7'),
  array(
'img'=>'img 8''desc'=>'text 8'),
  array(
'img'=>'img 9''desc'=>'text 9')
);

$col 3;
$row '';
?>
<table cellpadding="9" cellspacing="1" bgcolor="#000000">
<?
for($i=0$i<count($a); $i++) {
  if(!(
$i $col)) echo $row '<tr bgcolor="#ffffff">';
  echo 
'<td>' $a[$i]['img'] . '</td>';
  
$row .= '<td>' $a[$i]['desc'] . '</td>';
  if(!((
$i+1) % $col)) echo '</tr>' $row '</tr>';
}
?>
</table>

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

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