Partage
  • Partager sur Facebook
  • Partager sur Twitter

matricule automatique

    18 mai 2019 à 18:31:08

    bonjour à tous. je suis entrain de créer une application de la gestion des inscription de étudiants et j'aimerais beaucoup que le matricule de l'étudiant soit généré automatiquement et dès que j'inscrit un étudiant il reçoit un email avec son matricule lui informant qu'il a bien été inscrit mais je ne sais pas comment faire. besoin d'aide c'est urgent
    • Partager sur Facebook
    • Partager sur Twitter
      18 mai 2019 à 18:37:13

      Bonjour.

      Cela va être difficile si tu ne nous montre ni code PHP, ni structure de la table concernée.

      De plus qu'il nous faudrait savoir quel format doit avoir le matricule qui devra être généré.

      -
      Edité par Lartak 18 mai 2019 à 18:40:05

      • Partager sur Facebook
      • Partager sur Twitter

      Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

        18 mai 2019 à 18:42:38

        ici par exemple j'ai la page du traitement de l'inscription. dans mon code appli cs tw qui saisit le matricule et dans ma bd matricule est la clé primaire et cs un varchar.

        CREATE TABLE IF NOT EXISTS `etudiant` (
          `matEtud` varchar(10) NOT NULL COMMENT 'matricule de l''etudiant',
          `nomEtud` varchar(15) DEFAULT NULL COMMENT 'nom de l''etudiant',
          `prenomEtud` varchar(25) DEFAULT NULL COMMENT 'prenom de l''etudiant',
          `emailEtud` varchar(30) DEFAULT NULL COMMENT 'Email de l''etudiant',
          `telEtud` varchar(20) DEFAULT NULL COMMENT 'téléphone de l''étudiant',
          `sexeEtud` char(1) DEFAULT NULL COMMENT 'sexe de l''etudiant',
          `dateNaissEtud` date DEFAULT NULL COMMENT 'date de naissance de l''etudiant',
          `refSit` int(11) DEFAULT NULL COMMENT 'reference de la situation',
          `codeFil` int(11) DEFAULT NULL COMMENT 'code de la filiere',
          `codeNiv` int(11) DEFAULT NULL COMMENT 'Code du niveau',
          PRIMARY KEY (`matEtud`),
          KEY `refSit` (`refSit`),
          KEY `codeFil` (`codeFil`),
          KEY `codeNiv` (`codeNiv`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
        
        ici c'est la page qui se charge du traitement de l'inscription
        <?php
          srand(time(0));
          include('connexionPDO.php');
        
          /*$matricule = $_POST['matricule'];
          $nom = $_POST['nom'];
          $prenom = $_POST['prenom'];
          $email = $_POST['email'];
          $telephone = $_POST['telephone'];
          $sexe = $_POST['sexe'];
          $dateNaiss = $_POST['naissance'];
        
          $nationalite= $_POST['nationalite'];
          $situation = $_POST['situation'];
          $filiere = $_POST['filiere'];
          $niveau = $_POST['niveau'];*/
          
          
          $reponse=$bdd->query('SELECT matEtud FROM etudiant WHERE matEtud= \''.$_POST['matricule'].'\' ');
          
          if(!($donnee=$reponse->fetch()))
          {
        	  //Génération du numero de compte et d'inscription
        	  $numCompte=rand();
        	  $numInscrip=rand();
        	  
        	  //test de controle de laa diponibilité du numero de compte dispo
        	  $reponse2=$bdd->query('SELECT numCpt FROM compte');
        	  $reponse3=$bdd->query('SELECT refIns FROM inscription');
        	  
        	  while($donnee2=$reponse2->fetch())
        	  {
        		if($numCompte==$donnee2['numCpt'])
        			$numCompte=rand(); 			
        	  }
        	  
        	  while($donnee3=$reponse3->fetch())
        	  {
        		if($numInscrip == $donnee3['refIns'])
        			$numInscrip=rand(); 			
        	  }
        	  
        	 $reponse2->closeCursor();
        	 $reponse3->closeCursor();
        	 
        	$reponseEtudiant=$bdd->prepare('INSERT INTO etudiant VALUES(:matricule ,:nom ,:prenom,:email,:tel,:sexe, :dateNaiss,:sit,:fil,:niv)');
        	
        	$reponseEtudiant->execute(array(
        									'matricule' => $_POST['matricule'],
        									'nom' => $_POST['nom'] , 
        									'prenom' => $_POST['prenom'] ,
        									'email' => $_POST['email'] ,
        									'tel' => $_POST['telephone'] , 
        									'sexe' => $_POST['sexe'] ,
        									'dateNaiss' => $_POST['naissance'] , 
        									'sit' => $_POST['situation'] ,
        									'fil' => $_POST['filiere'] , 
        									'niv' => $_POST['niveau']));	
        	
        	$reponseNiveau=$bdd->query('SELECT montNiv FROM niveau WHERE \''.$_POST['niveau'].'\' =codeNiv');
        	$donneeNiveau=$reponseNiveau->fetch();
        	
        	$reponseCompte=$bdd->query('INSERT INTO compte VALUES(\''.$numCompte.'\' , \''.$_POST['matricule'].'\' , \''.$donneeNiveau['montNiv'].'\') ');
        	
        	$reponseInscription=$bdd->query('INSERT INTO inscription VALUES(\''.$numInscrip.'\',CURDATE(),\''.$_POST['matricule'].'\')');
        	
        	echo echo "<script> alert(\"inscription effectuée avec succès\")</script>";
        }
        	
        	$reponseEtudiant->closeCursor();
        	$reponseNiveau->closeCursor();
        	$reponseCompte->closeCursor();
        	$reponseInscription->closeCursor();
          }
          else
        	  echo 'L\'étudiant de matricule '.$_POST['matricule'].' existe déjà. ';
          
         
          
        ?>




        • Partager sur Facebook
        • Partager sur Twitter
          18 mai 2019 à 18:50:27

          Quand je parlais de format je ne parlais pas que du fais que ce soit un int ou une chaîne de caractères, mais quel doit être la syntaxe.

          Comme c'est une chaîne de caractère, ça pourrait par exemple être : ET0002, quelque chose comme ça, c'est de ça que je te parle, si par contre ça doit être une simple suite numérique, il te suffirait de mettre la colonne matEtud de la table en integer et en auto_increment, ce qui donnerait :

          • 1 pour le premier enregistrement
          • 2 pour le second
          • etc ...

          -
          Edité par Lartak 18 mai 2019 à 18:52:08

          • Partager sur Facebook
          • Partager sur Twitter

          Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

            18 mai 2019 à 19:02:05

            je veux que ca soit une chaine de caractère et que THIB soit la partie statique par exemple

            • THIB1 pour le premier
            • THIB2 pour le second 

            etc

            • Partager sur Facebook
            • Partager sur Twitter
              18 mai 2019 à 19:13:24

              Dans ce cas là, il y a deux solutions :

              • Soit passer la colonne en integer et auto_increment, puis lors la récupération ajouter le prefix THIB
              • Soit lors d'un nouvel enregistrement, récupérer le dernier enregistrement de la table, parser la valeur du champ pour récupérer le numéro (par exemple avec la fonction substr) et l'utiliser sans oublier de convertir la valeur récupérée en int pour générer le suivant en l'incrémentant.

              -
              Edité par Lartak 18 mai 2019 à 19:14:19

              • Partager sur Facebook
              • Partager sur Twitter

              Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

                18 mai 2019 à 19:19:40

                je ne comprends pas et j'aimerais également savoir si je devrais effacer le champ matricule de mon formulaire

                • Partager sur Facebook
                • Partager sur Twitter
                  18 mai 2019 à 19:40:11

                  L'effacer non, il faut bien un identifiant dans une table et qui soit unique pour la clé primaire.

                  Sinon, si on prend par exemple le premier cas, il n'y aurait rien à faire de particulier pour l'enregistrement vu que la base de donnée générera la valeur du champ automatiquement.

                  Pour ce qui est de la récupération, il suffira juste d'ajouter le préfixe.

                  Si par exemple vous utilisez les classes pour créer une entité qui correspond à un enregistrement de la table, vous n'aurez même pas besoin de vous en préoccuper, il vous suffirait soit dans le getter qui correspond à la colonne de retourner le préfixe avec la valeur de la propriété, ou bien de créer un getter spécifique qui permettra de récupérer le préfixe et la valeur de la propriété, par exemple :

                  public function getMatEtudWithPrefix()
                  {
                      return "THIB{$this->matEtud}";
                  }

                  Pour ce qui concerne l'envoi du mail, qu'est-ce qui vous bloque ?

                  Vous n'avez jamais utilisé la fonction mail ?

                  -
                  Edité par Lartak 18 mai 2019 à 19:44:35

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

                    20 mai 2019 à 13:48:58

                    Hello,

                    Il te faut gérer les collisions et re-générer un matricule si besoins sinon tu risques d'avoir des soucis. Pour un ID uniquement numérique, tu peux faire de la sorte:

                    $foo = hexdec(uniqid(true));
                    $foo = 'THIB'.$foo;
                    print($foo); // THIB6137650919718074



                    • Partager sur Facebook
                    • Partager sur Twitter

                    matricule automatique

                    × 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