загрузка двух изображений одновременно и в одну строку php pdo

<form method="POST" action="crud.php" enctype="multipart/form-data" >
<div style="background-color:#252323; color:#FFFFFF; "><b>Image Gallery</b></div>
<table>
<tr>
<td valign="top">
<label for="description">Big Image</label>
</td>
<td valign="top" style="text-align:right">
<input type="file" name="image" /></br>
</td>
</tr>
<tr>
<td valign="top">
<label for="description">Thumbnail Image</label>
</td>
<td valign="top" style="text-align:right">
<input type="file" name="image" /></br>
</td>
</tr>
</table>
<input id="button" type="submit" value="Add" name="imagegalleryadd"/>
</form>

Это моя форма, в ней есть два загружаемых изображения с одной кнопкой. Я хочу загрузить два изображения одновременно и поместить их в два отдельных столбца в базе данных, потому что я буду использовать эти два изображения в слайдере: одно для большого изображения, а другое для миниатюры. я пытался загрузить только одно изображение, и это было хорошо, но как загрузить два изображения одновременно, это мой код для добавления изображений. Этот код загружает только одно изображение, как его можно изменить, чтобы загрузить два?

function AddImageGallery(){
global $dbh;
    if(is_uploaded_file($_FILES["image"]['tmp_name'])){ 
        $folder = "images/imagegallery/"; 
        $file = basename( $_FILES['image']['name']); 
        $full_path = $folder.$file; 
        if(move_uploaded_file($_FILES['image']['tmp_name'], $full_path)) {
            echo "succesful upload, we have an image!";
            $stmt = $dbh->prepare("INSERT INTO imagegallery (imggall_imageurl) VALUES (?)");
            $stmt->bindValue(1,$full_path,PDO::PARAM_STR);
            if($stmt->execute()){
                echo "Image Recorded";
            }else{
                echo "Image was not Recorded";
            }

        } else { 
           echo "upload received! but process failed";

        } 
    }else{ 
        echo "upload failure ! Nothing was uploaded";
    }   
}

база данных будет выглядеть так

$sql ="CREATE TABLE IF NOT EXISTS $imagegallery ( 
        imggall_id int(40) NOT NULL AUTO_INCREMENT PRIMARY KEY,
        imggall_imageurl VARCHAR(1000) NOT NULL, 
        imggall_thumnailurl VARCHAR(1000) NOT NULL);" ;
        $dbh->exec($sql);

UPDATE

новый код я пробовал

function AddImageGallery(){
    global $dbh;
    if(is_uploaded_file($_FILES["bigimage"]['tmp_name'] && $_FILES["thumbnailimage"]['tmp_name'] )){ 
        $folder = "images/imagegallery/"; 
        $filebi = basename( $_FILES['bigimage']['name']); 
        $fileti = basename( $_FILES['thumbnailimage']['name']); 
        $fileti = basename( $_FILES['thumbnailimage']['name']); 
        $fullbi_path = $folder.$filebi; 
        $fullti_path = $folder.$fileti; 
        if(move_uploaded_file($_FILES['bigimage']['tmp_name'], $fullbi_path && $_FILES['thumbnailimage']['tmp_name'], $fullti_path )) {
            echo "succesful upload, we have an image!";
            $stmt = $dbh->prepare("INSERT INTO imagegallery (imggall_imageurl,imggall_thumnailurl) VALUES (?,?)");
            $stmt->bindValue(1,$fullbi_path,PDO::PARAM_STR);
            $stmt->bindValue(2,$fullti_path,PDO::PARAM_STR);
            if($stmt->execute()){
                header("Location: dashboard.php");
                exit;
                echo "Image Recorded";
            }else{
                echo "Image was not Recorded";
            }
        } else { 
           echo "upload received! but process failed";

        } 
    }else{ 
        echo "upload failure ! Nothing was uploaded";
    }   
}



<form method="POST" action="crud.php" enctype="multipart/form-data" >
<div style="background-color:#252323; color:#FFFFFF; "><b>Image Gallery</b></div>
<table>
<tr>
<td valign="top">
<label for="description">Big Image</label>
</td>
<td valign="top" style="text-align:right">
<input type="file" name="bigimage" /></br>
</td>
</tr>
<tr>
<td valign="top">
<label for="description">Thumbnail Image</label>
</td>
<td valign="top" style="text-align:right">
<input type="file" name="thumbnailimage" /></br>
</td>
</tr>
</table>
<input id="button" type="submit" value="Add" name="imagegalleryadd"/>
</form>

person Brownman Revival    schedule 09.09.2014    source источник
comment
$_FILE['user'] не $_FILES['image']['name'] для загрузки 2 используйте foreach($_FILE['user'] as $img)   -  person Saqueib    schedule 09.09.2014
comment
обновите вопрос, извините за неправильную информацию, я пробовал другой подход, я забыл изменить его на исходный код ... пожалуйста, будьте более конкретными с ответом теперь, когда я обновил вопрос   -  person Brownman Revival    schedule 09.09.2014
comment
нет, вы не можете использовать одно и то же имя ввода для двух полей, вместо этого используйте <input type="file" name="image[]" />   -  person Saqueib    schedule 09.09.2014
comment
как я сохраню его в 1 строку в базе данных? если я буду использовать его таким образом, он сохранит в две строки правильно?   -  person Brownman Revival    schedule 09.09.2014


Ответы (3)


Быстрый Гугл:

http://php.net/manual/en/features.file-upload.multiple.php#53240

Показывает четкий и простой способ загрузки нескольких изображений.

Цитировать:

function reArrayFiles(&$file_post) {

    $file_ary = array();
    $file_count = count($file_post['name']);
    $file_keys = array_keys($file_post);

    for ($i=0; $i<$file_count; $i++) {
        foreach ($file_keys as $key) {
            $file_ary[$i][$key] = $file_post[$key][$i];
        }
    }

    return $file_ary;
}

if ($_FILES['upload']) {
    $file_ary = reArrayFiles($_FILES['ufile']);

    foreach ($file_ary as $file) {
        print 'File Name: ' . $file['name'];
        print 'File Type: ' . $file['type'];
        print 'File Size: ' . $file['size'];
    }
}

Для тебя:

<form method="POST" action="crud.php" enctype="multipart/form-data" >
  <input type="file" name="image[]" />
  <input type="file" name="image[]" />
  <input id="button" type="submit" value="Add" name="imagegalleryadd"/>
</form>

Затем, используя ранее связанную функцию

if ($_FILES['upload']) {
    $file_ary = reArrayFiles($_FILES['ufile']);

    $main = $file_ary[0]['name'];
    $thumb = $file_ary[1]['name'];
    // Upload to DB 
}
person James Lalor    schedule 09.09.2014
comment
пожалуйста, прочитайте вопрос, так как ваша ссылка загружается не так, как вопрос, он будет загружать несколько вопросов, но с другим идентификатором, другой строкой, что я хочу, это 1 идентификатор и 1 строка, пожалуйста, внимательно прочитайте .. - person Brownman Revival; 09.09.2014
comment
Это зависит от вас и от того, как вы структурируете свою базу данных. столбцы: id, img1, img2. Просто загрузите $file_ary[0] и $file_ary[1] в каждый столбец img, как описано в сообщении пользователя. - person James Lalor; 09.09.2014
comment
Мне трудно понять, что именно вы хотите. - person James Lalor; 09.09.2014
comment
у меня есть две кнопки загрузки, каждая с одинаковым изображением, но разного размера, одна для большого изображения, одна для миниатюры, теперь я хочу сохранить два изображения одновременно в одной строке, чтобы я мог использовать их вместе в слайдере. - person Brownman Revival; 09.09.2014
comment
Итак, это одно и то же изображение, и у вас есть 2 разные кнопки, по одной для каждого изображения? Почему бы просто не изменить размер изображения в php или просто задать ширину и высоту изображения в css? - person James Lalor; 09.09.2014
comment
если я это сделаю, он будет искажен пикселями, поэтому мне нужно сохранить два изображения, чтобы изображение выглядело хорошо. - person Brownman Revival; 09.09.2014
comment
Хорошо, так зачем вам 2 кнопки отправки, а не 1 кнопка для загрузки обеих? - person James Lalor; 09.09.2014
comment
как вы можете загрузить 2 изображения только с помощью кнопки i? - person Brownman Revival; 09.09.2014
comment
Может быть, вы можете загрузить одно изображение и изменить его размер с помощью php? - person Marc Bouvier; 09.09.2014
comment
@MarcBouvier, я уже пробовал, но он будет искажен в пикселях, так что это не очень хорошая идея. - person Brownman Revival; 09.09.2014
comment
Если вы можете помочь мне здесь, @JamesLalor будет очень признателен. stackoverflow.com/questions/26304446/ - person Brian Cherdak; 10.10.2014

<form method="POST" action="crud.php" enctype="multipart/form-data" >
<div style="background-color:#252323; color:#FFFFFF; "><b>Image Gallery</b></div>
<table>
    <tr>
    <td valign="top">
        <label for="description">Big Image </label>
    </td>
    <td valign="top">
        <input type="file" name="bigimage" /></br>
    </td>
    </tr>
    <tr>
    <td valign="top">
        <label for="description">Thumbnail Image </label>
    </td>
    <td valign="top">
        <input type="file" name="thumbnailimage" /></br>
    </td>
    </tr>
    </table>
        <input id="button" type="submit" value="Add" name="imagegalleryadd"/>
    </form>    

function AddImageGallery(){
        global $dbh;
        if(is_uploaded_file($_FILES["bigimage"]['tmp_name'] )){ 
            $folder = "images/imagegallery/"; 
            $filebi = basename( $_FILES['bigimage']['name']); 
            $fileti = basename( $_FILES['thumbnailimage']['name']); 
            $fileti = basename( $_FILES['thumbnailimage']['name']); 
            $fullbi_path = $folder.$filebi; 
            $fullti_path = $folder.$fileti; 
            if(move_uploaded_file($_FILES['bigimage']['tmp_name'], $fullbi_path)) {
                if(move_uploaded_file($_FILES['thumbnailimage']['tmp_name'], $fullti_path )) {
                echo "succesful upload, we have an image!";
                $stmt = $dbh->prepare("INSERT INTO imagegallery (imggall_imageurl,imggall_thumnailurl) VALUES (?,?)");
                $stmt->bindValue(1,$fullbi_path,PDO::PARAM_STR);
                $stmt->bindValue(2,$fullti_path,PDO::PARAM_STR);
                if($stmt->execute()){
                    header("Location: dashboard.php");
                    exit;
                    echo "Image Recorded";
                }else{
                    echo "Image was not Recorded";
                }
                }
            } else { 
               echo "upload received! but process failed";

            } 
        }else{ 
            echo "upload failure ! Nothing was uploaded";
        }   
    }

кто-нибудь может попробовать это, я смог получить то, что

person Brownman Revival    schedule 09.09.2014

Если у вас возникли трудности с отправкой более одного изображения в .php, очень важно поставить [] в конце вашего имени ввода. Думаю, я должен упомянуть, что последние несколько часов я провожу, задаваясь вопросом, почему PHP не обнаруживает более 1 файла.

person Blue    schedule 26.11.2014