Php. incrementer un nombre dans un champ varchar
Résolu/Fermé
A voir également:
- Varchar php
- Easy php - Télécharger - Divers Web & Internet
- Bouton php - Forum PHP
- Php?id=1 - Forum PHP
- Varchar 1000 - Forum Programmation
- \R php ✓ - Forum PHP
3 réponses
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
Ambassadeur
1 550
Modifié par yg_be le 28/11/2016 à 18:04
Modifié par yg_be le 28/11/2016 à 18:04
Je suggère, au moment d'attribuer un nouveau id, de rechercher combien d'enregistrements ont de la table ont un id qui commence par les mêmes 6 caractères ("JULPI-" dans ton exemple).
Tu additionnes 1 à ce nombre, tu le convertis en deux caractères, et tu obtiens ainsi ton id.
Tu additionnes 1 à ce nombre, tu le convertis en deux caractères, et tu obtiens ainsi ton id.
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
Ambassadeur
1 550
28 nov. 2016 à 19:51
28 nov. 2016 à 19:51
Exemple non testé, à ajouter juste après
$codeeleve="$name$fname";
$sql = "SELECT count(*) as nbr FROM tb_eleve WHERE left(Code_Eleve,5) = " . $codeeleve ; $requete = mysql_query( $sql, $cnx ) ; $result = mysql_fetch_object ($requete); $codeeleve=$codeeleve.vsprintf("-%'02d",array($result->nbr +1));
merci yg_be, ca a marche mais comme je le souhaitais. je voulais xxxx-01 pour la premiere insertion, xxxx-02 pour la deuxieme, xxxx-03 pour la troisieme et ainsi de suite. dans cette partie de code que tu m'as propose, ca marche parfaitement pour des eleves qui auraient le meme nom. par exemple pour deux eleves qui s'appellent julien pierre, on aura un premier id JULPI-01 et JULPI-02, par contre pour un autre eleve qui est gaston joseph par exemple, son id sera GASJO-01, il devrait etre GAS-JO-03. j'espre que vous comprendrez ce que je veux dire.
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 550
29 nov. 2016 à 08:30
29 nov. 2016 à 08:30
Alors remplace ceci
par cela
$sql = "SELECT count(*) as nbr FROM tb_eleve WHERE left(Code_Eleve,5) = " . $codeeleve ;
par cela
$sql = "SELECT count(*) as nbr FROM tb_eleve ;
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
Modifié par jordane45 le 29/11/2016 à 13:01
Modifié par jordane45 le 29/11/2016 à 13:01
Bonjour,
Si ton but est d'incrémenter à chaque insertion en BDD .... pourquoi alors avoir retiré ton champ auto-increment ??
Sachant que pour constiter ta clé... il te suffisait ensuite simplement d'utiliser tes deux champs : ID (autoincrementé) + ton champ code_eleve
Par exemple :
NB: Le code étant une chaine de caractères et non pas juste un nombre... tu dois mettre des quotes autour de ta variable dans ton where.
NB²: Lorsque tu postes du code sur le forum, merci d'utiliser LES BALISES DE CODE (voir ici les explications : balises de code )
Cordialement,
Jordane
Si ton but est d'incrémenter à chaque insertion en BDD .... pourquoi alors avoir retiré ton champ auto-increment ??
Sachant que pour constiter ta clé... il te suffisait ensuite simplement d'utiliser tes deux champs : ID (autoincrementé) + ton champ code_eleve
Par exemple :
SELECT concat(E.Code_Eleve,"-",E.id) as CODE FROM tb_eleve E WHERE concat(E.Code_Eleve,"-",E.id) = ' $codeeleve'
NB: Le code étant une chaine de caractères et non pas juste un nombre... tu dois mettre des quotes autour de ta variable dans ton where.
NB²: Lorsque tu postes du code sur le forum, merci d'utiliser LES BALISES DE CODE (voir ici les explications : balises de code )
Cordialement,
Jordane
28 nov. 2016 à 18:24