Upload multiple et enregistrement en bbd

Fermé
rubikspirit - 17 juil. 2010 à 01:05
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 18 juil. 2010 à 16:29
Bonjour ou bonsoir !

Voilà, je suis actuellement en train de développer pour un site Web une galerie photo, j'arrive à gérer la création de dossiers par la base de données mais mon plus gros soucis n'est pas là...

Il faut maintenant que je travaille sur le script l'upload de fichiers et l'enregistrement des photos dans la base de donnée.
Disons que pour une seule photo à la fois, je me débrouille tout seul, mais je voudrais faire un formulaire d'envoi multiples, et ce, en passant par un seul champ file (pas de Photo 1 : ... Photo 2 : ... Photo 3 : ... Envoyer)

Est-ce quelqu'un peu me guider un peu dans cette histoire, ou bien me conseiller des scripts existant qui réalisent cette fonction ?


Ah oui, j'allais oublié, je vais vous montrer un peu la structure de la base de données que j'ai actuellement :

BBD : gallery
-> albums
ID_album
titre
description

-> images
ID_photo
ID_dossier
nom_photo

Voila, voilou... Bon, disons que pour faire un enregistrement SQL, ça va, mais comment faire plusieurs enregistrements (1 pour chaque image uploadée dans un seul post), là je coince vraiment...
Egalement, pour l'upload, vous aurez pu voir en regardant ma structure, qu'il a la possibilité de créer des albums mais pour l'upload, pas besoin de gérer ça, je me contenterai de tout envoyer dans le même dossier...


Merci à vous tous pour votre aide si précieuse ! Bravo !!



A voir également:

2 réponses

Personne n'a une petite idée sur le sujet ?
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 500
Modifié par avion-f16 le 18/07/2010 à 16:30
Salut.

Si, mais c'est assez long à expliqué.

Tout d'abord, tes inputs doivent avoir le même "name" et tu dois mettre "[]" à la fin de celui-ci.
Exemple :
<input type="file" name="images[]" />  
<input type="file" name="images[]" />  
<input type="file" name="images[]" />


Grâce à cette technique, $_FILES['images']['...'] aura autant d'entrée qu'il y a d'input.
Les "..." correspondent à "tmp_name", "size", "type", "error" et "name".
Par exemple :
$_FILES['images']['error'][0]  
$_FILES['images']['error'][1]  
$_FILES['images']['error'][2]

$_FILES['images']['...'] est donc un array, nous allons l'explorer avec la structure foreach. Il faut stocker dans une variable le nombre du dernier crochet, et l'incrémenter à la fin de la boucle. Grâce à cette variable, nous pourrons récupérer les données sur le fichier, et le traiter.

Voilà le minimum :
<?php 
if(isset($_FILES['images'])) { 
    $nb = 0; 
    foreach($_FILES['images']['error'] as $error) { 
        $tmp_name = $_FILES['images']['tmp_name'][$nb]; 
        $name = $_FILES['images']['name'][$nb]; 
        $size = $_FILES['images']['size'][$nb]; 
        $type = $_FILES['images']['type'][$nb]; 

        // Traitement du fichier ici 

        $nb++; 
    } 
} 
?>
0