IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

insertion bdd suite a une boucle foreach [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau 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 : 28
    Points
    28
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    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.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau 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 : 28
    Points
    28
    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
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    non, fais une table "photo"
    photo_id, fk_utilisateur, photo_titre, photo_fichier, ...
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau 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 : 28
    Points
    28
    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
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    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).
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Nouveau 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 : 28
    Points
    28
    Par défaut
    ok merci pour l'info !!!

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

Discussions similaires

  1. Parcourir plusieurs fois une boucle foreach
    Par persia dans le forum Langage
    Réponses: 19
    Dernier message: 26/08/2008, 10h56
  2. Effectuer une boucle (foreach) dans une procédure stockée ?!
    Par Danny Blue dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 16/11/2007, 16h02
  3. Insertion de champ via une boucle
    Par mat67000 dans le forum Access
    Réponses: 13
    Dernier message: 26/06/2007, 13h53
  4. verifier formulaire avec une boucle "foreach"
    Par sardo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/03/2007, 12h15
  5. [MySQL] Traitement de Formulaire : générer des ensemble à partir d'une boucle foreach
    Par yodaazen dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/10/2006, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo