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 :

Concatener 3 variables dans une requete


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 46
    Points : 35
    Points
    35
    Par défaut Concatener 3 variables dans une requete
    Bonjour
    Je voudrai ajouter un numero de dossier qui est consituer de 3 variables mises a la suite.

    Voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $date = date("d"); // Jour
    $heure = date("i"); // Minutes
    $seconde = date("s"); /seconde
    $ajoutbdd = mysql_query("INSERT INTO client
    (nomsociete, nompersonne, numtel, emailcontact, marque, modelmateriel, numserie,etatprobleme,numdossier)
    VALUES('$nomsociete','$nom', '$numtel', '$emailcontact', '$marque', '$modelmateriel', '$numserie','FALSE','$dernier_id. $date.$heure.$seconde')");
    Ma base :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TABLE client (
      idclient INT NOT NULL AUTO_INCREMENT,
      nomsociete VARCHAR(20) NULL,
      nompersonne VARCHAR(25) NULL,
      numtel VARCHAR(10) NULL,
      emailcontact VARCHAR(25) NULL,
      marque VARCHAR(20) NULL,
      modelmateriel VARCHAR(20) NULL,
      numserie VARCHAR(20) NULL,
      etatprobleme BOOL NULL,
      numdossier VARCHAR(20) NULL,
      PRIMARY KEY(idclient)
    );

    Le numero est donc fait par l'addition de l'ID/Jour/Minutes/seconde.


    Visiblement ma requete est mauvaise cela vient surement de la concatenation car le reste se rempli dans la base (pas testé le FALSE).

    Pouvez vous me corriger ?
    Merci

  2. #2
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Fait un echo de '$dernier_id. $date.$heure.$seconde'

    avant la requête

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 46
    Points : 35
    Points
    35
    Par défaut
    Voici mon code entier :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    // Valeur des champs de connection 
     
    $nom_du_serveur ="localhost";
    $nom_de_la_base ="reparation";
    $nom_utilisateur = "root";
    $mot_de_passe = "";
     
    				mysql_connect("$nom_du_serveur","$nom_utilisateur","$mot_de_passe");
    				mysql_select_db("$nom_de_la_base") or die("Impossible d'ouvrir la base de données ");
     
     
    // On recupere les valeurs du formulaire. Ses parametres seront par la suite integrer aux requetes SQL afin de remplir la base de données.
    // mysql_real_escape_string($...) ; ===> Sert a echapé les caracteres speciaux.
     
    $nom= $_POST["nom"] ;
     
    $nomsociete= $_POST["societe"] ;
     
    $numtel= $_POST["tel"] ;
     
    $marque= $_POST["marque_mat"] ;
     
    $nomcontact= $_POST["nomcontact"] ;
     
    $emailcontact= $_POST["email"] ;
     
    $numserie= $_POST["noserie"] ;
     
    $modelmateriel= $_POST["model"] ;
     
    $probleme= $_POST["description"] ;
     
     
     
    $date = date("d"); // Jour
    $heure = date("i"); // Minutes
    $seconde = date("s");
    $dernier_id = mysql_insert_id ();
    $ajoutbdd = mysql_query("INSERT INTO client
    				(nomsociete, nompersonne, numtel, emailcontact, marque, modelmateriel, numserie, etatprobleme, numdossier)
    				VALUES('$nomsociete', '$nom', '$numtel', '$emailcontact', '$marque', '$modelmateriel', '$numserie','FALSE','$dernier_id.$date.$heure$seconde')")  ;
     
    $dernier_id = mysql_insert_id ();
    $sql_dernier_nom = 'SELECT nompersonne FROM client WHERE idclient = (SELECT MAX(idclient)FROM client)' ;
    $dernier_nom = mysql_query($sql_dernier_nom) or die('Erreur SQL !<br>'.$sql_dernier_nom.'<br>'.mysql_error());
     
     
    echo '<h2>Votre numero de dossier est le : '.$dernier_id. $date. $heure.$seconde.'</h2>';
     
    mysql_close ();

    Tout a l'air de fonctionné seulement voila dans la BDD la valeur de la concatenation est mal faite (l'ID qui ne s'ajoute pas devant)

  4. #4
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Parce que mysql_insert_id() agit sur la dernière requête exécutée, assurez-vous d'appeler la fonction mysql_insert_id() immédiatement après l'exécution de la requête qui a générée la valeur.
    Voilà pourquoi tu n'as rien ...

  5. #5
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Pour moi, une solution qui me vient comme cela (tu peux creuser sur l'idée), tu peux utiliser avec SQL: LAST_INSERT_ID(); avec un select et ensuite tu fais un +1 dans ton insert ...

    Y'en a qui vont me dire bidouille mais j'ai pas mieux

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 46
    Points : 35
    Points
    35
    Par défaut
    Je vois se que tu veux dire mais je n'arrive pas a le faire.
    =(
    Le SQL c'est vraiment pas mon langage. Je vais continuer d'essayer et je te tiens au courant.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 46
    Points : 35
    Points
    35
    Par défaut
    Dans la base s'inscrit :

    " Resource id #4294655 "

    au lieu de " 72294655 "

  8. #8
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Voici la partie de code que je verrais ... j'avoue qu'il devrait y avoir mieux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $date = date("d"); // Jour
    $heure = date("i"); // Minutes
    $seconde = date("s");
    // Reccup dernier id, ou autre select ou alors par le résultat A voir
    $query = mysql_query("SELECT idclient FROM client WHERE idclient=LAST_INSERT_ID()")or die(mysql_error());
    $dernier_id = mysql_insert_id ();
     
    $ajoutbdd = mysql_query("INSERT INTO client
    				(nomsociete, nompersonne, numtel, emailcontact, marque, modelmateriel, numserie, etatprobleme, numdossier)
    				VALUES('$nomsociete', '$nom', '$numtel', '$emailcontact', '$marque', '$modelmateriel', '$numserie','FALSE','$dernier_id.$date.$heure$seconde')")  ;

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 46
    Points : 35
    Points
    35
    Par défaut
    Il y a du mieux :


    0290441 enregistré dans la base (Numdossier) au lieu de 76290441

    Les deux premiers chiffres sont faux Je sais plus comment faire mon numero de dossier unique T_T.

    En tout cas merci pour ton aide =)

  10. #10
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut,

    y a différents moyens de faire du formatage:
    • sprintf
    • concaténation + fonctions pour combler une chaine à droite ou à gauche avex une expression
    • et enfin le top du top ici: la fonction de formatage de date...


    question pourquoi tu veux faire ton id comme ça?

Discussions similaires

  1. utilisation de variable dans une requete
    Par JUSTIN Loïc dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 26/07/2006, 08h40
  2. Souci avec une variable dans une requete
    Par polianita dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 21/06/2006, 17h05
  3. concatener 2 champs dans une requete
    Par jojo57 dans le forum Access
    Réponses: 4
    Dernier message: 17/05/2006, 15h29
  4. Variable dans une requete
    Par faayy dans le forum Access
    Réponses: 5
    Dernier message: 20/06/2005, 16h54
  5. [syntaxe] Gerer les variables dans une requete
    Par rastapopulos dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 15/04/2003, 12h53

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