[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Заполнение бд
Studentillo
Доброе время суток!
Такая проблема, данный скрипт должен заполнять строчку бд. Но... ссылки картинки никак не хотят прописываться в строчке 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, то если я не ошибаюсь, при обработке фоток индекс счетчика будет стоять после индекса с именем, но нужны остатки.
$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
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 написал(а):
Попробуй:

$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, у тебя ведь там для одного рисунка?

Сделал так, заполняет все строки, но... что то не то с присвоением времени в качестве имени, как это сделать правильно?)) у меня там бред какой то, не присваивает ничего)

<?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 написал(а):
Спасибо вам огромное! Единственное место, где мне действительно помогли!) user posted image
Быстрый ответ:

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