Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление картинок к статье, в БД только имена 
:(
    Опции темы
Enya
  Дата 26.10.2006, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Вот стою перед такой задачей:

1. есть инструмент админа - add_article.php там есть всё что нужно. Но не хватает поля для загруски файлов к статье.
Как сделать поле я знаю:
Код
<input type="file" name="photo">


2. Максимум будет 4 фотографий, то есть четыре таких поля.

3. Нужно что бы после нажатия на клавишу создать статью, фотографии перемещались в папку картинки, а в БД в полях filename1 было имя первого загруженного файла.jpg

4. При выводе статьи была бы миниатюра (первый загруженный фаил), при клике на миниатюру открывалось окно и в нём была большая картинка, внизу [1] [2] [3] [4] (навигация, для переключения к следущим картинкам этой статьи.)

Что скажите? Вот. Сделаем? Думаю, что эта тема сможет быть хорошим примером для других. Но это уже потом.



--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
Enya
Дата 26.10.2006, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Вот не много попробывала. Конечно же не работает smile 
Код

<?php
/*подключение к БД*/
include("db_connect.php"); 

/* заголовок */
echo '<h2>Upload image BD</h2>';

/*Если поле не пустое то отправляем на обработку */
    if (isset($_POST['f_name'])){

        $f_name=$_POST['f_name'];
/* как понимаю проверка на то отправили ли фаил или нет */            
        if((!isset($_FILES['pictures']['name']) && is_uploaded_file($_FILES['picture']['tmp_name']))){

        $type = basename($_FILES['picture']['type']);
        
        switch ($type){
            case 'jpeg':
            case 'pjpeg':    $filename = "image/$f_name.jpg";

                            move_uploaded_file($_FILES['pictures']['tmp_name'],'../'.$filename);

                            $query = "UPDATE pictures SET pic = '$filename'";

                            $result=mysql_query($query,$dbcnx);

                            break;

            default:    echo 'bad file format: '.$_FILES['pictures']['type'];
        }
    }
    }else{
    
        echo '<form action="upload.php" method="post" enctype="multipart/form-data">';
        echo 'File name: <input type="text" name="f_name" size="20">';
        echo 'Picture: <input type="file" name="picture" size="40">';
        echo '<input type="submit" value=" Go! ">';
    }
?>


Добавлено @ 20:36 
Этим кусочком кода я хочу добиться следущего:
в поля вводят имя файла и путь к самому фаилу (картинке).
Нажимают GO!
1. Фаил в папке
2. Имя файла в БД

Соответсвенно потом можно сделать выборку и уде работать с картинкой.

БД просто до безумия имя pictures, пока два поля, id, pic ...

Добавлено @ 20:37 
А на данном этапе вылезает вот такая ошибка
Цитата

Notice: Undefined index: pictures in y:\home\others-scripts.net\www\upload.php on line 18
bad file format:



--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
Render
Дата 26.10.2006, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 12.5.2005

Репутация: нет
Всего: 3



http://phpclub.ru/detail/article/upload

Там как раз расписано в самом низу.
За основу можно взять его, а насчёт БД уже ручками. Там будем смотреть. Охотно приму участие, если будет время smile 
PM   Вверх
-=Ustas=-
Дата 27.10.2006, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Код

<?php

include("db_connect.php"); 

echo '<h2>Upload image BD</h2>';

if (isset($_POST['f_name'])) {
    $f_name = $_POST['f_name'];

    if (isset($_FILES['picture']['name']) && is_uploaded_file($_FILES['picture']['tmp_name'])) {
        $type = basename($_FILES['picture']['type']);
        
        switch ($type) {
            case ('jpeg'):
            case ('pjpeg'):
                $filename = 'image/'.$f_name.'.jpg';
                move_uploaded_file($_FILES['picture']['tmp_name'], '../'.$filename);
                $query  = "UPDATE pictures SET pic = '$filename'";
                $result = mysql_query($query,$dbcnx);
                break;
            default:
                echo 'bad file format: '.$_FILES['picture']['type'];
        }
    }
} else {
    echo '<form action="upload.php" method="post" enctype="multipart/form-data">';
    echo 'File name: <input type="text" name="f_name" size="20">';
    echo 'Picture: <input type="file" name="picture" size="40">';
    echo '<input type="submit" value=" Go! ">';
    echo '</form>';
}

?>


Добавлено @ 08:50 
И еще, вот тут наверное у тебя должен быть INSERT а не UPDATE
Код

$query  = "UPDATE pictures SET pic = '$filename'";



--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Enya
Дата 28.10.2006, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Странно всё равно выдаёт ошибку. И В БД нифиге не вставляется.
Код

<?php
include("db_connect.php");
//echo '<h2>Upload image BD</h2>';
    if (isset($_POST['f_name'])){
    
        $f_name=$_POST['f_name'];
        
        if((!isset($_FILES['pictures']['name']) && is_uploaded_file($_FILES['picture']['tmp_name']))){
        $type = basename($_FILES['picture']['type']);
        
        switch ($type){
            case 'jpeg':
            case 'pjpeg':    $filename = "/home/www/image/$f_name.jpg";//вот здесь полный путь прописала, у меня ДЕнвер
                            //здесь добавила IF
                            if(move_uploaded_file($_FILES['pictures']['tmp_name'],$filename .
                                $_FILES['pictures']['name'])){
                                
                                    $query  = "UPDATE pictures SET pic = '$filename'";//вот здесь изменения
                                    $result=mysql_query($query,$dbcnx);
                            }else{
                                
                                print "Error!";
                            }
                            
                            break;
            default:    echo 'bad file format: '.$_FILES['pictures']['type'];
        }
    }
    }else{
    
        echo '<form action="upload.php" method="post" enctype="multipart/form-data">';
        echo 'File name: <input type="text" name="f_name" size="20">';
        echo 'Picture: <input type="file" name="picture" size="40">';
        echo '<input type="submit" value=" Go! ">';
    }
?>

Цитата


Notice: Undefined index: pictures in y:\home\others-scripts.net\www\upload.php on line 15

Notice: Undefined index: pictures in y:\home\others-scripts.net\www\upload.php on line 16
Error!



--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
skifoz
Дата 28.10.2006, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 23.1.2006
Где: Россия

Репутация: нет
Всего: 1



Элемент назвала picture а вызываешь как pictures
PM MAIL WWW   Вверх
Enya
Дата 28.10.2006, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Цитата(skifoz @  28.10.2006,  18:06 Найти цитируемый пост)
Элемент назвала picture а вызываешь как pictures 
 smile чёрт, точно... виновата. Исправлю.



--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
Enya
Дата 29.10.2006, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Ну вот теперь самая романтика. Скрипт ошибок не выдаёт, но картинка в папку не попадает и в БД путь с именем не добавляется тоже.
Код

<?php
include("db_connect.php");
//echo '<h2>Upload image BD</h2>';
    if (isset($_POST['f_name'])){
    
        $f_name=$_POST['f_name'];
        
        if((!isset($_FILES['picture']['name']) && is_uploaded_file($_FILES['picture']['tmp_name']))){
        $type = basename($_FILES['picture']['type']);
        
        switch ($type){
            case 'jpeg':
            case 'pjpeg':    $filename = "/home/www/image/$f_name.jpg";
                            
                            if(move_uploaded_file($_FILES['picture']['tmp_name'],$filename .
                                $_FILES['picture']['name'])){
                                
                                    $query  = "UPDATE pictures SET pic = '$filename'";
                                    $result=mysql_query($query,$dbcnx);
                            }else{
                                
                                print "Error!";
                            }
                            
                            break;
            default:    echo 'bad file format: '.$_FILES['picture']['type'];
        }
    }
    }else{
    
        echo '<form action="upload.php" method="post" enctype="multipart/form-data">';
        echo 'File name: <input type="text" name="f_name" size="20">';
        echo 'Picture: <input type="file" name="picture" size="40">';
        echo '<input type="submit" value=" Go! ">';
    }
?>



--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
Enya
Дата 29.10.2006, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



У меня Денвер BASE PHP5

1. Нужно на папку image выставить права доступа 777, правильно?!
И как это лучше всего сделать? php-скриптом, используя функцию chmod("image",777);

2. так же как понимаю меня нужно указать полный путь к папке, правильно?!
вот какой путь полный?
Цитата
Y:\home\others-scripts.net\www\image

Цитата
var\home\www\image

3. и вот ещё, можите рассказать о вот этой строчке?!
Код

if(move_uploaded_file($_FILES['picture']['tmp_name'],$filename .
                                $_FILES['picture']['name'])){


4. На данном этапе upload.php  выглядит вот так:
Код

<?php
include("db_connect.php");
//echo '<h2>Upload image BD</h2>';
    if (isset($_POST['f_name'])){
    
        $f_name=$_POST['f_name'];
        
        if((!isset($_FILES['picture']['name']) && is_uploaded_file($_FILES['picture']['tmp_name']))){
        $type = basename($_FILES['picture']['type']);
        
        switch ($type){
            case 'jpeg':
            case 'pjpeg':    $filename = "/home/www/image/$f_name.jpg";
                            
                            if(move_uploaded_file($_FILES['picture']['tmp_name'],$filename .
                                $_FILES['picture']['name'])){
                                
                                    $query  = "INSERT INTO pictures VALUES ('', '$filename')";
                                    $result=mysql_query($query,$dbcnx);
                            }else{
                                
                                print "Error!";
                            }
                            
                            break;
            default:    echo 'bad file format: '.$_FILES['picture']['type'];
        }
    }
    }else{
    
        echo '<form action="upload.php" method="post" enctype="multipart/form-data">';
        echo 'File name: <input type="text" name="f_name" size="20">';
        echo 'Picture: <input type="file" name="picture" size="40">';
        echo '<input type="submit" value=" Go! ">';
    }
?>



--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
SelenIT
Дата 30.10.2006, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Enya, 
Цитата(Enya @  29.10.2006,  21:17 Найти цитируемый пост)
У меня Денвер BASE PHP5
Следовательно, система - Windows smile
 
Цитата(Enya @  29.10.2006,  21:17 Найти цитируемый пост)
Нужно на папку image выставить права доступа 777, правильно?!
Бывают ситуации, когда без этого не обойтись - если php выполняется с правами пользователя Apache, а каталог image принадлежит другому пользователю. Но это относится только к Unix-хостингу - у Windows в принципе нет такой системы прав, так что при отладке под Денвером можно до поры об этом не беспокоиться)

Цитата(Enya @  29.10.2006,  21:17 Найти цитируемый пост)
И как это лучше всего сделать?
Той же программой, которая создает эту папку. Если папка создается скриптом - то и права ставить скриптом. Если FTP-клиентом - в нем должна быть функция смены прав.

Цитата(Enya @  29.10.2006,  21:17 Найти цитируемый пост)
нужно указать полный путь к папке, правильно?
Правильно.

Цитата(Enya @  29.10.2006,  21:17 Найти цитируемый пост)
какой путь полный?
Для Денвера, по-видимому, первый. Второй вообще неправильный - обратные слеши понимает только Windows, зато прямые ("/") работают везде. А еще правильнее - $_SERVER['DOCUMENT_ROOT'].'/images' (подробнее).

Цитата(Enya @  29.10.2006,  21:17 Найти цитируемый пост)
можите рассказать о вот этой строчке?
См. выше, к тому же имхо $_POST['f_name'] в пути вообще не нужно. Лучше сделать
Код

$filename = $_SERVER['DOCUMENT_ROOT'].'/images/'.$_FILES['picture']['name'];
if (move_uploaded_file($_FILES['picture']['tmp_name'],$filename)) { ...
При отладке полезно выводить получившийся путь на экран - сразу станет видна ошибка, если она есть.

В остальном, вроде, должно быть нормально... Форму бы еще неплохо вынести из echo (например, в отдельный html-файл, и подключать его инклюдом).
Удачи!



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Enya
Дата 30.10.2006, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Внесла вот эти изменения.
Код

$filename = $_SERVER['DOCUMENT_ROOT'].'/images/'.$_FILES['picture']['name'];
if (move_uploaded_file($_FILES['picture']['tmp_name'],$filename)) { ...
Код

<?php
include("db_connect.php");
//echo '<h2>Upload image BD</h2>';
    if (isset($_POST['f_name'])){
    
        $f_name=$_POST['f_name'];
        
        if((!isset($_FILES['picture']['name']) && is_uploaded_file($_FILES['picture']['tmp_name']))){
        $type = basename($_FILES['picture']['type']);
        
        switch ($type){
            case 'jpeg':
            case 'pjpeg':    $filename = $_SERVER['DOCUMENT_ROOT'].'/image/'.$_FILES['picture']['name'];
                            
                            if (move_uploaded_file($_FILES['picture']['tmp_name'],$filename)){
                                
                                    $query  = "INSERT INTO pictures VALUES ('', '$filename')";
                                    $result=mysql_query($query,$dbcnx);
                            }else{
                                
                                print "Error!";
                            }
                            
                            break;
            default:    echo 'bad file format: '.$_FILES['picture']['type'];
        }
    }
    }else{
    
        echo '<form action="upload.php" method="post" enctype="multipart/form-data">';
        echo 'File name: <input type="text" name="f_name" size="20">';
        echo 'Picture: <input type="file" name="picture" size="40">';
        echo '<input type="submit" value=" Go! ">';
    }
?>
Ни в папке нет файла, ни в БД нет записи. smile 


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
Enya
Дата 30.10.2006, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Вот сделала. Работает. Боле-менее.
В папку добавляет, в БД тоже.
Код

<?php
include("db_connect.php");
    
    if (isset($_POST['data'])){
        
        $fname=basename( $_FILES['img']['name']);
        $extension = substr($fname, -4); 
        $rand=rand();
        $nomber=$rand.$extension;
        
        move_uploaded_file($_FILES['img']['tmp_name'],'/home/ng/public_html/images/1/'.$nomber);
        chmod('images/1/'.$nomber.'', 0777);
        
        $query  = "INSERT INTO `pictures` (`id`,`pic`) VALUES ('1','$nomber')";
                                        
        $result = mysql_query($query) or die("Query failed");
        
        
    }else{
    
        echo '<form action="upload1.php" method="post" enctype="multipart/form-data">';
        echo '<input type="hidden" name="data">';
        echo 'Picture: <input type="file" name="img" size="40">';
        echo '<input type="submit" value=" Go! ">';
    }
?>



--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0634 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.