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
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à. ';
?>
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
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.
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
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.
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
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.
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:
× 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.
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.
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.
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.
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.