Всем привет.
Мужики помогите.
Установил на сайте флеш галерею - Palaroid, может кто слышал о такой.
Так вот там фотки добавляются с помощью xml файла.Надо в папку положить изображение и прописать его в xml файл.
Я подумал и решил что надо сделать это все автоматизированно, так сказать админка.
То есть файл через форму закачивается на сервер, в папку 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 "' . $file_name . '".</p>'; } elseif (@fwrite($handle, $xml_data) === false) { fclose($handle); echo '<p>Error: Cannot write to file "' . $file_name . '".</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 |
<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 написал(а):
Все разобрался!!!
Убрал
И цикл поменял
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 редериктом.