Такая проблема, данный скрипт должен заполнять строчку бд. Но... ссылки картинки никак не хотят прописываться в строчке img1..2 там пустота. Что я делаю не так?
<?php
$db = mysql_connect ("localhost","ivan","lehfrz1");
mysql_select_db ("avto",$db);
$img = $_FILES['img']; // Массив фото
$uploaddir = "img/"; // Каталог, куда грузим
$god=$_POST['god'];
$cena=$_POST['cena'];
$telephone=$_POST['telephone'];
$email=$_POST['email'];
$name=$_POST['name'];
$models=$_POST['models'];
$marka=$_POST['marka'];
// А тут грузим их в каталог
for( $i=0; $i < count( $img ); $i++ )
{
if( move_uploaded_file( $uploaddir.$img[$i]['name'], $img[$i]['tmp_name'] ) )
{
$print .= "Изображение ".$img[$i]['name']." загружено<br>";
}
else
{
$print .= "Изображение ".$img[$i]['name']." не загружено<br>";
}
$photoa[$i] = $uploaddir.$img[$i]['name'];
}
// Выводим инфо
echo $print;
$result2 = mysql_query ("INSERT INTO auto (marka,name,models,god,cena,telephone,email,img1,img2,img3) VALUES('$marka','$name','$models','$god','$cena','$telephone','$email','$photoa[1]','$photoa[2]','$photoa[3]')");
// Проверяем, есть ли ошибки
if ($result2=='TRUE')
{
echo "Вы успешно добавили объявление! Теперь вы можете зайти на сайт. <a href='index.html'>Главная страница</a>";
}
else {
echo "Ошибка! Что-то пошло не так.... Объявление не добавлено";
}
?>
Спустя 2 часа, 45 минут, 6 секунд (18.04.2012 - 00:52) justyork написал(а):
А на сервер фотки загружаются?
Покажи форму и функцию move_uploaded_file.
Если у поля с файлом ты используешь multiple, то если я не ошибаюсь, при обработке фоток индекс счетчика будет стоять после индекса с именем, но нужны остатки.
В конце пропиши, возможно поймешь в чем причина
Покажи форму и функцию move_uploaded_file.
Если у поля с файлом ты используешь multiple, то если я не ошибаюсь, при обработке фоток индекс счетчика будет стоять после индекса с именем, но нужны остатки.
$result2 = mysql_query ("INSERT INTO auto (...) VALUES(...)") or die(mysql_error());
В конце пропиши, возможно поймешь в чем причина
Спустя 2 часа, 24 минуты, 59 секунд (18.04.2012 - 03:17) Xpund написал(а):
И когда таблицу создавал, какой тип колонки выбрал?
Спустя 5 часов, 5 минут, 41 секунда (18.04.2012 - 08:23) Studentillo написал(а):
Таблицу создавал с такими параметрами с помощью sql
т.е. varchar
вот вырезок из кода самой формы
про функцию я немного не понял
нет, в папке img ничего не появляется (тестирую на локальном сервере)
Парни, я очень рад, что вы мне помогаете, единственный форум где оказали помощь, учитывайте, что я не очень опытный в пхп. Заранее спасибо!
CREATE TABLE `auto` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`marka` VARCHAR( 15 ) NOT NULL ,
`name` VARCHAR( 15 ) NOT NULL ,
`models` VARCHAR( 10 ) NOT NULL ,
`god` INT( 4 ) NOT NULL,
`cena` INT( 10 ) NOT NULL,
`telephone` INT( 15 ) NOT NULL,
`email` VARCHAR( 40 ) NOT NULL,
`img1` VARCHAR( 40 ) NOT NULL,
`img2` VARCHAR( 40 ) NOT NULL,
`img3` VARCHAR( 40 ) NOT NULL
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_bin
т.е. varchar
вот вырезок из кода самой формы
<div id="telo">
<h2 align="center">Заполните форму</h2>
<form action="script.php" method="Post">
Ваше имя: <br>
<input type="text" name="name">
</br>
Ваш телефон: <br>
<input type="text" name="telephone">
</br>
Ваш e-mail: <br>
<input type="text" name="email">
</br>
Год выпуска: <br>
<input type="text" name="god">
</br>
Цена: <br>
<input type="text" name="cena">
</br>
<legend><label for="models">Модели</label></legend>
<select id="models" name="models" onchange="getColors(this)">
<option value="BentleyAzure">Bentley Azure</option>
<option value="ChevroletCorvette">Chevrolet Corvette</option>
<option value="FerrariEnzo">Ferrari Enzo</option>
</select>
<legend><label for="marka">Цвета</label></legend>
<select id="marka" name="marka"></select>
<p>
<label>Выберите фотографию. Изображение должно быть формата jpg, gif или png:<br></label>
<input type="FILE" name="img[]"><br>
<input type="FILE" name="img[]"><br>
<input type="FILE" name="img[]">
</p>
<br><input type="submit" name="submit" value="Разместить" /></br>
</form>
</div>
про функцию я немного не понял
нет, в папке img ничего не появляется (тестирую на локальном сервере)
Парни, я очень рад, что вы мне помогаете, единственный форум где оказали помощь, учитывайте, что я не очень опытный в пхп. Заранее спасибо!
Спустя 33 минуты, 54 секунды (18.04.2012 - 08:57) Xpund написал(а):
Попробуй:
И ещё фаил который делает всё это, находится в одной директории что и папка img?
На сколько я знаю надо без ковычек, но я могу ошибаться(это так, дополнение)
лучше
Там же не php у тебя=)
Делай для каждого файла отдельно
Сам сегодня с картинками копался)
Вот как у меня)
$uploaddir=$_SERVER['DOCUMENT_ROOT']."/img/";
И ещё фаил который делает всё это, находится в одной директории что и папка img?
if ($result2==TRUE)
{
На сколько я знаю надо без ковычек, но я могу ошибаться(это так, дополнение)
img[]
лучше
img/img1/img2 ...
Там же не php у тебя=)
Делай для каждого файла отдельно
Сам сегодня с картинками копался)
Вот как у меня)
Свернутый текст
$valid_types = array('gif','jpg', 'png', 'jpeg','GIF','JPG', 'PNG', 'JPEG');
// создаем главную рабочую директорию =============================================
$dir=$_SERVER['DOCUMENT_ROOT']."/tpl/def/gallery/";
if (!is_dir($dir)) {
mkdir($dir,0755);
// создали папку gallery в корне нашего сайта и установили права на чтение и запись
}
function createphoto ($input,$output) {
$w = 110; // мы получим пропорциональное изображение шириной 400px
$q = 100; // качество jpeg по умолчанию
$f=$input;
$src = imagecreatefromjpeg($f);
// функция imagecreatefromjpeg создает изображение JPEG из файла
// т.е. создаём исходное изображение на основе исходного файла и определяем его размеры
$w_src = imagesx($src);
$h_src= imagesy($src);
// получение ширины и высоты изображения в пикселях
$ratio = $w_src/$w;
$w_dest = round($w_src/$ratio);
$h_dest = round($h_src/$ratio);
// получение координат для построения нового изображения необходимой нам ширины
$dest = imagecreatetruecolor($w_dest,$h_dest);
// функция imagecreatetruecolor пустое полноцветное изображение размерами x_size и y_size.
// Созданное изображение имеет черный фон.
imagecopyresized($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src);
// Функция imagecopyresized копирует прямоугольные области с одного изображения на другое
// вывод картинки и очистка памяти
imagejpeg($dest,$output,$q);
imagedestroy($dest);
imagedestroy($src);
}
if(isset($_POST['submit']))
{
if ($_FILES['img']['tmp_name']!="") {
// первая проверка на наличие загружаемого файла
$ext = substr($_FILES['img']['name'], 1 + strrpos($_FILES['img']['name'], '.'));
//получаем расширение загружаемого файла
if (in_array ($ext, $valid_types)) {
// сверяемся с массивом допустимых расширений и если совпадение найдено продолжаем работать
// если нет - выводим сообщение об ошибке
$imageinfo = getimagesize($_FILES['img']['tmp_name']);
// получаем информацию о загруженном файле
// функция getimagesize позволяет получить размер изображения в пикселях, а также mime-тип загруженного файла
if($imageinfo['mime'] == 'image/jpeg') {
// проверяем действительно ли загрузенный файл является рисунком, и если все правильно продолжаем работу
// такая проверка необходима для того, чтобы не было скрытой загрузки вредоносного исполняемого файла
// т.е. банальной смены расширения php на jpg и попытке загрузки его на сервер
$str="select max(id) from `table`";
$sql=@mysql_query($str);
$f=@mysql_fetch_array($sql);
$maxnum=($f['max(id)']);
$maxnum=($maxnum + 1);
// выбираем максимальное значение id с gallery_image и увеличиваем его на единицу
// это число и будет служить именем файла
$output=$maxnum.".".$ext;
// новое полное имя файла (добавили расширение к имени)
$input=$_FILES['img']['tmp_name'];
// временный файл который создается автоматически при загрузке изображения
createphoto($input,$dir.$output);
// вызов функции по работе с изображением.
// передаем два параметра: имя исходного изображения и то, которое нужно получить
if (file_exists($dir.$output)) {
// проверка на существование загруженного файла
$outputs = "http://site.ru/tpl/def/gallery/".$output;
echo "<p>файл загружен с именем ".$outputs."</p>";
$insert="UPDATE `table` SET `pic`='".$outputs."'";
$sql=mysql_query($insert);
//добавление в базу
}
else {
echo "файл не был загружен";
}
}
else echo "<p>Неверный тип загружаемого файла</p>";
}
else echo "<p>Данное расширение недопустимо для загрузки</p>";
}
else echo "<p>Следует загрузить файл</p>";
Спустя 31 минута, 2 секунды (18.04.2012 - 09:28) Studentillo написал(а):
значит, если у меня там в html не будет массива, мой цикл в скрипте отваливается?
Да, файл в той же директории
xpund, у тебя ведь там для одного рисунка?
Сделал так, заполняет все строки, но... что то не то с присвоением времени в качестве имени, как это сделать правильно?)) у меня там бред какой то, не присваивает ничего)
Да, файл в той же директории
xpund, у тебя ведь там для одного рисунка?
Сделал так, заполняет все строки, но... что то не то с присвоением времени в качестве имени, как это сделать правильно?)) у меня там бред какой то, не присваивает ничего)
<?php
$db = mysql_connect ("localhost","ivan","lehfrz1");
mysql_select_db ("avto",$db);
$img1 = $_FILES['img1'];
$img2 = $_FILES['img2'];
$img3 = $_FILES['img3']; //получаем переменные с фотографиями
$uploaddir = $_SERVER['DOCUMENT_ROOT']."/img/"; // Каталог, куда грузим
$god=$_POST['god'];
$cena=$_POST['cena'];
$telephone=$_POST['telephone'];
$email=$_POST['email'];
$name=$_POST['name'];
$models=$_POST['models'];
$marka=$_POST['marka'];
// А тут грузим их в каталог
$date = time();
imagejpeg($img1, $uploaddir.$date.".jpg");
move_uploaded_file( $uploaddir.$img1['name'], $img1['tmp_name'] );
$date = time();
imagejpeg($img2, $uploaddir.$date.".jpg");
move_uploaded_file( $uploaddir.$img2['name'], $img2['tmp_name'] );
$date = time();
imagejpeg($img3, $uploaddir.$date.".jpg");
move_uploaded_file( $uploaddir.$img3['name'], $img3['tmp_name'] );
$photoa1 = $uploaddir.$img1['name'];
$photoa2 = $uploaddir.$img2['name'];
$photoa3 = $uploaddir.$img3['name'];
$result2 = mysql_query ("INSERT INTO auto (marka,name,models,god,cena,telephone,email,img1,img2,img3) VALUES('$marka','$name','$models','$god','$cena','$telephone','$email','$photoa1','$photoa2','$photoa3')");
// Проверяем, есть ли ошибки
if ($result2=='TRUE')
echo "Вы успешно добавили объявление! Теперь вы можете зайти на сайт. <a href='index.html'>Главная страница</a>";
else
echo "Ошибка! Что-то пошло не так.... Объявление не добавлено";
?>
Спустя 1 час, 19 минут, 24 секунды (18.04.2012 - 10:47) Xpund написал(а):
imagejpeg($img1, $uploaddir.$date.mt_rand(1,100)".jpg");
move_uploaded_file( $uploaddir.$img1['name'], $img1['tmp_name'] );
$date = time();
imagejpeg($img2, $uploaddir.$date.mt_rand(101,1001)".jpg");
move_uploaded_file( $uploaddir.$img2['name'], $img2['tmp_name'] );
$date = time();
imagejpeg($img3, $uploaddir.$date.mt_rand(1002,2002).".jpg");
move_uploaded_file( $uploaddir.$img3['name'], $img3['tmp_name'] );
Можно рандом, но я не уверен, что правильно вписал, проверь!
Спустя 2 часа, 56 минут, 13 секунд (18.04.2012 - 13:43) justyork написал(а):
<form action="script.php" method="Post">
добавь внутрь enctype="multipart/form-data", это надпись означает, что ты будешь работать с файлами.
Картинки можешь оставить как были, только всегда закрывай тэги, т.е.
<input type="FILE" name="img[]"/><br>
<input type="FILE" name="img[]"/><br>
<input type="FILE" name="img[]"/>
теперь в пхп можешь достать их следущим образом
foreach($_FILES['img'] as $img) {
//теперь поочереди можно их загружать на сервер и в базу
//проверка на ошибки
if(count($img['error']) != 0)
die('Ошибка при загрузке файла!');
//берем времменное имя
$tmp_name = $img['tmp_name'] ;
/*Если нужно то расширение, которое было при загрузке, то: */
$t = explode('/', $img['type']);
$ext = $t[1];
$new_name = /*Новое имя файла*/;
//копируем файл на сервер
copy($tmp_name, '/upload/img'.$new_name.$ext)
//копируем в базу
mysql_query("INSERT INTO `img` SET `name` = '{$new_name}'");
}
Я особых проверок не делал, там можно сделать проверки на размер файла, на тип файла и тд. Ну так должно работать
Цитата |
mt_rand(1002,2002) |
лучше сделать md5(time())
Спустя 2 часа, 51 секунда (18.04.2012 - 15:44) Studentillo написал(а):
Спасибо вам огромное! Единственное место, где мне действительно помогли!)