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
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  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 ...
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  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
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  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')")  ;
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  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?
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

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