|
|
|
| Уважаемые специалисты.. Не спец в пхп , пмогите пожалуйста с кодом..
Мне необходим вывод в таблицу (скриншот ниже, в строку там где ошибки), чтобы под каждой фото был заголовок фото.
http://screenshot.su/show.php?img=4cf7b6e408f785a9551f3162ea6e29d9.jpg
Путем научного тыка я нашел файл где все это формируется и таблицу мускуль.
Мне необходимо чтобы в эти ячейки с ошибками выводилось это поле
http://screenshot.su/show.php?img=05d857818754598ef25f539d82a189a6.jpg
Вот код, тот который закоментирован добавил я сам, но естессно он не работает
<table border="0" cellpadding="0" cellspacing="0" style="margin-left:-8px;">
<tr>
<?
$i = 0;
$all = $DB->getAll("select * from mp_gallery where path_id='".getPathID()."' order by `order`");
foreach($all as $im)
{
$i++;
$img = unserialize($im['image_min']);
$img_size = getimagesize($_SERVER['DOCUMENT_ROOT'].$img[1]);
$img_big = unserialize($im['image']);
$img_size_big = getimagesize($_SERVER['DOCUMENT_ROOT'].$img_big[0]);
?>
<td align="center"><a href="#" onClick="pup('/view/<?=$im['id']?>/',<?=$img_size_big[0]?>,<?=$img_size_big[1]?>); return false;"><img src="<?=$img[1]?>" alt="" width="<?=$img_size[0]?>" height="<?=$img_size[1]?>" style="border: 1px solid #cacaca; padding:1px;"></a></td>
<?
echo ($i != count($all)) ? '<td style="width:44px;"></td>' : '';
}
?>
</tr>
<tr>
<!-- <?
$i = 0;
$all = $DB->getAll("select * from mp_gallery where path_id='".getPathID()."' order by `order`");
foreach($all as $im)
{
$i++;
$img = unserialize($im['image_min']);
$img_size = getimagesize($_SERVER['DOCUMENT_ROOT'].$img[1]);
$img_big = unserialize($im['image']);
$img_size_big = getimagesize($_SERVER['DOCUMENT_ROOT'].$img_big[0]);
?>
<td align="center">3
<? echo '<td>' . $data['title_page'] . '</td>';?>
</td>
<?
echo ($i != count($all)) ? '<td style="width:44px;"></td>' : '';
}
?>
</tr>
-->
</table>
|
подскажите правильный код господа.
а вот и сайт http://www.nvx.ru/ | |
|
|
|
|
|
|
|
для: RobotWerder
(07.09.2014 в 17:51)
| | $img = unserialize($im['image_min']);
$img_big = unserialize($im['image']);
Стоит ли? Вроде бы база кроме строк может еще кое-что хранить. | |
|
|
|
|
|
|
|
для: confirm
(08.09.2014 в 13:29)
| | ога, можно хранить бинарники :)
надо срочно переписывать админку, чтобы вместо путей к файлам хранился их код. тогда будет намного круче. не надо будет картинку считывать с диска, например :) | |
|
|
|
|
|
|
|
для: confirm
(08.09.2014 в 13:29)
| | Шутки шутками, но прошу помочь .. Хотя бы пример аналогичный бросьте плиз.. попробую разобраться..
Правильно будет сказать, меня интересует вывод значений столбика title_page соответствующих изображениям в этой записи .. вывести названия нужно под фотографиями продукции, как я схематично (криво) попытался изобразить.
Я просто продублировалту часть кода что закомментирована..и получил вторую строку таблицы, что конечно же неверно..
Понимаю что меня интересует вывод в ячейку td
Что то вроде этого ..
<td align="center">
<? echo '<td>' . $data['title_page'] . '</td>';?>
</td>
|
Но состряпать это самостоятельно трудоновато вследствие отсутствия практики | |
|
|
|
|
|
|
|
для: RobotWerder
(08.09.2014 в 14:10)
| | Это не шутка, это даже очень плохо описывать объекты строкой и хранить такое описание в базе. | |
|
|
|
|
|
|
|
для: confirm
(08.09.2014 в 14:14)
| | Я просто вас недопонял вас..
Я не могу и не буду рушить то, что написано не мной и мне это тем более непонятно лишь потому что я просто не знаю как это сделать:)
Работает и работает, пускай еще долго работает)..
Моя задача сейчас организовать нижнюю строку таблицы на сайте под изображением продукции с выводом туда названий этой продукции.
Я уверен вы можете долго мне объяснять, что плохо описывать строками объекты, но прошу вас помочь с выводом, это возможно, уважаемый?:) | |
|
|
|
|
|
|
|
для: RobotWerder
(08.09.2014 в 14:19)
| | Ну чтобы поняли, я поясню по простому:
1) в массиве объектов, не важно каких, картинки это или другое, можно обратиться (получить его) к каждому либо по индексу (порядковому номеру), либо по ключу (имени), что оперативно;
2) этот массив объектов можно сериализовать, после чего представление массива будет описано строкой, из которой получить (обратиться к нему) оперативно объект уже нельзя без обратной операции.
Вывод - храня описание картинок в базе как строку, вы лишаетесь:
а) сортировки
б) произвольной выборки
г) поиска необходимого
... и др.
Не подумайте, что я вредный и потому так. Я знаю, что это плохо, а Работает и работает, пускай еще долго работает для меня не аргумент, и с таким подходом к задаче исполнителя нет смысла что-то предлагать. Ну вы же не станете замызганные штаны гладить и потом материться в них, какой смыл, так ведь? Вот с таким подходом к хранению данных в базе тоже самое, у меня по крайней мере. | |
|
|
|
|
|
|
|
для: confirm
(08.09.2014 в 14:32)
| | Я вас правильно понял, с выборкой при такой структуре хранения в БД информации выборка и поиск значения у меня не получится совсем?(
Дело в этом?
Если да, то какой существует выход из ситуации?( | |
|
|
|
|
|
|
|
для: RobotWerder
(08.09.2014 в 15:08)
| | У вас какая-то проблема с выводом html-таблицы, как я понял из заявленного. Сериализация не помеха для вывода таблицы такой. А вот искать в базе определенные изображения, например относящиеся к какому либо разделу (речь как я понимаю идет о галерее), или автору, сортировать изображения при запросах для вывода, и другое, вот это да - без лишнего и ненужного геморроя, как у вас сейчас в коде, этого, увы, не получится. | |
|
|
|
|
|
|
|
для: confirm
(08.09.2014 в 15:16)
| | такк.. пасибо .. более менее понятно..
А если не искать изображения относящиеся к разделу какому либо, и просто попытаться вывести все описания которые существуют?!
Или мне все равно это лишь с геморроем выйдет, тк необходимо будет искать какому изображению соответствует то или иное описание? | |
|
|
|
|
|
|
|
для: RobotWerder
(08.09.2014 в 15:28)
| | Мне трудно ответить на все ибо я не знаю структуру базы вашей, но когда встречается в коде выборка из базы сириализованной строки, то это настораживает сразу.
Давайте на простом примере сперва. Допустим у нас в массиве $im (а запрос строки ресурса полученного из базы и возвращает ее как массив, или можно объектом, что не меняет самой сути) под номерами (идентификаторами изображения (индексами), под которыми они хранятся в массиве, а в базе при должной структуре, а не записи строкой, это было также) хранятся подписи к этим изображениям:
<?
$im = array(
12 => 'Как я провел лето',
10 => 'Снова в школу'
);
?>
если вывести массив на экран, то получим следующее:
<?
print_r($im);
?>
результат:
Array
(
[12] => Как я провел лето
[10] => Снова в школу
)
чтобы получить подпись к картинке, например, с номером 12, достаточно следующего:
<?
echo $im[12];
?>
результат: Как я провел лето
после сериализации массива функцией serialize(), массив картинок уже не массив, а строка
<?
$im = serialize($im);
//посмотрим что теперь содержится в $im
echo serialize($im);
?>
результат:
a:2:{i:12;s:31:"Как я провел лето";i:10;s:22:"Снова в школу";}
после такого преобразования вывести подпись к картинке как $im[12] уже нельзя
требуется обратное преобразование строки в массив:
<?
$im = unserialize($im);
//и только после этого можно опять обращаться к $im как массиву
|
Предположим у меня есть в базе таблица пользователей, которые могут создавать свои галереи. Более того, чтобы не было анархии, я заставляю их не просто грузить картинки на сайт, а сперва выбрать тематический раздел в котором будут храниться те или иные их изображения. Они могут указывать названия этого раздела и прочее. То есть помимо таблицы пользователей в базе есть и таблица тематических разделов.
Информация о загруженных изображениях храниться в таблице изображений, в которую записывается подпись к изображению, его параметры как высота и ширина (что важно при различных эффектах с ними), идентификатор тематического раздела, в который загружено это изображение, идентификатор пользователя, который его загрузил, дата добавления, и прочее, что нужно будет.
Если мне надо получить и вывести на экран все изображения пользователя отсортировав их по тематическим категориям, дате добавления и прочим параметрам, или вывести только новые, добавленные на текущий день, или же только изображения определенной тематики, то все это я сделаю ОДНИМ запросом к базе (хотя запрос и будет содержать вложенные запросы), и все это будет решено только средствами SQL.
Некоторые "специалисты" или от непонимания что такое база и какие возможности она предоставляет, или же считают, что круче будет так - сериализовать все информацию об изображениях пользователя и эту строку воткнуть в запись таблицы пользователей, мол так круче - получу пользователя, его строку, растормашу ее, и все под рукой.
Увы, это не так, это не круто, это глупо. Попробуйте теперь, при хранении информации об изображении как строки получить то, что я писал выше одним запросом к базе и только средствами SQL. Не получиться. Нужно будет сперва извлечь строку, средствами РНР преобразовать ее в массив, и лишь потом НОВЫМИ запросами к базе что-то получить.
Кроме этого, чтобы добавить новую информацию, нужно сперва получить строку, средствами РНР преобразовать, добавить в полученный массив новое, опять сериализовать в строку и только затем можно записать в базу. А при нормальном хранении, это делается опять одним запросом и только средствами SQL.
Вот какой у вас геморрой. | |
|
|
|
|
|
|
|
для: confirm
(08.09.2014 в 16:34)
| |
<table border="0" cellpadding="0" cellspacing="0" style="margin-left:-8px;">
<tr>
<?
$i = 0;
$all = $DB->getAll("select * from mp_gallery where path_id='".getPathID()."' order by `order`");
foreach($all as $im)
{
$i++;
$img = unserialize($im['image_min']);
$img_size = getimagesize($_SERVER['DOCUMENT_ROOT'].$img[1]);
$img_big = unserialize($im['image']);
$img_size_big = getimagesize($_SERVER['DOCUMENT_ROOT'].$img_big[0]);
?>
<td align="center"><a href="#" onClick="pup('/view/<?=$im['id']?>/',<?=$img_size_big[0]?>,<?=$img_size_big[1]?>); return false;"><img src="<?=$img[1]?>" alt="" width="<?=$img_size[0]?>" height="<?=$img_size[1]?>" style="border: 1px solid #cacaca; padding:1px;"></a><h3><?=$im['title_page']?></h3></td>
<?
echo ($i != count($all)) ? '<td style="width:44px;"></td>' : '';
}
?>
</tr>
</table>
|
Вот рабочий код и он выводит описание..
просто добавил <h3><?=$im['title_page']?></h3> | |
|
|
|
|
|
|
|
для: RobotWerder
(08.09.2014 в 16:57)
| | И что?
Я вам не об этом говорю, а том, что держать в базе сериализованные данные... вот как прижмет и наплачитесь от этого, тогда поймете. | |
|
|
|
|
|
|
|
для: confirm
(08.09.2014 в 17:24)
| | За предостережение пасибо..
И за то что разжевали и разложили всё по полочкам.. | |
|
|
|
|
|
|
|
для: RobotWerder
(08.09.2014 в 17:26)
| | Это не вся беда. Я писал, что в базе нужно держать необходимую информацию об изображениях, и по человечески, а не скрытно, а вот что у вас:
$img_size = getimagesize($_SERVER['DOCUMENT_ROOT'].$img[1]);
$img_size_big = getimagesize($_SERVER['DOCUMENT_ROOT'].$img_big[0]);
Во-первых, пути можно указать загодя. Во-вторых, у вас файловые операции для получения информации о размерах изображения, а файловая операция, это не плевая операция, и если галерея это много изображений, то это увеличивает время отклика. Вот так. | |
|
|
|
|