Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

фото upload

2.8K
06 августа 2008 года
Arsench
27 / / 13.03.2004
у меня есть 5 поле текстовый и хочу со этими текстами еще добавит фотку, есть пример такой у кого то плз.,
например, имя, адрес,город, и фото, как можно добавит все это вместе и патом показать на страничке?спасибо большое
364
07 августа 2008 года
Xupypr
148 / / 20.04.2000
Где данные храняться?

Аплоадишь фото в папку, данные либо в файл, либо в БД... и все, потом показываешь =)


все до безобразия просто, надо только взять книгу по PHP и почитать раздел работа с файлами... пример закачки и работы с файлами + работы с бд есть в любой книге.
38K
08 августа 2008 года
mbk2008
10 / / 01.08.2008
Всем привет! у меня аналогичная проблема, помогите разобраться кто-нибудь...
В частности нужно зааплоадить фото и закинуть имя фотки в базу. Но вместе с фото нужно в базу закинуть пару значений из текстового поля. Так вот, почему-то посылается всё кроме этих двух значений... я грешу на параметр формы enctype="multipart/form-data", но до конца не уверен что это именно он виноват...
92
08 августа 2008 года
Тень Пса
2.2K / / 19.10.2006
без этого энктайпа ты файлы не зааплоадишь... ищи косяки в коде. [SIZE=6]+ [SIZE=2]к тому, можно взять скрипт-пример... в гугле их столько находится....[/SIZE]
[/SIZE]
38K
08 августа 2008 года
mbk2008
10 / / 01.08.2008
Цитата: Xupypr
Где данные храняться?

Аплоадишь фото в папку, данные либо в файл, либо в БД... и все, потом показываешь =)


все до безобразия просто, надо только взять книгу по PHP и почитать раздел работа с файлами... пример закачки и работы с файлами + работы с бд есть в любой книге.




Всё, я уже разобрался. почему-то переменные исчезали при вызове функции pg_escape_string(). Странно,но... факт...

38K
08 августа 2008 года
mbk2008
10 / / 01.08.2008
Не, не разобрался...
Короче...

Есть форма с текстовыми полями и полем для выбора файла. Есть кнопка,по нажатию на которую вызывается js функция, которая, собственно, передаёт запрос на сервак. Я так понимаю что $_POST исчезает за счёт того что кнопка не сабмит а обычный батон... хотя почему тогда массив $_FILES на месте?

Кто-нить мне может сей феномен объяснить? Текстовое поле нужно в любом случае записать в базу... ну и файл тоже...
92
08 августа 2008 года
Тень Пса
2.2K / / 19.10.2006
ну, вот если бы ты не извращался с JS, а просто бы использовал SUBMIT и обычную форму =) то было бы всё в порядке...

а если серьезно... то ты просишь догадаться что у тебя там понаписано, и как оно у тебя работает + к этому, найти в том, о чем догадались, ошибки :) жоска, да?
38K
08 августа 2008 года
mbk2008
10 / / 01.08.2008
Так не я извращаюсь-то....
Это задание - ОБЯЗАТЕЛЬНО загружать фотки именно аяксом. Я использую для этого JsHttpRequest... но факт тот,что всё равно на форму повешана именно яваскриптовая функция а не сабмит... и что тут делать, честно говоря, ума не приложу...

Если говорить про код...

Функция JS:
Код:
function upload(value) {
    // Create new JsHttpRequest object.
    var req = new JsHttpRequest();
    var alb_id = "<?php echo $_GET['album_id'] ?>";
    var cat_id = "<?php echo $_GET['cat_id'] ?>";
   
    if (!alb_id || !cat_id)
    {
        return false;
    }
    // Code automatically called on load finishing.
    req.onreadystatechange = function() {
            if (req.readyState < 4)
            {
                document.getElementById('result').innerHTML = 'Загружается файл...';
            }
                       
            else if ((req.readyState = 4) )
            {
           
   
                if (req.responseJS.status == "404")
                {
                    var result = "Загрузка не удалась";
                }
                else
                if  ( (req.responseJS.status == "200") || (req.responseJS.dberror == "0"))
                {
                    alert(req.responseJS.title);
                    alert(req.responseJS.descr);
                    var result = "Файл успешно загружен";
                }
               
                else
                if (req.responseJS.status == "500")
                {
                    var result = "Неверный тип файла"; 
                }
               
                if (req.responseJS.dberror == "1")
                {
                    var result = "Ошибка записи в базу...<br>" + req.responseJS.dbdescr;  
                }
                // Write result to page element (_RESULT becomes responseJS).
                document.getElementById('result').innerHTML = result;              
               
            }
    }
    // Prepare request object (automatically choose GET or POST).
    req.open(null, 'http://www.site.ru/photogal/album.php?album_id=' + alb_id + '&cat_id=' + cat_id + '&mode=load', true);
   
    // Send data to backend.
    req.send({ upl: value });
}


Форма HTML:
Код:
<form method="post" enctype="multipart/form-data">
<table width="500px" cellpadding="0" cellspacing="0" border="0">
<tr>
    <td>Пользователь: </td>
    <td><b><div name="usr"><?php echo $usrname ?></div></b></td>
</tr>
<tr>
    <td>Заголовок: </td>
    <td><input name="title" maxlength="80" /></td>
</tr>  
<tr>
    <td>Описание: </td>
    <td><textarea cols="15" rows="5" name="descr"></textarea></td>
</tr>      
<tr>
    <td>Фотография: </td>
    <td><input type="file" name="upl"></td>
</tr>

<tr>
    <td colspan="2"><input type="button" value="Загрузить" &#111;&#110;click="upload(this.form.upl)" name="go"></td>
<!--        <td colspan="2"><input type="submit" value="Загрузить" name="go"></td> -->
</tr>
</table>   
</form>
<div id="result"></div> <!-- для вывода аяксовых сообщений -->


PHP-код, который всё это дело обрабатывает:
Код:
if ($_GET['mode'] == 'load' && isset($_GET['album_id']) && isset($_GET['cat_id']))
{
    $type = $_FILES['upl']['type'];
    $str = substr($type, 0, 5);
    $size = $_FILES['upl']['size'];

    //переменные формы
    $picname    =   $_FILES["upl"]["name"];
    $picsize    =   $_FILES["upl"]["size"];
    $title      =   $_REQUEST["title"];
    $descr      =   $_REQUEST["descr"];
   
    if ( ($str == "image") &&  ( ($size > 200) || $size < 3145728 )) //ограничиваем размер снизу 200 байт,сверху 3 мегабайта
    {
            if (!copy($_FILES['upl']['tmp_name'], '/upload_dir/'.$_FILES['upl']['name']))
            {
                $GLOBALS['_RESULT'] = array(
                    "status"    =>  "404",
                    "type"      => $_FILES['upl']['type'],
                    "dberror"   => "0"
                ); 
            }
            else
            {
                $GLOBALS['_RESULT'] = array(
                        "status"    =>  "200",
                        "type"      => $_FILES['upl']['type'],
                        "dberror"   => "0",
                        "title" => $_REQUEST['title'],
                        "descr" => $_REQUEST['descr']

                    ); 

                 $query = pg_query(//insert query);
                 
                 if (!$query)
                 {
                 echo pg_last_error();
                    $GLOBALS['_RESULT'] = array(
                        "status"    =>  "000",
                        "type"      => $_FILES['upl']['type'],
                        "dberror"   => "1",
                        "dbdescr"   => pg_last_error()
                    );               
                 }
                 else
                 {
                    $GLOBALS['_RESULT'] = array(
                        "status"    =>  "200",
                        "type"      => $_FILES['upl']['type'],
                        "dberror"   => "0",
                        "title" => $title,     //возвращает null!!!
                        "descr" => $descr //возвращает null!!!

                    ); 
                 } 
            }
    }      
    else
    {
        $GLOBALS['_RESULT'] = array(
            "status" => "500"
            );
    }
}


Пути, адрес сайта и запрос в базу не показываю по причинам безопасности :) все сопутствующие файлы, естественно, включены через require_once.

P. S. Использовать 2 разные формы - не вариант! (Сами подумайте,юзер сначала будет загружать фотку а потом описание к ней? В два приёма? :) :) :))
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог