Качване на десет снимки едновремено

pro12

Registered
Дано не съм ви станал досаден. Това ми е кода за качване на снимка.
PHP:
<?php
include("con.php");

if(isset($_POST['izprati'])){ 

$tmp_name = $_FILES['plugin']['tmp_name'];
$filename = $_FILES['plugin']['name'];
$format = end(explode(".", $filename));
 
else { 
$img= 'upload/'.$filename.'';
move_uploaded_file($tmp_name, $img);
$sql = ("INSERT INTO news(img) VALUES('$img')"); 
if($format != "jpg") {
echo "Формата, който сте избрали е непозволен!";}
if ($conn->query($sql) === TRUE) {
    echo "Новината е добавена!";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
}
}
?>
Как моге да направя да качвам до 10 снимки и да ги записвам в дб? В дб ще имам 10 полета в дб.
 
Код:
<input type='file' name='upload[]' multiple/>

После в PHP просто ги loop-ваш
Код:
<?php
for($i=0;$c= count($_FILES['upload']);$i<$c;$i++) {
//...
$filename = $_FILES['upload'][$i]['name'];
}

Направи си и една таблица pictures( id, user_id, name), където ще запазваш снимките
 
Тоест правя си отделна таблица за снимките. Примерно искам да кача 10снимки към новина, но новината и снимките са в различни таблици. Как ще ги свържа? Трябва да запиша идто на новината към снимките. Но как ще взимат ид на новината като все още го няма в дб?
 
pro12 каза:
Тоест правя си отделна таблица за снимките. Примерно искам да кача 10снимки към новина, но новината и снимките са в различни таблици. Как ще ги свържа? Трябва да запиша идто на новината към снимките. Но как ще взимат ид на новината като все още го няма в дб?
Не може ли да запишеш първо новината?
 
Намерих това и малко го преправих. Ако съм избрал само еда снимка дава това Notice: Use of undefined constant name - assumed 'name' in C:\xampp\htdocs\p\addsell.php on line 57

Notice: Use of undefined constant name - assumed 'name' in C:\xampp\htdocs\p\addsell.php on line 58
Снимка 2 използва неразрешен формат!Снимка 3 използва неразрешен формат!Снимка 4 използва неразрешен формат!Снимка 5 използва неразрешен формат!Снимка 6 използва неразрешен формат!


Notice: Undefined variable: name2 in C:\xampp\htdocs\p\addsell.php on line 64

Notice: Undefined variable: name3 in C:\xampp\htdocs\p\addsell.php on line 64

Notice: Undefined variable: name4 in C:\xampp\htdocs\p\addsell.php on line 64

Notice: Undefined variable: name5 in C:\xampp\htdocs\p\addsell.php on line 64

Notice: Undefined variable: name6 in C:\xampp\htdocs\p\addsell.php on line 64
Излизат грешки но записва в дб и фаила качва
PHP:
<?php

include ("conf.php");
if (isset($_POST['submit'])){

$marka = htmlspecialchars(addslashes($_POST['marka'])); 
$cena = htmlspecialchars(addslashes($_POST['cena'])); 
$pic1 = $_FILES['pic1']['name'];
$pic2 = $_FILES['pic2']['name'];
$pic3 = $_FILES['pic3']['name'];
$pic4 = $_FILES['pic4']['name'];
$pic5 = $_FILES['pic5']['name'];
$pic6 = $_FILES['pic6']['name'];


for ($i = 1; $i <=6; $i++){
$a = $_FILES['pic'.$i.'']['name'];
$b = explode(".",$a);
$c = count($b);
$d = $b[$c-1];
$e = array("JPG","JPEG","jpg","jpg");
if (in_array($d,$e)){


$path = "upload/";
$datename = date("YmdHis"); //2010/09/01 24:00:00
${name.$i} = $datename."_"."pic"."_".$i.".".$d;
move_uploaded_file($_FILES['pic'.$i.'']["tmp_name"], $path.${name.$i});
}
else{
echo "Снимка $i използва неразрешен формат!";
}}

$sql = ("INSERT INTO zaqvka (gr_name, picture1, picture2, picture3, picture4, picture5, picture6) VALUES('$gr_name','$name1','$name2','$name3','$name4','$name5','$name6')") ;
if ($conn->query($sql) === TRUE) {
    echo "Новината е добавена!";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

}


?>
 
Нотисите винаги можеш да ги скриеш но има други много по сериозни бъгове този код. Пробвах го с три снимки и три полета в базата. Дублира снимката в полетата и за три снимки прави три записа в базата с три различни ид-та. С две думи не жужи :D .
 
PHP:
<?php

include ("conf.php");
echo '<br><br><br><form name="upload" enctype="multipart/form-data" method="POST" style="text-align: center">';
for ($i = 1; $i <= 6; $i++)
{
echo 'File'.$i.': <input type="file" name="pic'.$i.'" size="34" value=""><br><br>';
}
echo '<input type="submit" name="upload" value="Upload"><p> ';
echo '</form>'; 
if (isset($_POST['upload'])){





for ($i = 1; $i <=6; $i++){
$filename = $_FILES['pic'.$i.'']['name']; 
$format = end(explode(".", $filename));
$tmpname_file = $_FILES['pic'.$i.'']['tmp_name']; 
$path = "upload/";
$datename = date("YmdHis"); //2010/09/01 24:00:00
@${name.$i} = $datename."_"."pic"."_".$i.".".$filename;

move_uploaded_file($tmpname_file, $path.@${name.$i}); 
}


@$sql = ("INSERT INTO zaqvka (picture1, picture2, picture3, picture4, picture5, picture6) VALUES('$name1','$name2','$name3','$name4','$name5','$name6')") ;
if ($conn->query($sql) === TRUE) {
    echo "Новината е добавена!";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

}


?>
Промених го още записва една заявка но ако кача една снимка в папката е една сника а и 6 полета в дб прави запис.
 
Да това е проблем защото се ползват някакви цикли. Мога да ти покажа как да го направиш без цикли и ще работи безотказно, но е малко повече кода за 6 снимки.
 
Ок ето кода за три снимки, за останалите ще си го допишеш. Виж да си преправиш името на базата, името на таблицата, имената на колоните.

Код:
<form action="" method="post" enctype="multipart/form-data">
                <p>Pictures:
                    <input type="file" name="pic1" />
                    <input type="file" name="pic2" />
                    <input type="file" name="pic3" />
                    <input type="submit" value="submit" />
                </p>
            </form>

Код:
<?php
            $host = 'localhost';
            $username = '';
            $password = '';
            $dbName = 'proba';

            $conn = mysqli_connect($host, $username, $password, $dbName);

            if (!$conn) {
                echo 'Connection Failed';
                exit;
            }

            $name1 = $_FILES['pic1']['name'];
            $name2 = $_FILES['pic2']['name'];
            $name3 = $_FILES['pic3']['name'];

            $tmp_name1 = $_FILES['pic1']['tmp_name'];
            $tmp_name2 = $_FILES['pic2']['tmp_name'];
            $tmp_name3 = $_FILES['pic3']['tmp_name'];

            $uploadPath = 'upload/';

            if ($name1 != NULL) {
                $newName1 = $uploadPath . mt_rand() . $name1;
            } else {
                $newName1 = '';
            }
            if ($name2 != NULL) {
                $newName2 = $uploadPath . mt_rand() . $name2;
            } else {
                $newName2 = '';
            }
            if ($name3 != NULL) {
                $newName3 = $uploadPath . mt_rand() . $name3;
            } else {
                $newName3 = '';
            }

            move_uploaded_file($tmp_name1, $newName1);
            move_uploaded_file($tmp_name2, $newName2);
            move_uploaded_file($tmp_name3, $newName3);

            $sql = 'INSERT INTO pics (pic1, pic2, pic3) VALUES ("' . $newName1 . '", "' . $newName2 . '", "' . $newName3 . '")';
            $conn->query($sql);
            ?>
 
Малко го преработих. Направих проверка на големината до 500кб или 500000бита. Но ка то сложа ограничението 1 мб в баити и мога да кчвам и 2мб защо?
 
Имам още един въпрос. Имам шест полета за снимки в дб. Ако кача примерно 5 снимки и при извеждането ми излиза бяло поле за шестата снимка. Мога ли да го скрия ако няма запис в дб в колона шест?
Измислих го но не знам как да го направя.
Место бяло квадратче с х да пише няма снимка. Как се прави това?
 

Back
Горе