Pactz
Pactz

Reputation: 1

trying to add more than one picture onto webpage php

I am trying to add more than one picture to the webpage but it only allows me to add 1. Im trying to add more than 3 images onto the webpage, All ive done is add a button that allows you to select the file but i want more that 1 files and minimum of 4 pictures to be uploaded heres the code:

<section class="left">
    <ul>
        <li><a href="manufacturers.php">Manufacturers</a></li>
        <li><a href="bikes.php">Bikes</a></li>

    </ul>
</section>

<section class="right">


<?php


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

    $stmt = $pdo->prepare('INSERT INTO bikes (model, description, price, manufacturerId) 
                           VALUES (:model, :description, :price, :manufacturerId)');

    $criteria = [
        'model' => $_POST['model'],
        'description' => $_POST['description'],
        'price' => $_POST['price'],
        'manufacturerId' => $_POST['manufacturerId']
    ];

    $stmt->execute($criteria);

    if ($_FILES['image']['error'] == 0) {
        $fileName = $pdo->lastInsertId() . '.jpg';
        move_uploaded_file($_FILES['image']['tmp_name'], '../images/bikes/' . $fileName);
    }

    echo 'Bike added';
}
else {
    if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true) {
    ?>


        <h2>Add Product</h2>

        <form action="addbike.php" method="POST" enctype="multipart/form-data">
            <label>Bike Model</label>
            <input type="text" name="model" />

            <label>Description</label>
            <textarea name="description"></textarea>

            <label>Condition</label>
            <input type="text" name="Condition" />

            <label>Price</label>
            <input type="text" name="price" />

            <label>Category</label>

            <select name="manufacturerId">
            <?php
                $stmt = $pdo->prepare('SELECT * FROM manufacturers');
                $stmt->execute();

                foreach ($stmt as $row) {
                    echo '<option value="' . $row['id'] . '">' . $row['name'] . '</option>';
                }

            ?>

            </select>

            <label>Bike image</label>

            <input type="file" name="image" />

            <input type="submit" name="submit" value="Add Product" />

        </form>



    <?php
    }

    else {
        ?>
        <h2>Log in</h2>

        <form action="index.php" method="post">
            <label>Username</label>
            <input type="text" name="username" />

            <label>Password</label>
            <input type="password" name="password" />

            <input type="submit" name="submit" value="Log In" />
        </form>
    <?php
    }

}
?>

Upvotes: 0

Views: 36

Answers (2)

Mr.Throg
Mr.Throg

Reputation: 1005

You can select multiple files at a time but you need to add multiple then you can select files like this.

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <form action="upload.php" method="post" multipart="" enctype="multipart/form-data">
        <input type="file" name="img[]" multiple>
        <input type="submit">
    </form>
</body>
</html>

<?php
echo '<pre>';
$img = $_FILES['img'];

if(!empty($img))
{
    $img_desc = reArrayFiles($img);
    print_r($img_desc);

    foreach($img_desc as $val)
    {
        $newname = date('YmdHis',time()).mt_rand().'.jpg';
        move_uploaded_file($val['tmp_name'],'./uploads/'.$newname);
    }
}

function reArrayFiles($file)
{
    $file_ary = array();
    $file_count = count($file['name']);
    $file_key = array_keys($file);

    for($i=0;$i<$file_count;$i++)
    {
        foreach($file_key as $val)
        {
            $file_ary[$i][$val] = $file[$val][$i];
        }
    }
    return $file_ary;
}

Upvotes: 0

Naincy
Naincy

Reputation: 2943

To allow multiple file selection from input file will be like

<input type="file" name="image" multiple>

To fetch all the files selected

print_r($_FILES); // will return you detail of all files in array

The multiple attribute of the input tag is not supported in Internet Explorer 9 and earlier versions.

Upvotes: 1

Related Questions