Мулти ъплоуд

tyrla4eto

Registered
Здравейте, използвам този урок "http://web-tourist.net/login/login/view.php?st=2211" за ъплоуд форма на изображение и запис на УРЛ-то в базата данни. Въпросът ми е как мога да го направя да може да се качва по повече от 1 изображение наведнъж?
 
PHP:
<form method='post' enctype="multipart/form-data">
<input type='file' multiple name='files' />
<button type='submit' name='upload'> качи</button>
</form>
<?php
if(isset($_POST['upload']))
{
    $files = $_FILES['files'];
   
echo "<pre>".print_r($files)."</pre>";

}
?>

И вече си обхождаш с някой цикъл(който ти харесва) и правиш каквото искаш с файловете :) :idea: :?:
 
joTunkiq каза:
PHP:
<form method='post' enctype="multipart/form-data">
<input type='file' multiple name='files' />
<button type='submit' name='upload'> качи</button>
</form>
<?php
if(isset($_POST['upload']))
{
    $files = $_FILES['files'];
   
echo "<pre>".print_r($files)."</pre>";

}
?>

И вече си обхождаш с някой цикъл(който ти харесва) и правиш каквото искаш с файловете :) :idea: :?:

Стана по начина, по който каза с цикъл, но сега идва друг проблем. Трябва ми всичките изображения, които са качени, да се вземе пътя до всяко 1 от тях и да се запази в базата данни в 1 и съща таблица, но ако направя заявка ми добавя 2 еднакви полета в базата. Някакви идеи как трябва да стане това?
 
PHP:
$f = $_FILES['files'];
foreach($f as $file)
{
	 $ime = $file['name'];
	 $size = $file['size'];
	 $type = $file['type'];
	 $tp = $file['tmp_name'];

	 $putq = 'putq/do/papkata/na/snimkata/'.$ime;
	 move_uploaded_file($tp, $putq);

	 // mysqli_query("INSERT INTO .... ");
}


От тука натакак си ти. Прегледай някой друг урок, трябват ти знания за работа с файловете :idea: :?:
 
joTunkiq каза:
PHP:
$f = $_FILES['files'];
foreach($f as $file)
{
	 $ime = $file['name'];
	 $size = $file['size'];
	 $type = $file['type'];
	 $tp = $file['tmp_name'];

	 $putq = 'putq/do/papkata/na/snimkata/'.$ime;
	 move_uploaded_file($tp, $putq);

	 // mysqli_query("INSERT INTO .... ");
}


От тука натакак си ти. Прегледай някой друг урок, трябват ти знания за работа с файловете :idea: :?:


Точно така го направих, въпросът ми беше друг, когато кача 2-3 файла и цикълът се изпълнява 2-3пъти, тоест прави 2-3 заявки към базата, което прави 2-3 реда в базата, а на мен ми трябват всичките да отидат на 1 ред в 1 поле...
 
PHP:
$f = $_FILES['files'];
$snimki = array();

foreach($f as $file)
{
	$ime = $file['name'];
	$size = $file['size'];
	$type = $file['type'];
	$tp = $file['tmp_name'];

	$putq = 'putq/do/papkata/na/snimkata/'.$ime;
	move_uploaded_file($tp, $putq);

	$snimki[] = $putq;
}

$vishchki_snimki = implode(",", $snimki); // записва на 1 ред и ги разделя със запетая.

mysqli_query(INSERT ...  );
:arrow: :idea: :?: :?:
 
Ясно, но сега пък, когато кача файловете и нищо в смисъл давам да ми принтне името на файловете и ми вади само 1-вата буква от файла.... А не цялото име, също така променливата $size е празна... Ето го целия код, който имам..

Код:
if(isset($_FILES['files'])) {
$f = $_FILES['files'];
$snimki = array();
foreach($f as $file)
{
$ime = $file['name'];
$size = $file['size'];
$type = $file['type'];
$tp = $file['tmp_name'];
echo $ime;
$putq = 'upload/uploads/'.$ime;
$extensions = array("jpg", "gif", "jpeg", "png");
$extension_file = end(explode(".",$ime)); 
$extension_file = strtolower($extension_file);
if(file_exists($putq)){
echo '<div class="redalert">Файлът вече съществува</div>'; 
} elseif($size==0){ 
echo '<div class="redalert">Файлът е повреден</div>'; 
} elseif($size>9999999999){ 
echo '<div class="redalert">Файлът е твърде голям</div>'; 
} elseif(!in_array($extension_file,$extensions)) {
    echo '<div class="redalert">Непозволен тип файл</div>';
} else {
$upload=move_uploaded_file($tp, $putq);
}
}
$vishchki_snimki = implode(",", $snimki);
$q=mysql_query("НЯКФА ЗАЯВКА") or die(mysql_error());  
if($q){ 
echo '<div class="greenalert">Успешно!</div>'; 
}else{ 
echo "Грешка</center>"; 
exit; 
}
}
 
Братле, отиваш в гугъл и търсиш. Аз ти казах да си прегледаш знанията за работа с файлове. Аз ти давам примерен код, цяло чудо е че работи ;)

http://php.net/manual/en/reserved.variables.files.php - ето разгледай тука какво връща масива. Не седнеш ли да ги разбереш, няма да успееш да се справяш в бъдеще с по-сложни задачи с файлове. :?:
 
когато кача файловете и нищо в смисъл давам да ми принтне името на файловете и ми вади само 1-вата буква от файла.... А не цялото име, също така променливата $size е празна

Когато си дал input полето да е multiple, трябва да кажеш, че ще е масив от елементи:

<input type="file" name"files[]" />

Защото в момента:

Код:
$f = $_FILES['files'];

e първата/последна (idk) снимка. И когато направиш:

Код:
foreach($f as $file)

най-вероятно итерира стринг. Или нещо такова. Ето ти линк към документацията от php за ъплоудване на multiple files.

http://php.net/manual/en/features.file-upload.multiple.php
 
@Fakeheal, да тук ми е била грешката не съм добавил "[]". Сега работи нормално всичко. Благодаря и на двама Ви!!!
 

Back
Горе