Incrémentation champs VARCHAR MYSQL
Résolu
t671
Messages postés
1476
Date d'inscription
Statut
Membre
Dernière intervention
-
t671 Messages postés 1476 Date d'inscription Statut Membre Dernière intervention -
t671 Messages postés 1476 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Dans ma base, j'ai un champs num_indiv qui s'écrit avec un I majuscule en début de champs, suivi de chiffres. Le plus grand num_indiv à passer les 10000, soit + de I10000. (Dans ma base, j'ai aussi un champs ID en "auto-incrément".)
Si je veux créer un nouvel élément (via formulaire), je voudrais incrémenter le num_indiv.
J'ai écrit ceci:
Le problème, c'est que quand je cherche le num_indi maximum, j'ai comme résultat I9999, alors que je devrais avoir (par exemple) I10085.
Dans Mysql, le champs num_indiv est déclaré en VARCHAR, ce qui fait que pour lui, le plus grand est I9999.
Comment faire pour incrémenter ce champs après I9999 ?
Merci.
Dans ma base, j'ai un champs num_indiv qui s'écrit avec un I majuscule en début de champs, suivi de chiffres. Le plus grand num_indiv à passer les 10000, soit + de I10000. (Dans ma base, j'ai aussi un champs ID en "auto-incrément".)
Si je veux créer un nouvel élément (via formulaire), je voudrais incrémenter le num_indiv.
J'ai écrit ceci:
$req=mysql_query("select max(num_indiv) from ville_bis"); $res=mysql_result($req,0,"max(num_indiv)" ); // recup du max num_indiv $chaine = substr($res,1); // on enlève le premier caract, soit "I" $toto = $chaine + 1; // toto = prochain num_indiv + I
Le problème, c'est que quand je cherche le num_indi maximum, j'ai comme résultat I9999, alors que je devrais avoir (par exemple) I10085.
Dans Mysql, le champs num_indiv est déclaré en VARCHAR, ce qui fait que pour lui, le plus grand est I9999.
Comment faire pour incrémenter ce champs après I9999 ?
Merci.
A voir également:
- Incrémentation champs VARCHAR MYSQL
- Mysql community server - Télécharger - Bases de données
- Excel copier formule sans incrémentation ✓ - Forum Excel
- Mysql error in file: /engine/classes/mysql.php at line 53 ✓ - Forum Réseaux sociaux
- Word mettre à jour tous les champs ✓ - Forum Word
- Word : Mise à jour des champs - Forum Word
13 réponses
Bonsoir,
Effectivement, le choix d'Anoen est sans doute le meilleur. Sinon tu devrais modifier ton champ VARCHAR avec une valeur plus grande, comme VARCHAR(10), et ça devrait aller pour un moment :
ALTER TABLE 'ville_bis' CHANGE 'num_indiv' 'num_indiv' VARCHAR( 10 )
Effectivement, le choix d'Anoen est sans doute le meilleur. Sinon tu devrais modifier ton champ VARCHAR avec une valeur plus grande, comme VARCHAR(10), et ça devrait aller pour un moment :
ALTER TABLE 'ville_bis' CHANGE 'num_indiv' 'num_indiv' VARCHAR( 10 )
Autumn'Tears : j'avais essayé avec VARCHAR(10), mais le problème reste entier.
Et effectivement, j'avais pensé à la solution d'Anoen. Ce qui me permettrait d'incrémenter plus facilement le champs.
Par contre, je ne pourrais le mettre en INT avec auto-incrément, car j'ai repris une base existante, et le n° 1 dans ce champs n'existe pas, ou plus. Puis des relation de ce champs existe avec d'autres champs de la base, et je ne voudrais pas tout casser ....
Par contre, pour faire uine moulinette et enlever les "I" aux champs num_indiv, j'ai écrit :
Mais ça marche pô !!!!!!
Vous pouvez m'aider ?
Et effectivement, j'avais pensé à la solution d'Anoen. Ce qui me permettrait d'incrémenter plus facilement le champs.
Par contre, je ne pourrais le mettre en INT avec auto-incrément, car j'ai repris une base existante, et le n° 1 dans ce champs n'existe pas, ou plus. Puis des relation de ce champs existe avec d'autres champs de la base, et je ne voudrais pas tout casser ....
Par contre, pour faire uine moulinette et enlever les "I" aux champs num_indiv, j'ai écrit :
$select = "SELECT * FROM ville_bis WHERE num_indiv='%I%'"; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); while($row = mysql_fetch_array($result)) { $chaine = substr($result,1); $sql = "UPDATE ville_bis SET num_indiv = '$chaine' WHERE num_indiv = '%I%'"; }
Mais ça marche pô !!!!!!
Vous pouvez m'aider ?
il faut utiliser SELECT num_indiv FROM ville_bis WHERE num_indiv= 'I%'
Bon courage.
--
Merci de changer le problème en résolu quand vous trouvez une solution
Bon courage.
--
Merci de changer le problème en résolu quand vous trouvez une solution
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
çà ne dois pas marcher car tu veux modifier un enregistrement mais ton where fais reference au meme enregestriment, du coup, il n'aime pas et ne modfie pas
quel est le mesage d'erreur que tu obtient ?
quel est le mesage d'erreur que tu obtient ?
Ca fonctionne pas, et je n'ai pas de message d'erreur :
$select = "SELECT * FROM ville_bis"; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); while($row = mysql_fetch_array($result)) { $chaine = substr($result,1); $sql = "UPDATE ville_bis SET num_indiv = '$chaine' WHERE date_naissance = 'I%'"; }
essaye cette requete pour tout modifier d'un coup
UPDATE ville_bis SET num_indiv = SUBSTR(num_indiv, 1)
La solution de maka54 j'y ai cru ............. car c'est le résultat escompté !
Mais rien !!!! Même pas de message d'erreur ....... pffffffffff
Mais rien !!!! Même pas de message d'erreur ....... pffffffffff