IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Générer un numero [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut Générer un numero
    Salut à tous.
    Je suis nouveau dans le langage php et là depuis 2 jours je suis bloqué sur mon code de génération de numéro d'identifiant.
    Je veux sélectionner le numéro maximum+1 dans la table agents et je veux concaténer ce numéro à une chaine de caractère afin d'obtenir comme resultat final : XXXXnuméro. Exemple XXXX0001
    A la sortie $numero_agt me renvoie 0 et je comprend vraiment pas.
    SVP aidez moi.

    Voic mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    try
    {
     
    	include("connection_BICF_bd.php");
    	$chaine ="XXXX";
    	// On récupère tout le numero maximum de la table agents
            $requete = $bdd->query('select IFNULL(max(substr(num_agt, 5, 8))+1,0) from agents');
    	$donnees = $requete->fetch();
    	$numero_agt = $chaine.$donnees['num_agt'] ;
    	echo $numero_agt;
    }
    catch(Exception $e)
    {
             die('Erreur : '.$e->getMessage());
    }
    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    bonjour,
    en mysql il existe la fonction concat permettant d’effectuer une concaténation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql="select concat('XXXXX',max(num_agt)+1) from agents";

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    Merci Armel pour ta reponse.
    Quand je teste la requete suivante dans le phpmyadmin, elle fonction correctement.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT concat('XXXX',max(substr(num_agt,5,8))+1,)FROM agents

    Mais dans mon script php elle ne fonctionne pas à la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = $bdd->query('SELECT concat('XXXX',max(substr(num_agt,5,8))+1,)FROM agents');
    Voici mon script definitif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     try
    	{
     
    			include("connection_BICF_bd.php");
    			// On récupère tout le numero maximum de la table agents
               	$requete = $bdd->query('SELECT concat('XXXX',max(substr(num_agt,5,8))+1,)FROM agents');
    			$donnees = $requete->fetch();
    			$numero_agt =$donnees['num_agt'] ;
            }
    	catch(Exception $e)
           {
              die('Erreur : '.$e->getMessage());
           }

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Attention aux guillemets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = $bdd->query('SELECT concat("XXXX",max(substr(num_agt,5,8))+1,)FROM agents');
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    Les guillemets ont été réglés mais echo $numero_agt; met renvoie 0 comme resultat.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    try
    {
     
    	include("connection_BICF_bd.php");
     
    	//$chaine ="BICF";
    	// On récupère tout le numero maximum de la table agents
           	$requete = $bdd->query('SELECT concat("XXXX",max(substr(num_agt,5,8))+1)FROM agents');
    	$donnees = $requete->fetch();
    	$numero_agt =$donnees['num_agt'] ;
    	echo $numero_agt;

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    à mon avis tu récupères le mauvais index du tableau résultat num_agt.il faut plutôt attribuer un alias à l'expression max(substr(num_agt,5,8))+1).
    un var_dump te donnera plus d'indication
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    try
    {
     
    	include("connection_BICF_bd.php");
     
    	//$chaine ="BICF";
    	// On récupère tout le numero maximum de la table agents
           	$requete = $bdd->query('SELECT concat("XXXX",max(substr(num_agt,5,8))+1) as num_agt FROM agents');
    	$donnees = $requete->fetch();
    	//$numero_agt =$donnees['num_agt'] ;
    	//echo $numero_agt;
            var_dump($donnees);

  7. #7
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    merci à tous pour toutes vos idées. J'ai ajouté un alias num à la requête et je récupéré ce alias dans $numero_agt =$donnees['num'] ;
    ce qui me donne le résultat recherché à la fin de la requête.

    Voici le code final :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    try
    {
     
    	include("connection_BICF_bd.php");
     
    	// On récupère tout le numero maximum de la table agents
          	$requete = $bdd->query('SELECT concat("XXXX",max(substr(num_agt,5,8))+1) as num FROM agents');
    	$donnees = $requete->fetch();
    	$numero_agt =$donnees['num'] ;
    	echo $numero_agt;
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
    Encore une fois merci à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment générer un numero Style AA.MM.JJ.001 à partir de la date
    Par salim2020 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 19/03/2011, 16h00
  2. générer le numero de la ligne dans une vue
    Par Sniper37 dans le forum Développement
    Réponses: 5
    Dernier message: 21/01/2010, 09h46
  3. Générer un nombre aléatoire entre 0 et 1 (INCLUS !!!)
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 22/08/2002, 16h30
  4. [CR][VB] comment générer un état ?
    Par ndi dans le forum SDK
    Réponses: 3
    Dernier message: 22/08/2002, 13h13
  5. Réponses: 5
    Dernier message: 08/07/2002, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo