качване на две изображения едновременно и в един ред 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)


Бърз Google:

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 различни бутона, по 1 за всяко изображение? Защо просто не преоразмерите изображението в 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

Ако имате затруднения с изпращането на повече от 1 изображение към .php, важно е да поставите [] в края на името на въведеното. Мислех, че трябва да спомена, че понеже прекарах последните няколко часа, чудейки се защо PHP не открива повече от 1 файл.

person Blue    schedule 26.11.2014