+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Candidat au titre de Membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    janvier 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : janvier 2013
    Messages : 34
    Points : 14
    Points
    14

    Par défaut insertion bdd suite a une boucle foreach

    Bonjour a tous
    je suis en train de faire un code pour uploader plusieurs photos,

    pour le moment au moment de l'insertion il me rentre une photo par entrée, il me met la photo1 sur une entrée, la photo2 sur une autre entrée et idem pour la 3.

    je suis sur de faire une erreur mais apres pas mal de recherche et peu de connaisse je suis dans le flou ....

    j'aimerais qu'il me rentre la photo1 dans le champ photo1,la photo2 dans le champ photo2 sur la meme entrée

    voici le code complet
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    <?php
    require('connect.php');
     
    if(!empty($_FILES))
    {
           foreach($_FILES["photo"]["name"] as $key => $name)
     
           {
     
     
     
           // Définition des variables
          $photo = $_FILES['photo'];
          $photo_name = $photo['name'][$key];
          $file_tmp =$_FILES['photo']['tmp_name'][$key];
          $file_type=$_FILES['photo']['type'][$key];   
          $ext = strtolower(substr(strrchr($_FILES["photo"]["name"][$key],'.'),1));
          $ext_aut = array('jpg','jpeg','png','gif');
          $max_size = 1048576;
          $size = $photo['size'][$key];
     
          //si input vide on passe
          if(!$_FILES["photo"]["name"][$key]) continue;
     
     
     
     
        //test de l'extension
     
             if(!in_array($ext, $ext_aut)) //Si l'extension n'est pas dans le tableau
               {
                 $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg';//on créer une variable erreur
               }
     
        // test de la taille
     
             if($size > $max_size)//Si La taille est trop grande  
               {
                  $erreur = 'Le fichier est trop gros...';// on définit un erreur pour la taille
               }
     
             if(!isset($erreur))//Si il n'y a pas d'erreur
     
        //traitement de la photo
               {
              $path_to_image = 'photos/fullsize/';
              $path_to_min = 'photos/mini/';
        //renommage de la photo
              $filename = sha1(uniqid($photo_name[$key])); 
     
              $source = $photo['tmp_name'][$key];
              $target = $path_to_image . $filename. '.'. $ext;
       // deplacement de la photo dans fullsize
              move_uploaded_file($source,$target);
     
              if($ext == 'jpg' || $ext == 'jpeg') {$im = imagecreatefromjpeg($path_to_image.$filename.'.'.$ext);}
              if($ext == 'png') {$im = imagecreatefrompng($path_to_image.$filename.'.'.$ext);}
              if($ext == 'gif') { $im = imagecreatefromgif($path_to_image.$filename.'.'.$ext);}
              $ox = imagesx($im);
              $oy = imagesy($im);
     
        // reduction de la photo
            $nom_image = $filename.$key.'.'.$ext;
            $nx = 80;
            $ny = floor($oy *($nx/$ox));
            $nm = imagecreatetruecolor($nx,$ny);
     
            imagecopyresized($nm, $im, 0,0,0,0, $nx,$ny,$ox,$oy);
     
            imagejpeg($nm, $path_to_min.$filename.'.'.$ext);
     
     
        // insertion dans la base de donnée
            $req = $bdd->prepare('INSERT INTO upload(photo'.$key.') VALUES(:photo)');
            $req->execute(array('photo'=>$nom_image));
            $req->closeCursor();
     
            }
          }
     
     
     
    }
     
    ?>
     
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link rel="stylesheet" type="text/css" href="style.css" media="all" />
        <title></title>
    </head>
    <body>
        <div id="content">
     
     
     
            <?php if(isset($erreur)):?>
     
            <div class="error"><?php echo $erreur;?></div>
     
            <?php endif;?>
     
            <form action="" enctype="multipart/form-data" method="post">
     
                <label for="photo">Charger une photo :</label>
                <input type="file" name="photo[1]" /><br />
                <input type="file" name="photo[2]" /><br />
                <input type="file" name="photo[3]" /><br />
     
     
                <input type="submit" class="submit" value="Charger" />
     
            </form>
     
     
     
     
     
            </div>
     
     
        </div>
    </body>
    </html>
    d'avance merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    21 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 576
    Points : 31 444
    Points
    31 444

    Par défaut

    En fait, le résultat que tu obtiens est meilleur que celui que tu cherches à obtenir.

    A moins que le nombre de 3 photos soit une limite absolu, il vaut mieux, dans une logique relationnelle avoir une table photo avec une entrée par photo.

  3. #3
    Candidat au titre de Membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    janvier 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : janvier 2013
    Messages : 34
    Points : 14
    Points
    14

    Par défaut

    mon but est de faire un album photo avec titre jusqu’à 20 photos.
    je voudrais qu'il y est une entrée avec les 20 photos (ou moins)et les 20 titres.
    une entrée par personne enregistrée.c'est pour ça que je voudrais rentrer les photo a chaque boucle dans un champs de la même entrée.
    car je trouve que pour la gestion de l'ensemble c'est plus simple non ??!

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    21 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 576
    Points : 31 444
    Points
    31 444

    Par défaut

    non, fais une table "photo"
    photo_id, fk_utilisateur, photo_titre, photo_fichier, ...

  5. #5
    Candidat au titre de Membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    janvier 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : janvier 2013
    Messages : 34
    Points : 14
    Points
    14

    Par défaut

    ok je fais faire comme ça peux tu juste m'expliquer, pourquoi tu propose cette methode ??

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    21 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 576
    Points : 31 444
    Points
    31 444

    Par défaut

    Tu crées une table pour les photos.
    Les colonnes sont toutes celles dont tu as besoin concernant la photo, plus une qui contient l'id de l'utilisateur.

    Dans une base de donnée relationnelle, on représente les données comme ça.
    En faisant autrement tu vas au devant de difficultés et tu seras obligé de compenser par du code PHP au lieu d'utiliser les fonctionnalités naturelles de SQL (par exemple si tu voulais compter le nombre d'image d'un utilisateur).

  7. #7
    Candidat au titre de Membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    janvier 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : janvier 2013
    Messages : 34
    Points : 14
    Points
    14

    Par défaut

    ok merci pour l'info !!!

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •