Requete sql php

Résolu
Bonjour,

voila je fai ma requete

$sqlnum = "SELECT MAX(NUMERO)
FROM JOUR ";

enfin je la récupère et veut l'incrémenté de un a chaque fois ke je veut insérer une ligne sachant que j'ai 6 ligne a insérer mon numero ne s'incrémente je ne vois pas comment faire

$result=odbc_result_all($req);
$num = $result++;

Je ne sais pas si je suis assez clair

pouvez vous m'éclairer svp?

merci d'avance
Configuration: Windows 2003
Internet Explorer 7.0

20 réponses

  1. bah fo ke je casse tout les liens c'est chiant en plus j'arrive pas a les recréé donc fo que je refasse le mcd sous win design donc c'est chiant je laisse pour le moment
    1. Si tu veux que ton auto-increment reparte de 0, il faut tout d'abord vider ta table.
      Si ta table contient des infos, il faudra supprimer les infos liées se trouvant dans d'autres tables ( si les contraintes ont un ON DELETE CASCADE, ça le fait automatiquement ).

      D'autre part, je pense que la requête de Dalida ne fonctionne que si ta table est vide.
  2. Si tu ne trouves pas de solutions, il y a des méthodes pas propres :
    - Suppression du champ en auto-increment et recréation
    - Ou alors il doit y avoir une option pour que l'auto-increment prenne les valeurs libres. Tu la met tu insères une première valeur ( ça devrait remettre 1 et après il devrait continuer ) et tu l'enlèves.
    - Ou alors encore plus barbare, suppression de la table et recréation.

    Tu as tout bien écrit pour ton alter :
    ALTER TABLE `table` AUTO_INCREMENT = 0;
    1. non je n'ai pas la solution les gars et oui cest ma clé primaire et du coup je suis bloque mnt lol
      1. non le truncate ne se remet pas a zéro

        pour dalida :

        voici l'erreur pour le alter table

        Warning: odbc_do() [function.odbc-do]: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe dans l'instruction ALTER TABLE., SQL state 37000 in SQLExecDirect in C:\Program Files\Apache Group\Apache2\htdocs\www\Logiciel\Insertion\Insertion_JOUR.php on line 35
        37000
        1. non le truncate ne se remet pas a zéro

          pour dalida :

          voici l'erreur pour le alter table

          Warning: odbc_do() [function.odbc-do]: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe dans l'instruction ALTER TABLE., SQL state 37000 in SQLExecDirect in C:\Program Files\Apache Group\Apache2\htdocs\www\Logiciel\Insertion\Insertion_JOUR.php on line 35
          37000
          1. ca c'est pour mysql pas opur access si?
            1. Désolé, c'est un standard SQL, mais c'est vrai qu'avec microsoft, ça ne marche que rarement :(
              Dalida a du te donner la solution. ( mais n'oublie pas aussi de supprimer les enregistrements présents sinon ça risque de poser des problèmes si c'est ta clé primaire ).
          2. Contributeur
            ALTER TABLE `table` AUTO_INCREMENT = 0;

            ça t'arrive de faire des recherches avant de poster ?
            1. Si tu vides ta table avec un truncate ça doit remettre l'auto-increment à zéro.
              1. effectivement c'est ca merci je n'y avais pas pensé c'est trop bien

                par contre

                comment remettrel'incrément a zéro svp?
                1. Salut,

                  Essaye de ne pas mettre le champ qui est en auto increment dans la liste.
                  INSERT INTO `table` (`champ1`, `champ2`, `champ3`) VALUES ('val1', 'val2', 'val3');
                  1. voila j'ai fait ca :

                    "INSERT  INTO JOUR (NUMERO , DATE_DEBUT, OUVERTURE, CADENCE, JOUR)
                                VALUES ('', #$date#, 438, 68, 'Lundi') " ; 


                    dans la base numero est en numero auto

                    et il me répond

                    Warning: odbc_do() [function.odbc-do]: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Type de données incompatible dans l'expression du critère., SQL state 22005 in SQLExecDirect in C:\Program Files\Apache Group\Apache2\htdocs\www\Logiciel\Insertion\Insertion_JOUR.php on line 33
                    22005

                    as tu une idée?
                    1. si je travaille pour un site web mais je suis obligé de travailler dans une base access c'est trop chiant bref j'ai déja essayé l'auto incrément avec cette syntaxe et ca ne fonctionne pas

                      alors je ne sais plus le message d'erreur je remat tout en place et je te met le msg d'erreur.
                      1. Contributeur
                        access ?
                        mais tu travailles pas sur in site web ?

                        enfin bref…

                        dans ta requête d'insertion il faut que tu mettes tous les champs et comme valeur pour l'auto incrément tu envoies une chaîne vide.

                        de tête :
                        INSERT INTO `table` (`champ_auto`, `champ1`, `champ2`, `champ3`) VALUES ('', 'val1', 'val2', 'val3');
                        1. si mais je sais pas pourquoi dans access ca ne fonctionne pas

                          je l'ai mis en auto incrément donc pas de problème

                          et dans le

                          insert into ... (numero, ....)
                          values ('',....)


                          c'est bien comme ca qu'est la syntaxe?
                          1. Contributeur
                            et ben tu ajoutes des balises < code> et </ code> (sans espaces) ton navigateur devrait supporter…

                            et pour ta BDD, tu peux pas coller ton champ en auto increment ?
                            1. je ne peut pas faire de bouton c'est dans une procédure lol

                              dsl mais dans l'entreprise ou je travaille je dois avoir un navigateur pas a la bonne version car je peut pas faire le truc pour la mise en forme.

                              donc je ne pense pas que ta solution fonctionne en aurais tu une autre

                              au pire si tu veut je peut mettre la page de code mais ca va faire long pour si peu
                              1. Contributeur
                                salut,

                                et un champ avec auto_increment ?

                                pour le code, il faut utiliser le bouton "garder la mise en forme".