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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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
    Par défaut
    Bonjour,

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

    avant la requête

  3. #3
    Membre averti
    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
    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
    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
    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
    Membre averti
    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
    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.

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