|
|
|
| Здравствуйте! Помогите пожалуйста сделать фото галерею с использованием Mysql. Я хочу что бы в Mysql хранился адрес картинки, а на странице выводилась ссылка на картинку, и нажимая на ссылку открывалось новое окно с картинкой. Как это сделать? Какого типа должно быть поле в базе под адрес картинки? Где должна располагаться папка с самими фотками? Как вообще должен выглядеть код? Подскажите начинающему РНР-программисту :-).
Заранее благодарен. | |
|
|
|
|
|
|
|
для: Mefisto84
(23.03.2006 в 10:28)
| | Вы можете сверяться с кодом фотогарей представленных в разделе downloads нашего сайта.
http://www.softtime.ru/info/downloads.php | |
|
|
|
|
|
|
|
для: cheops
(23.03.2006 в 12:47)
| | Спасибо конечно, но как я понял там не совсем то что мне нужно. Мне нужно что бы в одной базе хранились и сведения о автомобилях и адреса фаотографий. А выводилось это все в одно окно, и нажимая на ссылку открывалась фотка в новом окне. У одной машины может быть несколько фоток. И у меня ничего не получается, под адрес фотки взял поле text, и адрес получается какой-то странный, что то типа tmpphp.tmp что то вроде этого. | |
|
|
|
|
|
|
|
для: Mefisto84
(23.03.2006 в 13:40)
| | А вы что помещаете в текстовое поле адреса, из какой переменной берёте адрес фотографии? | |
|
|
|
|
|
|
|
для: cheops
(23.03.2006 в 15:21)
| | Вот форма с помощью которой я выбираю фотографию(пока что на этой форме поле только для фотографии, когда все будет работать я эту форму соединю с формой добавления всех данных о машине).
<?php
###########################################
#Generated by module for PHP Nuke 6.5-7.5 #
# www.shkurki.ru #
###########################################
//Проверка запрета прямого обращения к файлу модуля
if (!eregi("modules.php", $_SERVER['PHP_SELF']))
{ die ("You can't access this file directly..."); }
//Инклюдим файл mainfile.php
require_once("mainfile.php");
//Определяем переменную, содержащую имя модуля, ее можно использовать для построения внутренних ссылок
$module_name = basename(dirname(__FILE__));
//Определяем языковые данные
get_lang($module_name);
//Переменная $index = 1 определяет наличие правых блоков, без нее их не будет.
$index = 1;
//Вставляем шапку сайта и открываем таблицу для вывода данных.
include("header.php");
OpenTable();
//Ниже идет содержание вашего модуля
echo "<html>"
. "<head>"
. "</head>"
. "<body>"
. "<form action=\"modules.php?name=Photo&file=upload\" method=\"post\" enctype=\"multipart/form-data\"> "
. "<input type=\"file\" name=\"photo\"><br> "
. "<input type=\"submit\" value=\"Загрузить\"><br> "
. "</form> "
. "</body>"
. "</html>"
. ""
."";
//Закрываем таблицу и вставляем нижнюю часть сайта.
CloseTable();
include("footer.php");
?>
А вот этот сценарий уже отвечает именно за добаление этого адреса в базу данных.
<?
//Проверка запрета прямого обращения к файлу модуля
if (!eregi("modules.php", $_SERVER['PHP_SELF']))
{ die ("You can't access this file directly..."); }
//Инклюдим файл mainfile.php
require_once("mainfile.php");
//Определяем переменную, содержащую имя модуля, ее можно использовать для построения внутренних ссылок
$module_name = basename(dirname(__FILE__));
//Определяем языковые данные
get_lang($module_name);
//Переменная $index = 1 определяет наличие правых блоков, без нее их не будет.
$index = 0;
//Вставляем шапку сайта и открываем таблицу для вывода данных.
include("header.php");
OpenTable();
echo "<center><h3>В базу данных добавлена новая фотография! </h3></center><br>";
if(!mysql_connect("localhost","root","")){
echo "Невозможно подключиться к серверу! <br>";
echo mysql_error();
exit;
}
if(!mysql_select_db("auto")){
echo "Невозможно подключиться к базе данных! <br>";
echo mysql_error();
exit;
}
define ("DBName","auto");
define ("HostName","localhost");
define ("UserName","root");
define ("Password","");
if(!mysql_connect(HostName,UserName,Password))
{echo"Невозможно подключиться к базе ".DBName."!<br>";
echo mysql_error();
exit;
}
mysql_select_db(DBName);
$sqltext="INSERT INTO CAR (photo) VALUES ('$photo')";
mysql_query($sqltext);
mysql_query($sqltextq);
//Закрываем таблицу и вставляем нижнюю часть сайта.
CloseTable();
include("footer.php");
?>
То есть переменная Photo отвечает за адрес. | |
|
|
|
|
|
|
|
для: Mefisto84
(23.03.2006 в 17:03)
| | Хм... как-то странно загружаются фотографии, попробуйте загружать их при помощи скрипта http://www.softtime.ru/scripts/upload.php, там же вы найдёте переменные, отвественные за имя файла и имя временного файла (такое ощущение, что у вас попадает в базу имя временного файла). | |
|
|
|
|
|
|
|
для: cheops
(23.03.2006 в 20:44)
| | Хорошо, спасибо, теперь хотя бы фотки хоть куда-то сохраняются. Но мне то нужно что бы путь сохранялся в базу, что бы я потом мог эту фотку вытащить, сделать на неё ссылку. Как мне сохранить путь в базу? | |
|
|
|
|
|
|
|
для: Mefisto84
(24.03.2006 в 06:46)
| | А вы когда фотографию сохраняете при помощи функции copy(), сохраняйте путь во втором аргументе в базу данных - "c:/temp/".$_FILES["filename"]["name"] (только у вас будет свой путь и относительный). | |
|
|
|
|
|
|
|
для: cheops
(24.03.2006 в 13:52)
| | Расскажите об этом пожалуйста поподробнее, что то я не догоняю. Вот у меня база auto, в ней есть таблица car, в таблице поле photo текстовое(тип text), я хочу что бы в это поле сохранялся путь. Как мне это сделать? Как мне прописать это во втором аргументе? Подскажите если не сложно. И еще один вопрос, а фотографии где должны храниться? Они должны уже быть загружены на сервер? Заранее благодарен. | |
|
|
|
|
|
|
|
для: Mefisto84
(24.03.2006 в 18:43)
| | У вас код сейчас как выглядит - прикрепите его если не сложно. Да фотографии должны быть загружены на сервер - в момент загрузки в базу данных и помещается путь к тому месту, куда складируется фотография. | |
|
|
|
|
|
|
|
для: cheops
(24.03.2006 в 19:57)
| | Вот сценарий с помощью которого выбирается фотография:
<?php
###########################################
#Generated by module for PHP Nuke 6.5-7.5 #
# www.shkurki.ru #
###########################################
//Проверка запрета прямого обращения к файлу модуля
if (!eregi("modules.php", $_SERVER['PHP_SELF']))
{ die ("You can't access this file directly..."); }
//Инклюдим файл mainfile.php
require_once("mainfile.php");
//Определяем переменную, содержащую имя модуля, ее можно использовать для построения внутренних ссылок
$module_name = basename(dirname(__FILE__));
//Определяем языковые данные
get_lang($module_name);
//Переменная $index = 1 определяет наличие правых блоков, без нее их не будет.
$index = 1;
//Вставляем шапку сайта и открываем таблицу для вывода данных.
include("header.php");
OpenTable();
//Ниже идет содержание вашего модуля
echo "<html>"
. "<head>"
. "</head>"
. "<body>"
. "<form action=\"modules.php?name=Photo&file=upload\" method=\"post\" enctype=\"multipart/form-data\"> "
. "<input type=\"file\" name=\"filename\"><br> "
. "<input type=\"submit\" value=\"Загрузить\"><br> "
. "</form> "
. "</body>"
. "</html>"
. ""
."";
//Закрываем таблицу и вставляем нижнюю часть сайта.
CloseTable();
include("footer.php");
?>
А вот этот сценарий должен прописывать в базу путь к фотографии :
<?
//Проверка запрета прямого обращения к файлу модуля
if (!eregi("modules.php", $_SERVER['PHP_SELF']))
{ die ("You can't access this file directly..."); }
//Инклюдим файл mainfile.php
require_once("mainfile.php");
//Определяем переменную, содержащую имя модуля, ее можно использовать для построения внутренних ссылок
$module_name = basename(dirname(__FILE__));
//Определяем языковые данные
get_lang($module_name);
//Переменная $index = 1 определяет наличие правых блоков, без нее их не будет.
$index = 0;
//Вставляем шапку сайта и открываем таблицу для вывода данных.
include("header.php");
OpenTable();
if(!mysql_connect("localhost","root","")){
echo "Невозможно подключиться к серверу! <br>";
echo mysql_error();
exit;
}
if(!mysql_select_db("auto")){
echo "Невозможно подключиться к базе данных! <br>";
echo mysql_error();
exit;
}
define ("DBName","auto");
define ("HostName","localhost");
define ("UserName","root");
define ("Password","");
if(!mysql_connect(HostName,UserName,Password))
{echo"Невозможно подключиться к базе ".DBName."!<br>";
echo mysql_error();
exit;
}
if($_FILES["filename"]["size"] > 1024*3*1024)
{
echo ("Размер файла превышает три мегабайта");
exit;
}
if(copy($_FILES["filename"]["tmp_name"],
"photo".$_FILES["filename"]["name"]))
{
echo("Файл успешно загружен <br>");
echo("Характеристики файла: <br>");
echo("Имя файла: ");
echo($_FILES["filename"]["name"]);
echo("<br>Размер файла: ");
echo($_FILES["filename"]["size"]);
echo("<br>Каталог для загрузки: ");
echo($_FILES["filename"]["tmp_name"]);
echo("<br>Тип файла: ");
echo($_FILES["filename"]["type"]);
} else {
echo("Ошибка загрузки файла");
}
//Закрываем таблицу и вставляем нижнюю часть сайта.
CloseTable();
include("footer.php");
?>
Большое спасибо за помощь. | |
|
|
|
|
|
|
|
для: Mefisto84
(25.03.2006 в 15:10)
| | Хм... а у вас вообще нет SQL-запросов в коде - вы какую нибудь запись вставляете в таблицу при загрузке и если да, то какая структура таблицы? | |
|
|
|
|
|
|
|
для: cheops
(25.03.2006 в 21:58)
| | Ну до этого я пытался делать это так(это другая версия сценария в который отправлялись данные из формы) :
<?
//Проверка запрета прямого обращения к файлу модуля
if (!eregi("modules.php", $_SERVER['PHP_SELF']))
{ die ("You can't access this file directly..."); }
//Инклюдим файл mainfile.php
require_once("mainfile.php");
//Определяем переменную, содержащую имя модуля, ее можно использовать для построения внутренних ссылок
$module_name = basename(dirname(__FILE__));
//Определяем языковые данные
get_lang($module_name);
//Переменная $index = 1 определяет наличие правых блоков, без нее их не будет.
$index = 0;
//Вставляем шапку сайта и открываем таблицу для вывода данных.
include("header.php");
OpenTable();
echo "<center><h3>В базу данных добавлена новая фотография! </h3></center><br>";
if(!mysql_connect("localhost","root","")){
echo "Невозможно подключиться к серверу! <br>";
echo mysql_error();
exit;
}
if(!mysql_select_db("auto")){
echo "Невозможно подключиться к базе данных! <br>";
echo mysql_error();
exit;
}
define ("DBName","auto");
define ("HostName","localhost");
define ("UserName","root");
define ("Password","");
if(!mysql_connect(HostName,UserName,Password))
{echo"Невозможно подключиться к базе ".DBName."!<br>";
echo mysql_error();
exit;
}
mysql_select_db(DBName);
$sqltext="INSERT INTO CAR (photo) VALUES ('$photo')";
mysql_query($sqltext);
mysql_query($sqltextq);
//Закрываем таблицу и вставляем нижнюю часть сайта.
CloseTable();
include("footer.php");
?>
То есть в форме имя переменной было photo а не filename. Вот таким способом добавлялся адрес а базу очень странный, tmpphp.tmp что то вроде этого. А потом уже по вашему совету я взял другой сценарий. Что нужно изменить в этом сценарии что бы добавлялся нормальный путь? База называется auto, таблица car, в таблице текстовое поле photo. Вот это поле я и хочу добавлять адрес. | |
|
|
|
|
|
|
|
для: Mefisto84
(26.03.2006 в 13:05)
| | Вам в предыдущий вариант необходимо добавить SQL-запрос
<?php
$sqltext="INSERT INTO CAR (photo) VALUES ('photo/".$_FILES["filename"]["name"]."')";
mysql_query($sqltextq);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(26.03.2006 в 14:35)
| | cheops большое вам спасибо за помощь, все работает!
Еще раз спасибо! | |
|
|
|