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 :

[Conception] boucle insertion dans table


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut [Conception] boucle insertion dans table
    bonjour , voila , j'ai une boucle d'insertion de valeurs dans une table mais quand $cat pour une nouvelle insertion est identique , il supprime tous les enregistrements précedents au lieu de les rajouter aux precedents puis enregistre les nouveaux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php 
     if ($_POST['envoi']=="insertion")
    	{ $prefix=$_POST['prefix'];
    	$cat=$_POST['cat_photo'];
    	$deb=$_POST['debut'];$fin=$_POST['fin'];
    	for ($i=$deb;$i<=$fin;$i++)
    		{$insertListe = "INSERT INTO imagephoto (nom_photo, id_cat_photo) VALUES ('".$prefix.$i."', '".$cat."')";
    		$Result2 = mysql_query($insertListe, $conn) or die(mysql_error()); 
    		}
    		}
     
    ?>
    Merci

  2. #2
    Membre averti Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Points : 448
    Points
    448
    Par défaut
    je comprends pas tres bien ce que tu veux dire...

  3. #3
    Membre actif
    Inscrit en
    Septembre 2005
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 185
    Points : 220
    Points
    220
    Par défaut
    faut rajouter la contrainte UNIQUE à la colonne de ta variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Alter table Imagephoto ADD CONSTRAINT nom_de_la_contrainte UNIQUE (cat)
    alors tu peux reprendre ta requete . si $cat est identique alors ta BD te renvera un message d'erreur.

  4. #4
    Invité
    Invité(e)
    Par défaut nom
    En fait en fonction par exemple d'une catégorie choisie dans un select
    , je souhaite rajouter dans une table des enregistrements avec pour valeurs 1,2,3.....par exemple mais quand je rechoisis cette meme categorie , la table m'enleve les enregistrements de ce champ id_cat_photo puis insere dans un deuxieme temps la nouvelle serie 10,11,12 pour le champ nom_photo

    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
     <form id="form2" name="form2" method="post" action="">
          <table width="434" border="0" align="center" class="produitslist">
            <tr>
              <td width="232">d&eacute;but nom image (sans extension):</td>
              <td width="176">
              <input name="debut" type="text" id="debut" /> 
              ex: 1           </td>
            </tr>
            <tr>
              <td height="18">fin nom image (sans extension):</td>
              <td><input name="fin" type="text" id="fin" />
              ex: 4          </td>
            </tr>
            <tr>
              <td height="18">cat&eacute;gorie photo:</td>
              <td><label>
                <select name="cat_photo" id="cat_photo">
                  <?php
    do {  
    ?>
                  <option value="<?php echo $row_selectcategoriephoto['id_photo']?>"><?php echo $row_selectcategoriephoto['nom_voyage']?></option>
                  <?php
    } while ($row_selectcategoriephoto = mysql_fetch_assoc($selectcategoriephoto));
      $rows = mysql_num_rows($selectcategoriephoto);
      if($rows > 0) {
          mysql_data_seek($selectcategoriephoto, 0);
    	  $row_selectcategoriephoto = mysql_fetch_assoc($selectcategoriephoto);
      }
    ?>
                </select>
              </label></td>
            </tr>
            <tr>
              <td height="18">ajout d'un pr&eacute;fix &agrave; un nom d'image </td>
              <td><label>
                <select name="prefix" id="prefix">
                  <option value="">aucun</option>
                  <option value="0">0</option>
                  <option value="00">00</option>
                </select>
              </label></td>
            </tr>
            <tr>
              <td height="18">&nbsp;</td>
              <td><input name="envoi" type="submit" id="envoi" value="insertion" /></td>
            </tr>
          </table>
    </form>

  5. #5
    Membre actif
    Inscrit en
    Septembre 2005
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 185
    Points : 220
    Points
    220
    Par défaut
    rajoute à id_cat_photo la contrainte d'UNICITE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter table  Imagephoto ADD CONSTRAINT nom_de _ta contrainte UNIQUE(id_cat_photo)
    puis refais tout simplement tes insertions

  6. #6
    Invité
    Invité(e)
    Par défaut aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter table  Imagephoto ADD CONSTRAINT contrainte UNIQUE(id_cat_photo) ;
    Duplicate entry '1' for key 1
    j'ai une erreur des le premier enregistrement et à quoi sert cette contrainte (je ne connais pas) ?merci


    de plus tout à l'heure les enregistrement insérés ne sont pas dans l'ordre
    pour les noms 1,2,3 mais 1,10,..

  7. #7
    Membre actif
    Inscrit en
    Septembre 2005
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 185
    Points : 220
    Points
    220
    Par défaut
    en fait la contrainte sert à éviter d'avoir une meme valeur lors de ton insertion.l'erreur survenu indique que t'as déjà utilisé 1 et dont tu ne peux plus réutilisé ? tu dois passer à une valeur que ne contient pas encore ta BD. Toutes valeur repétitive rentrées comme nouveau champ te renvera une erreur comme tel.Ainsi t'auras plus de problème quand tu choisira la meme catégorie.

  8. #8
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    passe l'attribut id_cat_photo en auto_increment et lors de l'insertion fais ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO imagephoto (nom_photo,'')
    Tu peux aussi ainsi la mettre en clef primaire

  9. #9
    Invité
    Invité(e)
    Par défaut aide
    auto incrementer une var caractere , il ne veut pas
    de toute façon meme si ça marchait , je souhaite qu'à chaque nom de photo , le champ suivant id_cat_photo (qui n'est pas le champ id autoincrementer , c'est juste un lien avec une autre table) doit avoir une valeur que je lui insere
    rapellant à quelle categorie il appartient .Le '' n'est pas bon ,il lui faut $cat
    merci

  10. #10
    Membre actif
    Inscrit en
    Septembre 2005
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 185
    Points : 220
    Points
    220
    Par défaut
    Tomtomtomtom, en utilisant la contrainte ke je t'ai passé plus haut les choz devraient pourtant marcher. peut être t'ai je mal saisi?

  11. #11
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter table  Imagephoto ADD CONSTRAINT  contrainte UNIQUE(id_cat_photo)
    je n'ai pas d'erreur .on peut mettre n'importe quoi à la place du mot contrainte ?

    Mais il ne m'insere qu'un enregistrement et au deuxieme post du formulaire, l'enregistrement de la meme categorie est remplacé comme avant

  12. #12
    Membre actif
    Inscrit en
    Septembre 2005
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 185
    Points : 220
    Points
    220
    Par défaut
    faut ke le nom de ta contrainte soit explicite. pour mieux te rappeler si t'avait besoin de faire une modif de la contrainte.
    pour le reste je comprends plus rien. c'est bizarre. ça devrait marcher pourtant.
    bref bocou de courage . peu être ya til kelk'un ki te comprendra mieux.

  13. #13
    Invité
    Invité(e)
    Par défaut aide
    ce que je n'arrive pas à comprendre un insert rajoute un enregistrement mais quand c'est fait dans une boucle repetitive , ça ne marche pas ...ça remplace les précédents quand un des champs contient une valeur identique

  14. #14
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    tu peux contourner le probleme en rajoutant un identifiant de type entier (tiny int) en auto_increment et en primary_key, normalement ça devrais marcher comme ça

    ps : la contrainte ne marche pas car il veut pouvoir mettre plus d'une fois des enregistrements avec le même id_cat_photo

  15. #15
    Membre averti Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Points : 448
    Points
    448
    Par défaut
    c'est egalement ce que je me disais pour les contraintes, je pense pas que ça convienne pour son cas.
    Pour le reste, je suis egalement d'accord avec loka, tu mets une clé primaire auto increment,et dans ta boucle tu fais tes insertions sans préciser la valeur de cette clé.

  16. #16
    Membre actif
    Inscrit en
    Septembre 2005
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 185
    Points : 220
    Points
    220
    Par défaut
    Tomtomtomtom, dslé je t'avais mal saisi. la suggestion de loka est judicieuse ç a devrait matcher.alors prière de tester et de nous dire la suite.

Discussions similaires

  1. insertion dans table avec plusieurs clés étrangères
    Par philippe281281 dans le forum Administration
    Réponses: 2
    Dernier message: 14/06/2006, 18h35
  2. Débutant-Insertion dans table valeurs saisies sur formulaire
    Par Michel Hubert dans le forum Access
    Réponses: 2
    Dernier message: 14/04/2006, 19h38
  3. débutant-Insertion dans table valeurs saisies sur formulaire
    Par Michel Hubert dans le forum Access
    Réponses: 2
    Dernier message: 13/04/2006, 09h07
  4. Insertion dans table SQL server (Trigger) Aidz moi SVP????
    Par pop bob dans le forum Développement
    Réponses: 2
    Dernier message: 30/07/2005, 23h55
  5. Réponses: 3
    Dernier message: 19/11/2004, 21h48

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