[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как сделать закачку и обновление списка на php
vladex
Всем привет.
Мужики помогите.
Установил на сайте флеш галерею - Palaroid, может кто слышал о такой.
Так вот там фотки добавляются с помощью xml файла.Надо в папку положить изображение и прописать его в xml файл.

HTML
<?xml version="1.0" encoding="cp-1251"?>
<photos>
<!-- Plase your photos here -->
<photo desc="Photografia 1" url="_pics/1.jpg" />
<photo desc="Photografia 2" url="_pics/2.jpg" />
<photo desc="Photografia 3" url="_pics/3.jpg" />
</photos>



Я подумал и решил что надо сделать это все автоматизированно, так сказать админка.
То есть файл через форму закачивается на сервер, в папку image, потом берется его имя и добавляется в базу данных, ну или просто в файл и формирует общий список файлов для вывода в галерее.
Вот такая идея, но как осуществить сам процесс загрузки в папку файла и помещения его имени в БД.



Спустя 10 минут, 10 секунд (6.05.2009 - 00:26) waldicom написал(а):
Тебе написать рабочий код? Идея вроде у тебя есть, нормальная...

Спустя 58 секунд (6.05.2009 - 00:27) kasichvadim написал(а):
HTML
<form action="upload.php" method="post" enctype="multipart/form-data" name="form1">
<input type="file" name="file">
<input type="submit" value="Загрузить файл">
</form>



PHP
<?

$filename $_FILES[file][name];

if (
copy($_FILES[file][tmp_name], "image"))

{

    echo 
"Файл $filename успешно закачан на сервер";

    
$sql mysql_query("INSERT INTO table VALUES(NULL, $filename)");

}

else

{

    echo 
"Файл не закачан на сервер";

}


Спустя 3 минуты, 26 секунд (6.05.2009 - 00:30) vladex написал(а):
Как понимаю в тегах php это код файла upload.php ?

Спустя 3 минуты, 56 секунд (6.05.2009 - 00:34) kasichvadim написал(а):
Цитата (vladex @ 5.05.2009 - 23:30)
Как понимаю в тегах php это код файла upload.php ?

так точно ))) Тот код для upload.php
Все конечно примитивно, но должно копировать в папку image и добавлять запись в базу MySQL. А дальше уже с базы можна вытягивать названия файлов, и формировать список для галереи.

Спустя 11 часов, 53 минуты, 12 секунд (6.05.2009 - 12:27) vladex написал(а):
Вот я делаю так:
ФАЙЛ ИНДЕКС
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Загрузка</title>

</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data" name="form1">
<input type="file" name="file">
<input type="submit" value="Загрузить файл">
</form>
</body>
</html>


ОБРАБОТЧИК
PHP
<?php
include ("bd.php");/*Подключение к БД*/
$filename $_FILES[file][name];

if (
copy($_FILES[file][tmp_name], "tmp/image.jpg"))

{

    echo 
"Файл $filename успешно закачан на сервер";

    
$sql mysql_query("INSERT INTO list VALUES(NULL, $filename)");

}

else

{

    echo 
"Файл не закачан на сервер";

}



Файл закачивается на сервер, но в БД не добавляется:(
Я сделал базу polaroid и в ней таблицу list.
В таблице три поля:
id,file и name.
Но видимо запрос
PHP
$sql mysql_query("INSERT INTO list VALUES(NULL, $filename)");

маленько не верен...

Спустя 14 минут, 32 секунды (6.05.2009 - 12:42) kasichvadim написал(а):
Ну если в таблице три поля, то и запрос должен быть со вставкой значений трех полей:

PHP
$name "Моя первая фотка";
$sql mysql_query("INSERT INTO list VALUES(NULL, $filename, $name)");

Только при испльзовании этого запроса, поле id должно быть auto increment

Спустя 1 час, 47 минут, 45 секунд (6.05.2009 - 14:30) vladex написал(а):
Вот нашел статейку как из БД инфу в xml файл сохранять.
Ссылка на статью
Но там формат вывода не такой как надо мне.

HTML
<?xml version="1.0" encoding="utf-8"?>
<photos>
<id>1</id>
<name>foto 1</name>
</photos>


А мне надо так:

HTML
<?xml version="1.0" encoding="cp-1251"?>
<photos>
<!-- Plase your photos here -->
<photo desc="Photografia 1" url="_pics/1.jpg" />
</photos>

Как сделать вывод ?

Спустя 3 часа, 45 минут, 24 секунды (6.05.2009 - 18:15) kasichvadim написал(а):
PHP
<?php

    $sql 
mysql_query("SELECT * FROM list");

    
$xml_data '<?xml version="1.0" encoding="cp-1251"?>\n<photos>';

     while (
$array_data mysql_fetch_array($sql))

     {

             
$xml_data .= "<photo desc=\"$array_data[name]\" url=\"image/$array_data[file]\" />\n";

      }

     
$xml_data .= '</photos>';


     echo 
$xml_data;





Вобщем на работоспособность код не проверял, набросал на быструю руку. Если нигде не натупил, то должно все работать.

Спустя 58 минут, 7 секунд (6.05.2009 - 19:13) vladex написал(а):
Я сделал так:

PHP
<?php
include ("bd.php");/*Подключение к БД*/
$file_name 'photos.xml';
$query 'SELECT * FROM `' $table_name '`';
$result mysql_query($query) or die('Query failed: ' mysql_error());

echo 
'<textarea cols="50" rows="30">' "\n";
$xml_data '<?xml version="1.0" encoding="utf-8" ?>' "\n";
$xml_data .= "<photos>\n";
while (
$line mysql_fetch_row($result)) {
    
$i 0;
    foreach (
$line as $col_value) {
        
$field_name mysql_field_name($result$i++);        
        
$xml_data .= "\t<photo desc=\"Photografia $col_value\" url=\"_pics/$col_value\" />\n";
    }
}
$xml_data .= "</photos>";
echo 
htmlspecialchars($xml_data);
echo 
'</textarea>';

mysql_free_result($result);


if (!
$handle = @fopen($file_name'w')) {
    echo 
'<p>Error: Cannot open file &quot;' $file_name '&quot;.</p>';
} elseif (@
fwrite($handle$xml_data) === false) {
    
fclose($handle);
    echo 
'<p>Error: Cannot write to file &quot;' $file_name '&quot;.</p>';
} else {
    
fclose($handle);
    echo 
'<p>Done.</p>';
}




но есть маленькая проблемка - xml файл формирует две строки вместо одной:

HTML
<?xml version="1.0" encoding="utf-8" ?>
<photos>
<photo desc="Photografia 52" url="_pics/52" />
<photo desc="Photografia 3.jpg" url="_pics/3.jpg" />
</photos>

Как сформировать цикл чтобы выводилась одна строка на запрос?

Спустя 20 часов, 29 минут, 55 секунд (7.05.2009 - 15:43) kasichvadim написал(а):
Не понял вопрос. Напиши, какой должен быть xml файл

Спустя 25 минут, 56 секунд (7.05.2009 - 16:09) vladex написал(а):
Xml должен быть таким
HTML
<?xml version="1.0" encoding="utf-8" ?>
<photos>
<photo desc="Photografia 1" url="_pics/1.jpg" />
<photo desc="Photografia 2" url="_pics/2.jpg" />
<photo desc="Photografia 3" url="_pics/3.jpg" />
<photo desc="Photografia 4" url="_pics/4.jpg" />
<photo desc="Photografia 5" url="_pics/5.jpg" />
<photo desc="Photografia 6" url="_pics/6.jpg" />
</photos>


Я изменил немного цикл:
ВМЕСТО
PHP
while ($line mysql_fetch_row($result)) {
    
$i 0;
    foreach (
$line as $col_value) {
        
$field_name mysql_field_name($result$i++);        
        
$xml_data .= "\t<photo desc=\"Photografia $col_value\" url=\"_pics/$col_value\" />\n";
    }
}



Я НАПИСАЛ ТАКОЙ
PHP
do {    
        
$xml_data .= "\t<photo desc=\"Photografia ".$myrow['id']."\" url=\"_pics/".$myrow['url']."\" />\n";
    }
while (
$myrow mysql_fetch_row($result));



И теперь только первый раз выводится формат xml какой мне надо

HTML
<?xml version="1.0" encoding="utf-8" ?>
<photos>
<photo desc="Photografia 103" url="_pics/1.jpg" />
<photo desc="Photografia " url="_pics/" />
<photo desc="Photografia " url="_pics/" />
<photo desc="Photografia " url="_pics/" />
</photos>

Спустя 6 часов, 42 минуты, 28 секунд (7.05.2009 - 22:51) kirik написал(а):
Ээм..
Попробуй такой код:
PHP
$xml_data null;
while (
$myrow mysql_fetch_assoc($result))
{    
     
$xml_data .= "\t".'<photo desc="Photografia '.$myrow['id'].'" url="_pics/'.$myrow['url'].'" />'."\n";
}

Спустя 13 часов, 51 минута, 26 секунд (8.05.2009 - 12:43) vladex написал(а):
Попробовал ваш kirik вариант
Но с переменной
HTML
$xml_data = null;

траблы...
На выхлопе получаю код
HTML
<photo desc="Photografia 25" url="_pics/2.jpg" />
<photo desc="Photografia 24" url="_pics/1.jpg" />
</photos>

Спустя 50 минут, 37 секунд (8.05.2009 - 13:33) vladex написал(а):
Все разобрался!!!
Убрал
HTML
$xml_data = null;

И цикл поменял
PHP
do  {  
     
$xml_data .= "\t".'<photo desc="Photografia '.$myrow['id'].'" url="_pics/'.$myrow['url'].'" />'."\n";
}
while (
$myrow mysql_fetch_assoc($result));

Теперь подскажите плиз как мне сделать чтобы при обновлении страницы, уже после закачки файла на сервер, он не добавлялся снова.

Спустя 2 дня, 7 часов, 16 минут, 40 секунд (10.05.2009 - 20:50) hara написал(а):
Делай редирект на эту же страницу header('Location: blabla.php');

Спустя 29 минут, 6 секунд (10.05.2009 - 21:19) twin написал(а):
Сбросить POST редериктом.
Быстрый ответ:

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