Консультация № 67324
17.12.2006, 02:22
0.00 руб.
0 6 3
Здравствуйте!

Помогите дописать скрипт который выводит таблицу так чтоб в каждой строке было по 3 ячейки, а в каждой ячейке картинка($picture) и описание ($description)

файлы и описания которые нужно выводить скрипт берет с файла descript.ion следуещего содержания
111.jpg фото
222.gif картинка
333.bmp файла нет, но описание есть
PICT0001.gif описание фото
PICT0002.gif

пытаюсь вывести таблицу с помощью следующего кода, но ничего не получается

$row = ceil (count($picture)/$num);
echo ("<table border="1">\n");

for ($i = 0; $i < $row; $i++)
{
echo "<tr>";
for ($j = 0; $j < $num; $j++)
{
echo ("<td>".$picture.$description."</td>\n");
}
echo "</tr>\n";
}
echo "</table>";
Спасибо!



Приложение:
$num = 3; $file = "descript.ion";$mime = array("image/bmp", "image/jpeg", "image/gif"); $variant = array("jpg", "gif", "bmp");$files_in_array = file($file); foreach ($files_in_array as $file_in_array) { list($file_name, $desc) = explode(" ", $file_in_array); if(file_exists($file_name)) { $info = pathinfo($file_name); $txt = $info[‘extension‘]; if(in_array($txt, $variant)) { $size = getimagesize($file_name); if(in_array($size[‘mime‘], $mime)) { $picture = "<img src="".$info[‘dirname‘]."/".$info[‘basename‘]."" ".$size[3].">"; $description = "<p>".$desc."</p>"; } } } else { $picture = "<img src="".$file_name."" width="80" height="122" alt="No image">"; $description = "<p>".$desc."</p>"; } }

Обсуждение

Неизвестный
17.12.2006, 03:19
общий
это ответ
Здравствуйте, Валера!
Посмотрите код в приложении.
Появяться вопросы - смело задавайте.

Приложение:
<?$num = 3; $file = "descript.ion";$mime = array("image/bmp", "image/jpeg", "image/gif"); $variant = array("jpg", "gif", "bmp");$files_in_array = file($file);$picture=$description=array(); foreach ($files_in_array as $key=>$value) { //list($file_name, $desc) = explode(" ", $value); $array=explode(" ", $value,2); if(file_exists($array[0])) { $info = pathinfo($array[0]); $txt = $info[‘extension‘]; if(in_array($txt,$variant)) { $size = getimagesize($array[0]); if(in_array($size[‘mime‘], $mime)) { $picture[]= "<img src="".$info[‘dirname‘]."/".$info[‘basename‘]."" ".$size[3].">"; $description[]= "<p>".$array[1]."</p>"; } } } else { $picture[]= "<img src="".$array[0]."" width="80" height="122" alt="No image">"; $description[]= "<p>".(isset($array[1])?$array[1]:null)."</p>"; } } $row = ceil (count($picture)/$num);echo ("<table border="1">\n");$jj=0;for ($i = 0; $i < $row; $i++){echo "<tr>"; $num=$num+$jj; for ($j = $jj; $j < $num; $j++) { echo ("<td>".(isset($picture[$j])?$picture[$j]:‘ ‘).(isset($description[$j])?$description[$j]:‘ ‘)."</td>\n"); $jj++; }echo "</tr>\n";}echo "</table>";
Неизвестный
17.12.2006, 03:23
общий
это ответ
Здравствуйте, Валера!
Не очень вдавался в подробности получения информации о картинке и чтении файла.
Будем надеяться, что там всё правильно :)
Единственное что там добавил: "[]" - а то у Вас в одной части программы переменные $picture и $description строки, а в другой - рассматриваются как массив.
Доработал вывод таблицы (алгоритм можно построить и по другому + привожу свой вариант, не проверял).
Код в приложении.
Удачи!
P.S. Чтобы избежать обратного слеша используйте ещё один тип кавычек: ординарный.

Приложение:
<?php$num = 3; $file = "descript.ion";$mime = array("image/bmp", "image/jpeg", "image/gif"); $variant = array("jpg", "gif", "bmp");$files_in_array = file($file);$picture = array();$description = array(); foreach ($files_in_array as $file_in_array) { list($file_name, $desc) = explode(" ", $file_in_array); if (file_exists($file_name)) { $info = pathinfo($file_name); $txt = $info[‘extension‘]; if (in_array($txt, $variant)) { $size = getimagesize($file_name); if (in_array($size[‘mime‘], $mime)) { $picture[] = ‘<img src="‘.$info[‘dirname‘].‘/‘.$info[‘basename‘].‘" ‘.$size[3].‘>‘; $description[] = ‘<p>‘.$desc.‘</p>‘; } } } else { $picture[] = ‘<img src="‘.$file_name.‘" width="80" height="122" alt="No image">‘; $description[] = ‘<p>‘.$desc.‘</p>‘; }}if (count($picture)) { $row = ceil(count($picture)/$num); echo(‘<table style="border: 1px solid #aaa" cellpadding="0" cellspacing="0" border="0" width="100%">‘); $k = 0; for ($i = 0; $i < $row; $i++) { echo(‘<tr>‘); for ($j = 0; $j < $num; $j++) { if (isset($picture[$k])) echo(‘<td width="33%">‘.$picture[$k].$description[$k].‘</td>‘); else echo(‘<td width="33%"> </td>‘); $k++; } echo(‘</tr>‘); } echo(‘</table>‘);}/*if (count($picture)) { echo(‘<table style="border: 1px solid #aaa" cellpadding="0" cellspacing="0" border="0" width="100%"><tr>‘); for ($k = 0; $k < count($picture); $k++) { if (isset$picture)){ echo(‘<td width="33%">‘.$picture[$k].$description[$k].‘</td>‘); if (($k+1)%3 == 0){ echo(‘</tr>‘); if($k != count($picture)) echo(‘<tr>‘); } } else { echo(‘<td width="33%"> </td>‘); } } echo(‘<table>‘);}*/?>
Неизвестный
17.12.2006, 03:31
общий
В примере кода (2-ой вариант вывода таблицы) я допустил ошибку.Вместо:if($k != count($picture)) echo(‘<tr>‘);Нужно:if($k != count($picture) - 1) echo(‘<tr>‘);
Неизвестный
17.12.2006, 16:15
общий
это ответ
Здравствуйте, Валера!
Немного не по теме, но вот альтернативный вариант вывода нужного количества ячеек в строчку:
$i=0; $td_count=3;
foreach ($rows as $row) {
$i++;
if ($i % $td_count==1) echo "<TR>";
echo "<TD><img ...></TD>";
if ($i % $td_count==0) echo "</TR>";
}
Неизвестный
18.12.2006, 23:44
общий
Спасибо всем за ответы, взял много полезного для себя.Всем по 5 балов (к сожалению условных)PS: Как выставить оценки? Закачал почту Thunderbird‘ом и нече не могу поделать
Неизвестный
19.12.2006, 15:42
общий
Сохраните письмо как HTML-файл и открыв браузером ставьте оценки.
Форма ответа