Partage
  • Partager sur Facebook
  • Partager sur Twitter

Incrémentation de valeurs d'un champ

Sujet résolu
    19 septembre 2017 à 12:01:09

    Bonjour,

    Le champ id de ma table hitsparpaysnew vaut systématiquement 0 et je veux lui affecter des valeurs entières et différentes allant de 1 à .....

    A cette fin, je viens de créer le petit script suivant :

    <?php
            include "connexion.php";
                
            $SQL = $pdo->query("SELECT id FROM hitsparpaysnew");
            $id=0;
            while ($row = $SQL->fetch(PDO::FETCH_ASSOC))
                {
                    $id++;
                    $SQL1 = $pdo->query("UPDATE hitsparpaysnew SET id=$id ");
                }
    ?>

    Mais ... de toute évidence il ne fait rien.

    Pouvez-vous m'indiquer mon/mes erreur(s) ?

    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      19 septembre 2017 à 12:09:31

      Salut,

      Déjà, il n'y a pas de WHERE dans ta requête qui fait l'UPDATE. Ce qui veut dire que, dans le cas où le SELECT ramène 25 lignes, tu vas faire 25 tours de boucle en mettant le même nombre partout 1... 2... 3... puis 25 qui aura le dernier mot.

      • Partager sur Facebook
      • Partager sur Twitter
      Retrouvez-moi aussi sur Zeste de SavoirTutoriel WAMP • Nouvelle F.A.Q. PHP
        19 septembre 2017 à 12:21:37

        Bonjour elyppire,

        Merci d'être intervenu.

        * ll n'y a pas de WHERE dans ta requête qui fait l'UPDATE. Un WHERE est-il obligatoire si l'on souhaite que le traitement s'effectue sur toutes les lignes ?

        * tu vas faire 25 tours de boucle en mettant le même nombre partout. Dans mon esprit, la variable $id passe à 1 puis UPDATE puis à 2 puis UPDATE ..

        Je ne vois pas comment faire autrement.

        • Partager sur Facebook
        • Partager sur Twitter
          19 septembre 2017 à 12:31:21

          Salut,

          je pense que tu prends le problème à l'envers:

          1) A quoi sert le champ id ?

          2) s'il sert à ce que je pense => un identifiant UNIQUE de la ligne dans ta table, il doit être en auto_increment NON NULL dans la création de la table,

          3) tu ne dois jamais modifier un identifiant à la main, laisse le SGBD gérer ça seul il sait le faire bien mieux que toi (ou moi),

          4) Si il vaut 0, c'est qu'il y a un problème dans la requête d'insertion de donnée. Peux-tu nous la montrer ?

          ++

          • Partager sur Facebook
          • Partager sur Twitter
            19 septembre 2017 à 12:45:25

            Christouphe,

            1) & 2) --> Je me rends compte après coup, que j'ai omis cet identifiant UNIQUE. Il devrait en effet être en auto_increment NON NULL et j'essaie de rattraper le coup.

            3) Maintenant, si j'essaie de le mettre ainsi, j'ai un message d'erreur

            4) Je n'insère aucune donnée dedans, j'ai à l'origine créé cette table à partir d'un fichier Excel.

            Merci

            • Partager sur Facebook
            • Partager sur Twitter
              19 septembre 2017 à 12:53:50

              Ton message d'erreur c'est à cause des valeurs 0 (ou autres identiques) donc si tu as 25 données, modifie à la main les id 1 => 25, puis passe le champ en UNIQUE auto_increment not null, ça devrait le faire.

              ++

              • Partager sur Facebook
              • Partager sur Twitter
                19 septembre 2017 à 13:06:55

                Et si tu as déjà des valeurs pense à faire commencer ton auto incrément à la valeur maximale + 1.

                Si tu as accès à phpMyAdmin cela se fait sous Opérations > Options pour cette table > AUTO_INCREMENT

                • Partager sur Facebook
                • Partager sur Twitter
                Retrouvez-moi aussi sur Zeste de SavoirTutoriel WAMP • Nouvelle F.A.Q. PHP
                  19 septembre 2017 à 13:16:07

                  Euh ... J'ai 500 valeurs ;-(

                  Il n'y a pas moyen de faire ça autrement qu'à la main ?

                  -
                  Edité par .tintin88 19 septembre 2017 à 13:22:17

                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 septembre 2017 à 14:16:23

                    Bon, s'il n'y a que cette possibilité, je vais faire comme ça.

                    Merci à tous.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 septembre 2017 à 17:06:02

                      Sinon tu scripte cela avec une simple boucle.

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Retrouvez-moi aussi sur Zeste de SavoirTutoriel WAMP • Nouvelle F.A.Q. PHP
                        20 septembre 2017 à 10:04:35

                        Bonjour elyppire,

                        En l'absence de solution, je l'ai fait sous Excel mais afin de ne pas mourir idiot, peux-tu me donner ta simple boucle, stp ?

                        • Partager sur Facebook
                        • Partager sur Twitter
                          20 septembre 2017 à 10:08:21

                          1) Tu ne modifie pas le champ id

                          2) Tu prends tes données et tu fais une boucle dessus avec un update sur id 1 => 500 (exemple)

                          3) tu modifie ton champ en PK auto_increment UNIQUE not null

                          4) tu modifie la prochaine valeur de id à 501 comme dit précédemment

                          FIN

                          ^^

                          • Partager sur Facebook
                          • Partager sur Twitter
                            20 septembre 2017 à 10:17:38

                            J'entends bien, christouphe, mais si j'ai demandé de l'aide hier, c'est que je ne sais pas faire correctement cette boucle. Je sais, c'est bête, hein.

                            -
                            Edité par .tintin88 20 septembre 2017 à 10:18:06

                            • Partager sur Facebook
                            • Partager sur Twitter
                              20 septembre 2017 à 10:21:11

                              tout dépend si tu peux sélectionner ligne par ligne, sinon tu ne pourras pas le faire autrement que par un export-modif-import

                              ++

                              • Partager sur Facebook
                              • Partager sur Twitter

                              Incrémentation de valeurs d'un champ

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown