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

Langage PHP Discussion :

mysql_insert_id() et les id UNSIGNED ZEROFILL


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de akara
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 299
    Par défaut mysql_insert_id() et les id UNSIGNED ZEROFILL
    bonjour,
    j'ai un petit problème,
    lors d'une insertion (sql) je récupère l'id avec mysql_insert_id().
    Dans ma table id a comme type de champs : auto-incrémente, UNSIGNED ZEROFILL...
    Puis je voudrais comparer mysql_insert_id() et id (de la table) mais je ne peux pas, pourquoi ? parce que...
    avec ma condition if, je pense que vous comprendrais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $a=0001545; //id que je cherche dans la table 
    $b=1545;  //id que je récupère avec mysql_insert_id().
     
    if($a==$b){ 
        echo " c pareil";
    }else
    { 
        echo "non";
    }
    logiquement et théoriquement j'obtiens bien "non" !
    comment puis-je faire ?
    pour avoir pareil ?

  2. #2
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 889
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 889
    Par défaut
    Salut,

    La solution la plus simple me parrait de caster $a en int non ?

    A+

  3. #3
    Membre éclairé Avatar de akara
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 299
    Par défaut
    mais $a est du type smallint

  4. #4
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 889
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 889
    Par défaut
    Citation Envoyé par akara
    mais $a est du type smallint
    smallint peut être casté en int sans problème, l'inverse n'est pas vrai.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( ((int)$a) == $b) { ; }

  5. #5
    Membre éclairé Avatar de akara
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 299
    Par défaut
    Citation Envoyé par KiLVaiDeN
    smallint peut être casté en int sans problème, l'inverse n'est pas vrai.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( ((int)$a) == $b) { ; }
    mais avec cet condition je n'obtiens pas 0001545==1545
    c 'est normal ?

    ///edit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    f( int($a)==$b){ echo " c pareil";}else{ echo "non";}
    j'obtients l'erreur suivante :
    Call to undefined function: int()

  6. #6
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Si tu regardes cette discussion http://www.developpez.net/forums/sho...ighlight=octal tu verras surement une ressemblance avec ton probleme:
    les nombres qui commencent par 0 en PHP sont considérés comme étant en base 8 et non pas en base 10.

    Du coup 0001545 c'est de l'octal et ca vaut en décimal : 869 d'où le fait que c'est toujours différent.
    Est-ce que tu peux retirer les 0 devant ton nombre? Si oui ca sera facile de comparer.
    Si non, est-ce qu'il y a un nombre fixes de 0 (enfin de chiffres dans le nombre)
    si oui tu peux faire ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nombreFormate = sprintf("%07d",$b);
    pour transformer $b en un nombre a 7 chiffres avec des 0 devant

  7. #7
    Membre éclairé Avatar de akara
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 299
    Par défaut
    j'ai fait plusieurs essais :
    $a=0001545;
    $b=1545;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $sql_verif="SELECT * FROM tb_client WHERE id_clt=$a";
    $result_verif=mysql_query($sql_verif);
    $clt = mysql_fetch_assoc($result_verif);
    echo $clt['nom_clt'];
    ici je n'obtiens rien du tout ! mais si je changeais la requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql_verif="SELECT * FROM tb_client WHERE id_clt=0001545";
    la j'ai le echo qui s'affiche...alors que avec $b dans les 2 cas cela fonctionne...
    dans ma table id_clt est de type smallint(7) et attribut UNSIGNED ZEROFILL.



    ////editer
    Je te remercie je vais voir cela !
    je me disais pourquoi j'obtenais 869 , maintenant je comprends,
    Merci

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

Discussions similaires

  1. Les meilleurs cours et tutoriels C++
    Par Community Management dans le forum C++
    Réponses: 1
    Dernier message: 13/05/2015, 13h50
  2. aide sur le type unsigned zerofill
    Par rahimman dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 28/07/2010, 12h20
  3. Obligatoire : lisez les règles du forum : MAJ 06/08/2010
    Par Anomaly dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 0
    Dernier message: 03/07/2008, 13h46
  4. Réponses: 4
    Dernier message: 10/04/2006, 22h34
  5. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18

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