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 :

[INSERT]garder zero au début d'une chaine de caractere


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 81
    Par défaut [INSERT]garder zero au début d'une chaine de caractere
    Bonjour,
    j'ai une zone telephone dans un formulaire à remplir par l'utilisateur.
    le zero du debut n'est pas gardé lorsque j'insere l'info dans la base MYSQL.

    je recupere la valeur :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tel = htmlspecialchars($_POST['telephone'], ENT_QUOTES);

    jusque là le format est bien gardé.

    voici ma requete d'insertion:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    $query = sprintf('UPDATE Distributeur
    			SET region = %s,
    			enseigne = %s,
    			adresse1 = %s,
    			adresse2 = %s,
    			cp = %s,
    			ville = %s,
    			tel = %s,
    			fax = %s,
    			mail = %s,
    			descriptif = %s,
    			site = %s,
    			code_distributeur = %s,
    			mailing_list = %s,
    			civilite = %s,
    			nom = %s
    			WHERE ID = %s',
    			quote_smart($dpt),
    			quote_smart($enseigne),
    			quote_smart($adresse_1),
    			quote_smart($adresse_2),
    			quote_smart($cp),
    			quote_smart($ville),
    			quote_smart($tel),
    			quote_smart($fax),
    			quote_smart($mail),
    			quote_smart($descriptif),
    			quote_smart($site),
    			quote_smart($code_client),
    			quote_smart($mailing),
    			quote_smart($civilite),
    			quote_smart($nom),
    			quote_smart($ID));
    là le zero de debut n'est plus gardé.

    j'ai essayé en faisant :
    mais ca ne change rien.
    je ne veux pas forcer le zero car le telephone n'est pas forcement en france.

    si qqu'un peut me donner un coup de main ce serait parfait.
    Merci.

  2. #2
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    (code et pas php)

    Quel est le type de ton champ tel dans ta base ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 81
    Par défaut
    salut,
    je galerai un peu avec les balises, merci de m'avoir indiqué,

    le champ est varchar(14)

  4. #4
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    $tel 2 et $tel je suppose que c'est la même chose...

    Il doit y avoir une conversion implicite en entier quelque part, mets des echo un peu partout pour savoir où (à chaque traitement sur $tel).

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 81
    Par défaut
    oui $tel2 et $tel sont identiques, j'ai rectifié.

    j'ai affiché ma requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    UPDATE Distributeur SET region = 1, enseigne = 'test', adresse1 = 'test',
    adresse2 = '', cp = 1000, ville = 'TEST', tel = 0123456789, fax = '', mail = '',
    descriptif = '', site = '', code_distributeur = 1, mailing_list = 1, civilite = 'Mlle',
    nom = '' WHERE ID = 357
    un echo($tel); me donne 0123456789 que ce soit avant ou apres l'execution de ma requete.

    mais je me retrouve avec 123456789 dans ma base.

    la valeur de tel n'a pas de guillemets dans la requete, il faudrait forcer le type mais je ne sais pas comment.

  6. #6
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Encadre le numéro de téléphone avec des quotes comme pour les autres champs.

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Par défaut
    hello,

    ta fonction quote_smart, j'imagine que c'est celle qu'on peut trouver sur php.net, ou qu'elle lui ressemble.

    donc dans ce cas, elle echappe les chaines et les met entre guillemets pour l'insertion dans la base. et elle laisse passer les numériques. du coup comme un n° de téléphone n'est composé que de chiffres, elle confond et le traite comme un entier, alors que toi tu t'attends à le voir traité comme chaine.

    pour résoudre ce probleme tu as juste à rajouter des guillemets ou des apostrophes dans le modele de ta requete ==> tel='%s' , fax='%s' etc. et ce pour tous les trucs qui peuvent porter à confusion.

    Bon courage pour la suite.

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

Discussions similaires

  1. Supprimer les zéros au début d'une chaine
    Par HULK dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/11/2012, 18h13
  2. Afficher le début d'une chaine de caractère
    Par yaumme dans le forum Langage
    Réponses: 2
    Dernier message: 10/07/2007, 14h46
  3. Extraire le début d'une chaine
    Par iomega dans le forum Langage
    Réponses: 4
    Dernier message: 12/06/2007, 14h27
  4. Pour ne conserver que le début d'une chaine ?
    Par laloupiote dans le forum Langage
    Réponses: 2
    Dernier message: 22/05/2007, 19h57
  5. erreur pour une insertion d'une chaine de caractere dans une cellule
    Par amel95140 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/10/2006, 09h09

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