[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: проблема с выведением мини-изображения в статье
dobryaaasha
когда я добавляю статью через админский блок, у меня не отображается мини-картинка в окне браузера.
в базу она загружается. проблема в отображении именно на сайте.
вот скриншот
http://rghost.ru/5326639

и, кстати, дата почему-то обнуляется.

вот страница добавления статьи:
<body>
<table
width="690" border="1" align="center" bgcolor="#FFFFFF" class="main_border">
<?
include("blocks/header.php"); ?>
<tr>
<td
valign="top"><table width="690" border="1">
<tr>
<?
include("blocks/lefttd.php"); ?>
<td
valign="top">

<?php

if (!empty($_POST['fupload'])) //проверяем, отправил ли пользователь изображение
{
$fupload=$_POST['fupload']; $fupload = trim($fupload);
if ($fupload =='' or empty($fupload)) {
unset($fupload);// если переменная $fupload пуста, то удаляем ее
}
}

if (!isset($fupload) or empty($fupload) or $fupload =='')
{

$pic = "articles/no_pic.jpg";
}
else
{


$path_to_90_directory = 'Z:/home/localhost/www/phpsite/articles/';

if(preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))
{
$filename = $_FILES['fupload']['name'];
$source = $_FILES['fupload']['tmp_name'];
$target = $path_to_90_directory . $filename;
move_uploaded_file($source, $target);
if(preg_match('/[.](GIF)|(gif)$/', $filename)) {
$im = imagecreatefromgif($path_to_90_directory.$filename) ;
}
if(preg_match('/[.](PNG)|(png)$/', $filename)) {
$im = imagecreatefrompng($path_to_90_directory.$filename) ;
}

if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
$im = imagecreatefromjpeg($path_to_90_directory.$filename);
}

$w = 79;
$w_src = imagesx($im);
$h_src = imagesy($im);

$dest = imagecreatetruecolor($w,$w);

if ($w_src>$h_src)
imagecopyresampled($dest, $im, 0, 0,
round((max($w_src,$h_src)-min($w_src,$h_src))/2),
0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));

if ($w_src<$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
min($w_src,$h_src), min($w_src,$h_src));

if ($w_src==$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
$date=time();
imagejpeg($dest, $path_to_90_directory.$date.".jpg");
$pic = $path_to_90_directory.$date.".jpg";
$delfull = $path_to_90_directory.$filename;
unlink ($delfull);
}
else
{

exit ("Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>");
}

}

if (isset($title) and isset($meta_d) and isset($meta_k) and isset($date) and isset($description) and isset($text) and isset($author) and isset($pic))
{
$result = mysql_query ("INSERT INTO articles (title,meta_d,meta_k,date,description,text,author,pic) VALUES ('$title','$meta_d','$meta_k','$date','$description','$text','$author','$pic')");

if ($result == 'true') {echo "<p>Ваша статья успешно добавлена.</p>";}
else {echo "<p>Ваша статья не добавлена.</p>";}

}

else
{
echo "<p>Статья не может быть внесена в базу, т.к. вы ввели не всю информацию.</p>";
}
?>

</td>
</tr>
</table></td>
</tr>
<?
include("blocks/footer.php"); ?>
</table>
</body>




Спустя 1 минута, 29 секунд (25.04.2011 - 19:34) dobryaaasha написал(а):
на скриншоте первая статья добавлена через базу данных, остальные - через админский блок

Спустя 4 минуты, 3 секунды (25.04.2011 - 19:38) mxwuser написал(а):
Неверно задана ссылка на изображение в админском блоке. Посмотри исходный код странички, и найди различия в статьях добавленныех с БД и с Админки

Спустя 48 минут, 58 секунд (25.04.2011 - 20:27) dobryaaasha написал(а):
в исходном коде у изображения, которое выложилось путь
src='articles/130411/shigin_branchuk.jpg'
а у которого не выложилось
src='Z:/home/localhost/www/phpsite/articles/1303747243.jpg'

Спустя 3 минуты, 20 секунд (25.04.2011 - 20:31) dobryaaasha написал(а):
кстати, я когда в базе удалила часть Z:/home/localhost/www/phpsite/
оставила только articles/1303747243.jpg, картинка отобразилась
но это только если в базе так сделать
это плохо

Спустя 20 минут, 32 секунды (25.04.2011 - 20:51) Игорь_Vasinsky написал(а):
есть понятия относительного пути и абсолютного, в админском блоке произведите изменения.

Спустя 8 минут, 40 секунд (25.04.2011 - 21:00) dobryaaasha написал(а):
я так понимаю, в строке $path_to_90_directory = 'Z:/home/localhost/www/phpsite/articles/'; надо заменить абсолютный адрес на относительный?

Спустя 39 минут, 52 секунды (25.04.2011 - 21:40) Игорь_Vasinsky написал(а):
wink.gif это должно делаться автоматом, при загрузке катинки и именно в таком виде писаться в БД, а следовательно нужно внести изменения в функции загрузке.

или если вы это делаете ручками - то да, прописывать адрес куда картинка будет копироваться уже на хост.

Спустя 1 минута, 8 секунд (25.04.2011 - 21:41) Игорь_Vasinsky написал(а):
а.. вижу:

$path_to_90_directory    = 'Z:/home/localhost/www/phpsite/articles/';


смените адрес

Спустя 6 минут, 15 секунд (25.04.2011 - 21:47) dobryaaasha написал(а):
так..сменить..еще б понять на какой адрес сменить
сейчас буду размышлять

Спустя 6 минут, 16 секунд (25.04.2011 - 21:53) Krevedko написал(а):
без
Z:/home/localhost/www
уж точно

вообще
Z:/home/localhost/www/phpsite/articles/
странный путь
скорее сайт лежит по пути

Z:/home/localhost/phpsite/www/

тогда надо поставить /articles

Спустя 2 минуты, 33 секунды (25.04.2011 - 21:56) Игорь_Vasinsky написал(а):
Цитата
так..сменить..еще б понять на какой адрес сменить
сейчас буду размышлять


Ну просто же... посмотри адрес работающей превью...

Спустя 3 минуты, 15 секунд (25.04.2011 - 21:59) mxwuser написал(а):
Работает:
src='articles/130411/shigin_branchuk.jpg'

Не работает:
src='Z:/home/localhost/www/phpsite/articles/1303747243.jpg'


Соответственно, при добавлении в БД, нужно сделать из ссылки которая не работает, ссылку которая работает. Так как ты знаешь абсолютный адрес(количество символов), можешь обрезать сторку записываемую функцией 'substr'

$string = 'Z:/home/localhost/www/phpsite/articles/1303747243.jpg';
$src = substr($string, 30);


Вроде, как-то так.

Спустя 8 минут, 46 секунд (25.04.2011 - 22:08) dobryaaasha написал(а):
Krevedko, /articles ставила уже. картинка опять же не появляется

Игорь_Vasinsky, может, и просто это, но я пока туго ориентируюсь в этих делах


mxwuser, ух, это прям очень интересный способ

Спустя 4 минуты, 30 секунд (25.04.2011 - 22:13) mxwuser написал(а):
$pic = substr($path_to_90_directory, 30).$date.".jpg"; - попробуй так сделать, и скажи что записывается в бд в столбец 'pic'

Спустя 20 минут, 43 секунды (25.04.2011 - 22:33) dobryaaasha написал(а):
я че-то запуталась, а в какой части страницы добавить эту строку?

Спустя 15 минут, 35 секунд (25.04.2011 - 22:49) mxwuser написал(а):
Вместо этого

$pic    = $path_to_90_directory.$date.".jpg";

Спустя 15 минут, 4 секунды (25.04.2011 - 23:04) dobryaaasha написал(а):
спасиииибо еще раз!
наконец-то картинки стали отображаться

Спустя 7 минут, 17 секунд (25.04.2011 - 23:11) Krevedko написал(а):
мда...как говорится способ через жопу )) впрочем сойдет

Спустя 5 минут, 4 секунды (25.04.2011 - 23:16) mxwuser написал(а):
Krevedko
Там весь сайт написан на ДуВайлах и Принт_ф'ах. Так что не все так плохо (=

Спустя 16 минут, 2 секунды (25.04.2011 - 23:32) Krevedko написал(а):
ну я о чем и говорю. работает и ладно )
но никто себе такой код на нормальный сайт никогда не поставит )

Спустя 1 минута, 19 секунд (25.04.2011 - 23:34) mxwuser написал(а):
Расскажи тогда, что-ли, как правильнее сделать будет, в следущий раз учтем (=

Спустя 11 минут, 2 секунды (25.04.2011 - 23:45) Krevedko написал(а):
я уже написал как. использовать нормальный путь...
всегда использовал что-то вроде
'/public/pics/'.image.jpg и проблем не возникало. если хочется поглубже поизвращаться, всегда можно заюзать $_SERVER['HTTP_HOST'] и $_SERVER['DOCUMENT_ROOT'], записать в константы и ставить перед адресом.

Спустя 16 часов, 6 минут, 28 секунд (26.04.2011 - 15:51) dobryaaasha написал(а):
Krevedko, я задание делаю институтское. Так что до нормального сайта мне еще далеко. Да и времени пока нет. А так, хоть бы заработал действительно.


mxwuser, я когда сменила строчку $pic = $path_to_90_directory.$date.".jpg"; на то, что ты прислал, у меня дата перестала при добавлении статьи появляться. все грузится хорошо и красиво кроме даты. она получается 0000-00-00

Спустя 6 минут, 9 секунд (26.04.2011 - 15:57) Krevedko написал(а):
ну дык тем более в институте за такое кол поставят моментом )
почему нельзя нормальную ссылку написать ?

Спустя 29 минут, 59 секунд (26.04.2011 - 16:27) dobryaaasha написал(а):
в институте принимает парниша лабы. главное, чтоб все работало.

а ссылку я пыталась ставить типа такой /public/pics/'.image.jpg
не работает

Спустя 2 минуты, 17 секунд (26.04.2011 - 16:30) dobryaaasha написал(а):
мне же нужно указать папку, в которую будут загружаться картинки
а ты пишешь '/public/pics/'.image.jpg.
мне значит надо писать только '/public/pics/'?

Спустя 9 минут, 54 секунды (26.04.2011 - 16:39) Krevedko написал(а):
мне нужно знать две вещи.
1) где лежат у тебя картинки и как они называются
2) куда сейчас ведет путь (который неправильный) на картинку. смотрится так - правой кнопкой на место, где должна быть картинка, но щас там пустое поле и свойства. Например ссылка на твой аватар- http://phpforum.ru/uploads/av-27564.jpg
Тут просто не все телепаты еще )
Вообще если я правильно понял, то
$path_to_90_directory = '/articles/';
$pic = $path_to_90_directory . $date . '.jpg';
если $date-это название картинки, а картинки лежат в папке articles

Спустя 20 минут, 53 секунды (26.04.2011 - 17:00) dobryaaasha написал(а):
1) так какая разница, как они называются? админ же любую картинку может добавить
2) http://localhost/phpsite/articles/1303825293.jpg - адрес работающей картинки
на неработающей, когда щелкаю свойства изображения, ничего не происходит

Спустя 6 минут, 38 секунд (26.04.2011 - 17:07) Krevedko написал(а):
выше код должен прокатить по идее

Спустя 7 минут, 35 секунд (26.04.2011 - 17:15) dobryaaasha написал(а):
не катит
ошибку пишет, что нет такой директории в http://localhost/phpsite/add_articles/

у меня статьи хранятся в articles, а добавляются в add_articles

Спустя 2 минуты, 5 секунд (26.04.2011 - 17:17) Krevedko написал(а):
$pic = '/articles/' . $date . '.jpg';

Спустя 47 минут, 41 секунда (26.04.2011 - 18:04) liw написал(а):
dobryaaasha
Ты так и будешь постоянно делать методом тыка?

Попробуй понять вообще как это работает.


Например:

если сейчас у тебя в браузере в URL написано:
locahost/phpsite/index.php

и этот самый index.php лежит тут Z:/blabla/phpsite/index.php
вот значит текущая папка у тебя сейчас Z:/blabla/phpsite

а картинки у тебя лежат например в папке Z:/blabla/phpsite/articles/

так вот тебе нужно тогда прописать путь от папки Z:/blabla/phpsite до папки с картинками - то есть до Z:/blabla/phpsite/articles/

то есть путь будет таким: ./articles/

. - точка - в пути обозначает текущую папку
.. - двоеточие - переход на уровень вверх (назад/влево)

т.е. если мне нужно из файла C:/data/html.html
сделать ссылку на картинку C:/image.jpg

то в html.html я буду писать так <img src="../image.jpg">
что значит из текущей папки перейти на уровень вверх и вот там уже лежит картинка

Спрашивай что непонятно, в том что я понаписал. И постарайся решить свою задачу самостоятельно.





Спустя 8 минут, 29 секунд (26.04.2011 - 18:13) dobryaaasha написал(а):
liw
это все мне понятно уже сейчас.
спасибо!

мне теперь не понятно, почему дата стала отображаться 0000-00-00
отчего это может быть?
просмотрела весь код и не понимаю, почему не передается значение даты


Спустя 5 минут, 55 секунд (26.04.2011 - 18:19) Krevedko написал(а):
откуда значение даты берется ?

Спустя 6 минут, 27 секунд (26.04.2011 - 18:25) dobryaaasha написал(а):
я так понимаю, отсюда

if (isset($title) and isset($meta_d) and isset($meta_k) and isset($date) and isset($description) and isset($text) and isset($author) and isset($pic))
{
$result = mysql_query ("INSERT INTO articles (title,meta_d,meta_k,date,description,text,author,pic) VALUES ('$title','$meta_d','$meta_k','$date','$description','$text','$author','$pic')");

if ($result == 'true') {echo "<p>Ваша статья успешно добавлена.</p>";}
else {echo "<p>Ваша статья не добавлена.</p>";}

}

Спустя 4 минуты, 15 секунд (26.04.2011 - 18:29) liw написал(а):
Нет тут дата вставляется в базу, - и то ещё неизвестно что там в переменной $date (пардон вполне известно, - посмотрел код первого поста).

А где именно вывод данных из базы? И вообще в базе в столбце date - дата присутствует?

Спустя 2 минуты, 12 секунд (26.04.2011 - 18:32) Krevedko написал(а):
если дата берется из базы, то тут два варианта. Либо в базе криво. Либо когда берем из базы, то где-то теряется. Скорее первое...

Спустя 3 минуты, 56 секунд (26.04.2011 - 18:36) dobryaaasha написал(а):
в базе по умолчанию 0000-00-00
а что там поставить, чтобы в статью добавлялась правильная дата?

кстати, в форме добавления новой статьи у меня
<p class="style4">
<label>Введите дату добавления статьи<br />
<input name="date" type="text" id="date" value="2011-04-09" />
</label>
</p>

т.е. когда я как админ ввожу статью, у меня в дате уже стоит 2011-04-09
а после добавления появляется 0000-00-00

Спустя 2 минуты, 1 секунда (26.04.2011 - 18:38) walerus написал(а):
Цитата
если дата берется из базы, то тут два варианта. Либо в базе криво. Либо когда берем из базы, то где-то теряется. Скорее первое...


Как сказал выше Liw - "дата вставляется в базу", следовательно куда то пропадает данные переменной $data, либо обнуляется, либо не в том формате мб передаете дату?...

Я бы посмотрел все переменные которые передаются в базу, перед отправкой, стало бы все предельно ясно...

Ну вот, тут дата как оказалось, берется из переменной передаваемой формой, и тут же в коде перед отправкой в базу стоит - $date=time();, и наверно скорее всего в этом и заключается ошибка.

Спустя 3 минуты, 31 секунда (26.04.2011 - 18:41) walerus написал(а):
Как вариант, можно попробовать закоментить эту строку... $date=time();

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

Спустя 17 минут, 38 секунд (26.04.2011 - 18:59) dobryaaasha написал(а):
да, время берется из $date=time();
эта функция, я так понимаю, вычисляет время в настоящий момент.

значит ошибка в противоречии $date=time(); и value="2011-04-09"?

я извиняюсь, за тупыевопросы в очередной раз, но как посмотреть все переменные которые передаются в базу, перед отправкой?

Спустя 55 секунд (26.04.2011 - 19:00) dobryaaasha написал(а):
пробую закомментировать $date=time();

Спустя 1 минута, 55 секунд (26.04.2011 - 19:02) dobryaaasha написал(а):
а блин нельзя же закомментировать..

Спустя 16 минут, 13 секунд (26.04.2011 - 19:18) dobryaaasha написал(а):
в общем, я закомментировала $date=time();
теперь дату сама устанавлмваю в форме.
конечно, имена картинок теперь наверно будут совпадать, потому что $date=time(); использовалось, чтоб имена у картинок всегда были разные(всегда = точному времени), но уж лучше так

Спустя 7 минут, 8 секунд (26.04.2011 - 19:25) Krevedko написал(а):
Цитата
конечно, имена картинок теперь наверно будут совпадать, потому что $date=time(); использовалось, чтоб имена у картинок всегда были разные(всегда = точному времени), но уж лучше так

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

Спустя 24 минуты, 10 секунд (26.04.2011 - 19:49) dobryaaasha написал(а):
я исправила
сделала $a=time()
$pic = $path_to_90_directory.$a.".jpg";
все хорошо теперь работает

спасибо всем!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.