Учу php по WroxОвской книжке типа Beginning php. Там в 7ой главе по ходу в примере код не рабочий. Гуглил, на форумах темы подняты но ответов нету. Я сам конечно не пойму где ошибка, может вы увидете
Первый файл - форма загрузки изображения upload_image.html
<html>
<head>
<title>Upload your pic to our site!</title>
<style type="text/css">
<!--
td {vertical-align: top;}
-->
</style>
</head>
<body>
<form action="check_image.php" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>Your Username</td>
<td><input type="text" name="username" /></td>
</tr>
<td>Upload Image*</td>
<td><input type="file" name="uploadfile" /></td>
</tr><tr>
<td colspan="2">
<small><em>* Acceptable image formats include: GIF, JPG/JPEG and PNG.
</em></small>
</td>
</tr><tr>
<td>Image Caption<br/>
</td>
<td><input type="text" name="caption" /></td>
</tr><tr>
<td colspan="2" style="text-align: center">
<input type="submit" name="submit" value="Upload"/>
</td>
</tr>
</table>
</form>
</body>
</html>
Второй файл - сам скрипт который обрабатывает рисунок и выводит на обозрение - check_image.php
<?php
$db=mysql_connect('xxxx', 'xxxx', 'xxxx') or
die ('Unable to connect. Check your connection parameters.');
mysql_select_db('xxxx', $db) or die(mysql_error($db));
//change this path to match your images directory
$dir ='C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/images';
//make sure the uploaded file transfer was successful
if ($_FILES['uploadfile']['error'] != UPLOAD_ERR_OK) {
switch ($_FILES['uploadfile']['error']) {
case UPLOAD_ERR_INI_SIZE:
die('The uploaded file exceeds the upload_max_filesize directive ' . 'in php.ini.');
break;
case UPLOAD_ERR_FORM_SIZE:
die('The uploaded file exceeds the MAX_FILE_SIZE directive that ' . 'was specified in the HTML form.');
break;
case UPLOAD_ERR_PARTIAL:
die('The uploaded file was only partially uploaded.');
break;
case UPLOAD_ERR_NO_FILE:
die('No file was uploaded.');
break;
case UPLOAD_ERR_NO_TMP_DIR:
die('The server is missing a temporary folder.');
break;
case UPLOAD_ERR_CANT_WRITE:
die('The server failed to write the uploaded file to disk.');
break;
case UPLOAD_ERR_EXTENSION:
die('File upload stopped by extension.');
break;
}
}
//get info about the image being uploaded
$image_caption = $_POST['caption'];
$image_username = $_POST['username'];
$image_date = date('Y-m-d');
list($width, $height, $type, $attr) =
getimagesize($_FILES['uploadfile']['tmp_name']);
//make sure the uploaded file is really a supported image
switch ($type) {
case IMAGETYPE_GIF:
$image = imagecreatefromgif($_FILES['uploadfile']['tmp_name']) or
die('The file you uploaded was not a supported filetype.');
$ext = '.gif';
break;
case IMAGETYPE_JPEG:
$image = imagecreatefromjpeg($_FILES['uploadfile']['tmp_name']) or
die ('The file you uploaded was not a supported filetype.');
$ext = '.jpg';
break;
case IMAGETYPE_PNG:
$image = imagecreatefrompng($_FILES['uploadfile']['tmp_name']) or
die ('The file you uploaded was not a supported filetype.');
$ext = '.png';
break;
default:
die('The file you uploaded was not a supported filetype.');
}
//insert information into image table
$query = 'INSERT INTO images
(image_caption, image_username, image_date)
VALUES
("' . $image_caption . '", "' . $image_username . '", "' . $image_date . '")';
$result = mysql_query($query, $db) or die(mysql_error($db));
//retrieve the image_id that MySQL generated automatically when we inserted
//the new record
$last_id = mysql_insert_id();
//because the id is unique, we can use it as the image name as well to make
//sure we don't overwrite another image that already exists
$imagename = $last_id . $ext;
//update the image table now that the final filename is known.
$query = 'UPDATE images
SET image_filename = "' . $imagename . '"
WHERE image_id = ' . $last_id;
$result = mysql_query($query, $db) or die (mysql_error($db));
//save the image to its final destination
switch ($type) {
case IMAGETYPE_GIF:
imagegif($image, $dir . '/' . $imagename);
break;
case IMAGETYPE_JPEG:
imagejpeg($image, $dir . '/' . $imagename, 100);
break;
case IMAGETYPE_PNG:
imagepng($image, $dir . '/' . $imagename);
break;
}
imagedestroy($image);
?>
<html>
<head>
<title>Here is your pic!</title>
</head>
<body>
<h1>So how does it feel to be famous?</h1>
<p>Here is the picture you just uploaded to our servers:</p>
<img src="<?php echo $imagename; ?>" style="float:left;">
<table>
<tr><td>Image Saved as:</td><td><?php echo $imagename; ?></td></tr>
<tr><td>Image Type: </td><td><?php echo $ext; ?></td></tr>
<tr><td>Height:</td><td><?php echo $height; ?></td></tr>
<tr><td>Width:</td><td><?php echo $width; ?></td></tr>
<tr><td>Upload Date:</td><td><?php echo $image_date; ?></td></tr>
</table>
</body>
</html>
Ну вот, собственно сам файл в директорию не загружается и вместо рисунтка в результате отображается только placeholder. У меня нет шансов разобраться в чем дело, так как я совсем новичок. Код проверен-перепроверен на 10 раз.
Буду благодарен любой помощи.
Спустя 18 минут, 1 секунда (18.11.2011 - 19:41) Игорь_Vasinsky написал(а):
в начале кода
error_reporting(E_ALL);
Спустя 14 минут, 9 секунд (18.11.2011 - 19:55) TonyMontanaSlot написал(а):
Спустя 7 минут, 39 секунд (18.11.2011 - 20:03) m4a1fox написал(а):
ТС, а учебник какого года? Просто скрипт, как я понимаю, по идее, должен просто грузить картинку и заносить путь к ней в БД? Так?
Спустя 59 секунд (18.11.2011 - 20:04) Игорь_Vasinsky написал(а):
m4a1fox
там не копируется, там с помощью библиотеки создаётся ;)
Ты при выводе не указываешь директорию
там не копируется, там с помощью библиотеки создаётся ;)
Ты при выводе не указываешь директорию
Цитата |
<img src="<?php echo $imagename; ?>" style="float:left;"> |
попробуй
<img src="<?php echo $dir . '/' . $imagename; ?>" style="float:left;">
Спустя 3 минуты, 38 секунд (18.11.2011 - 20:08) m4a1fox написал(а):
Игорь_Vasinsky
Цитата |
там не копируется, там с помощью библиотеки создаётся ;) |
А! Вот где собака порылась! Тогда, коли создается, зачем вот это
Цитата |
<td>Upload Image*</td> <td><input type="file" name="uploadfile" /></td> |
Чет не могу понять!?
P.S. Какой то путь странный -
Цитата |
$dir ='C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/images'; |
относительный по ходу. А не проще так попробовать?
И еще, я не знаю структуры вашего каталога, поэтому бы посоветовал вам проверить еще раз пути... так как путь ваш меня насторожил, ибо, сохранять картинки в папке Apacha кажется не есть хорошая практика!
$dir ='./images';
И еще, я не знаю структуры вашего каталога, поэтому бы посоветовал вам проверить еще раз пути... так как путь ваш меня насторожил, ибо, сохранять картинки в папке Apacha кажется не есть хорошая практика!
Спустя 2 минуты, 27 секунд (18.11.2011 - 20:10) Игорь_Vasinsky написал(а):
m4a1fox
первоначально она должна считаться, а где её читать будут - во временной директории, а как её туды положить? загрузить
первоначально она должна считаться, а где её читать будут - во временной директории, а как её туды положить? загрузить
$image = imagecreatefromgif($_FILES['uploadfile']['tmp_name'])
Спустя 1 минута, 45 секунд (18.11.2011 - 20:12) TonyMontanaSlot написал(а):
Цитата (m4a1fox @ 18.11.2011 - 17:03) |
ТС, а учебник какого года? Просто скрипт, как я понимаю, по идее, должен просто грузить картинку и заносить путь к ней в БД? Так? |
2009 года. Нет, сам путь к картинке в бд не идет, только название файла! (ид+расширение). Ну а так да, просто загрузить, отобразить картинку, ее аттрибуты, имя и т.п.
Цитата (Игорь_Vasinsky @ 18.11.2011 - 17:04) |
<img src="<?php echo $dir . '/' . $imagename; ?>" style="float:left;"> |
Бесполезно
![sad.gif](http://phpforum.ru/html/emoticons/sad.gif)
Спустя 1 минута, 43 секунды (18.11.2011 - 20:14) m4a1fox написал(а):
Игорь_Vasinsky
То есть по сути происходит перекопирование положения цветовых пикселей с одной картинки на чистую - таким образом происходит создание этой фотки?! Я правильно понял?
К ТС, у меня еще вопрос - а вы какой скрипт хотите получить в итоге?! Ну, тио есть, что бы он что делал? А то есть подозрение, что вам просто нужно фотку загрузить и прописать путь к ней в БД?! Или что-то специфичнее?
То есть по сути происходит перекопирование положения цветовых пикселей с одной картинки на чистую - таким образом происходит создание этой фотки?! Я правильно понял?
К ТС, у меня еще вопрос - а вы какой скрипт хотите получить в итоге?! Ну, тио есть, что бы он что делал? А то есть подозрение, что вам просто нужно фотку загрузить и прописать путь к ней в БД?! Или что-то специфичнее?
Спустя 1 минута, 9 секунд (18.11.2011 - 20:15) m4a1fox написал(а):
TonyMontanaSlot
Цитата |
Ну а так да, просто загрузить, отобразить картинку, ее аттрибуты, имя и т.п. |
Как по мне, так скрипт как-то ректально получился. Ибо есть способы гораздо легче!
Спустя 1 минута, 9 секунд (18.11.2011 - 20:16) Игорь_Vasinsky написал(а):
m4a1fox
Цитата |
То есть по сути происходит перекопирование положения цветовых пикселей с одной картинки на чистую - таким образом происходит создание этой фотки?! Я правильно понял? |
типо того.
ТС - а ты исходный код глянь страницы - путь тот? картинка в реале по этому пути есть? она создалась?
Спустя 6 минут, 19 секунд (18.11.2011 - 20:22) TonyMontanaSlot написал(а):
Цитата (m4a1fox @ 18.11.2011 - 17:08) |
P.S. Какой то путь странный - Цитата $dir ='C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/images'; относительный по ходу. А не проще так попробовать? $dir ='./images'; И еще, я не знаю структуры вашего каталога, поэтому бы посоветовал вам проверить еще раз пути... так как путь ваш меня насторожил, ибо, сохранять картинки в папке Apacha кажется не есть хорошая практика! |
./images попробовал, бесполезно.
Ну а вообще я уже и просто создавал на диске C папку images и все равно! Я уже как только не пробовал эту images распологать.
Цитата (m4a1fox @ 18.11.2011 - 17:14) |
Как по мне, так скрипт как-то ректально получился. Ибо есть способы гораздо легче! |
Согласен полностью. Но к сожалению мне надо осилить эту книжку и приходится делать все по ней, т.к. там концепция что это все сделанное используется в будующих главах.
Цитата (Игорь_Vasinsky @ 18.11.2011 - 17:16) |
ТС - а ты исходный код глянь страницы - путь тот? картинка в реале по этому пути есть? она создалась? |
Пути проверял на несколько раз. В том то и дело что не создается =(
Спустя 1 минута, 55 секунд (18.11.2011 - 20:24) m4a1fox написал(а):
TonyMontanaSlot
Вот тут гляньке как реализовано! Конечно уж слишком просто - но для старта пойдет! А то ваш скрипт какой-то уж слишком навороченный всякими плюшками получился!
Вот тут гляньке как реализовано! Конечно уж слишком просто - но для старта пойдет! А то ваш скрипт какой-то уж слишком навороченный всякими плюшками получился!
Спустя 3 минуты, 25 секунд (18.11.2011 - 20:28) TonyMontanaSlot написал(а):
Ура, товарищи!
Всем спасибо!
$dir ='./images';- при помощи этой фигни картинки реально загружались!
<img src="<?php echo $dir . '/' . $imagename; ?>" style="float:left;">- потом я еще применил и эту вещь. Все заработало!=)
Всем спасибо!
Спустя 3 минуты, 10 секунд (18.11.2011 - 20:31) Игорь_Vasinsky написал(а):
уж да....
Спустя 5 минут, 49 секунд (18.11.2011 - 20:37) m4a1fox написал(а):
TonyMontanaSlot
Цитата |
Всем спасибо! |
Спасибо в карму не положешЬ!
Да и с путями поаккуратнее!
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)