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 :

ajout infos automatique dans base de données [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut ajout infos automatique dans base de données
    Bonjour,

    Encore un petit soucis avec mon code, je recupere les valeurs de mon formulaire que je vais ensuite inserer dans ma table.

    J'ai rajouté (ce qui est en gras), pour que il recherche dans ma base le nom de l'entreprise et le contact, à partir du numéro que j'aurai rentré. Et qu'il insere ces deux elements, en même temps que le reste de la requete ?

    Mais il me met un code d'erreur :
    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /pages/37/d1842/htdocs/xxxxx.com/Trait_Ajout_Candidature.php on line 79
    Merci pour votre aide.

    Voici mon code php :


    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
    <?php
    
    // on teste si les variables du formulaire sont bien declarees  
    if (isset($_POST['NumEntreprise']) && isset($_POST['RefOffre']) && isset($_POST['NomOffre']) && isset($_POST['DateParution']) && isset($_POST['LieuParution']) && isset($_POST['DetailOffre']) && isset($_POST['Commentaire']) && isset($_POST['VersionCV'])) { 
    
    
      $sql2 = "SELECT NomEntreprise,ContactEntreprise FROM MM_Entreprise 
                   WHERE NumEntreprise='$_POST['NumEntreprise']'";
      $result2 = mysql_query($sql2,$cxn)
                or die("Couldn't execute query");
      $row2 = mysql_fetch_assoc($result2);
    
    
    
    		// on insere le tuple (mysql_query) et au cas ou on ecrira un petit message d'erreur si la requete ne se passe pas bien (or die) 
    		$sql = 'INSERT INTO MM_Candidature VALUES("" ,"" , "'.$_POST['NumEntreprise'].'", "$NomEntreprise","$ContactEntreprise", "'.$_POST['RefOffre'].'", "'.$_POST['NomOffre'].'", "'.$_POST['DateParution'].'", "'.$_POST['LieuParution'].'", "'.$_POST['DetailOffre'].'", "'.$_POST['Commentaire'].'", "'.$_POST['VersionCV'].'" ,"")';
    		
    // on insere le tuple (mysql_query) et au cas ou, on ecrira un petit message d'erreur si la requete ne se passe pas bien (or die) 
    mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
    
    // on ferme la connexion a la base 
    mysql_close(); 
    
    echo 'La Candidature suivante a ete ajoute a la base : '.$_POST['NomOffre'].' (réf :  '.$_POST['RefOffre'].' )';  
    }  
    else { 
    echo 'Les variables du formulaire ne sont pas declarees';  
    }  
    ?>

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      $sql2 = "SELECT NomEntreprise,ContactEntreprise FROM MM_Entreprise 
                   WHERE NumEntreprise='{$_POST['NumEntreprise']}'";
    Les variables complexes (comme les tableaux et les objets), ne peuvent être interpolées (= remplacées par leur valeur) directement : vous devez marquer les début et fin du nom de variable en l'encadrant d'accolades. (cf documentation, partie Analyse des variables)

    Vous pouvez également utiliser d'autres méthodes (concaténation ou fonctions *printf) à la place de l'interpolation.

    Et il serait bon de vous protéger des injections SQL.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut
    OK merci pour ta réponse.

    J'ai donc ajouté les accolades mais il m'a mis $NomEntreprise, et $ContactEntreprise dans ma base puisqu'ils étaient entre guillements.

    J'ai enlevé les guillements mais il m'a mis une erreur.

    Comment cela se fait ?
    Merci

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2007
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 123
    Points : 71
    Points
    71
    Par défaut
    Salutations,
    premièrement je vois pas où sont les variables $NomEntreprise et $ContactEntrepris, ce que je te suggère de faire dans ta requête d'insertion, et de préciser les noms des champs, exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Insert into maTable(nom_champ1, nom_champ2) valeus('valeur1','valeur2');
    et pour le code, testes ce qui suit:
    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
     
    <?php
     
    // on teste si les variables du formulaire sont bien declarees  
    if (isset($_POST['NumEntreprise']) && isset($_POST['RefOffre']) && isset($_POST['NomOffre']) && isset($_POST['DateParution']) && isset($_POST['LieuParution']) && isset($_POST['DetailOffre']) && isset($_POST['Commentaire']) && isset($_POST['VersionCV'])) { 
     
     
      $sql2 = "SELECT NomEntreprise,ContactEntreprise FROM MM_Entreprise 
                   WHERE NumEntreprise=".$_POST['NumEntreprise'];
      $result2 = mysql_query($sql2,$cxn)
                or die("Couldn't execute query");
      $row2 = mysql_fetch_assoc($result2){
           $NomEntreprise = $row2['NomEntreprise'];
           $ContactEntreprise = $row2['ContactEntreprise'];
    }
    		// on insere le tuple (mysql_query) et au cas ou on ecrira un petit message d'erreur si la requete ne se passe pas bien (or die) 
    		$sql = "INSERT INTO MM_Candidature VALUES('' ,'' , '".$_POST['NumEntreprise']."', '$NomEntreprise','$ContactEntreprise', '".$_POST['RefOffre']."', '".$_POST['NomOffre']."', '".$_POST['DateParution']."', '".$_POST['LieuParution']."', '".$_POST['DetailOffre']."', '".$_POST['Commentaire']."', '".$_POST['VersionCV']."' ,'')";
     
    // on insere le tuple (mysql_query) et au cas ou, on ecrira un petit message d'erreur si la requete ne se passe pas bien (or die) 
    mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
     
    // on ferme la connexion a la base 
    mysql_close(); 
     
    echo 'La Candidature suivante a ete ajoute a la base : '.$_POST['NomOffre'].' (réf :  '.$_POST['RefOffre'].' )';  
    }  
    else { 
    echo 'Les variables du formulaire ne sont pas declarees';  
    }  
    ?>

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par ottoayoub Voir le message
    Salutations,
    premièrement je vois pas où sont les variables $NomEntreprise et $ContactEntrepris
    Merci pour ta réponse, je ne comprends ta citation du dessus ???

    Et autrement j'ai essayé avec ton code, mais il me met l'erreur suivante à la ligne 82 (voir en rouge)

    Parse error: syntax error, unexpected '{' in /pages/37/d181173/htdocs/xxx.com/Trait_Ajout_Candidature.php on line 82
    et pour le code, testes ce qui suit:
    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
    <?php
    
    // on teste si les variables du formulaire sont bien declarees  
    if (isset($_POST['NumEntreprise']) && isset($_POST['RefOffre']) && isset($_POST['NomOffre']) && isset($_POST['DateParution']) && isset($_POST['LieuParution']) && isset($_POST['DetailOffre']) && isset($_POST['Commentaire']) && isset($_POST['VersionCV'])) { 
    
    
      $sql2 = "SELECT NomEntreprise,ContactEntreprise FROM MM_Entreprise 
                   WHERE NumEntreprise=".$_POST['NumEntreprise'];
      $result2 = mysql_query($sql2,$cxn)
                or die("Couldn't execute query");
      $row2 = mysql_fetch_assoc($result2){
           $NomEntreprise = $row2['NomEntreprise'];
           $ContactEntreprise = $row2['ContactEntreprise'];
    }
    .......
    [/QUOTE]

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2007
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 123
    Points : 71
    Points
    71
    Par défaut
    Oups, pardon j'ai pas mis le bon code. remplace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $row2 = mysql_fetch_assoc($result2){
           $NomEntreprise = $row2['NomEntreprise'];
           $ContactEntreprise = $row2['ContactEntreprise'];
    }
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while($row2 = mysql_fetch_assoc($result2)){
           $NomEntreprise = $row2['NomEntreprise'];
           $ContactEntreprise = $row2['ContactEntreprise'];
    }

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut
    Plus d'erreur, mais c'est comme tout à l'heure, il me copie toujours $NomEntreprise, et $ContactEntreprise dans ma BDD au lieu de me mettre les valeurs correspondante à ces 2 champs.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut
    Toujours le même problème !!!

    Quelqu'un a t'il une idée ?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut
    En tatonnant, j'ai fini par trouver...

    Je vous dit comment j'ai fait, j'ai tout d'abord modifié un peu ma requete.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      $sql2 = "SELECT NomEntreprise,ContactEntreprise FROM MM_Entreprise 
                   WHERE NumEntreprise='{$_POST['NumEntreprise']}'";
      $result2 = mysql_query($sql2,$cxn)
                or die("Couldn't execute query");
      $row2 = mysql_fetch_assoc($result2);
      extract($row2);
    Et ensuite, il s'agissait d'un problème de syntaxe,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'INSERT INTO MM_Candidature VALUES("" , "'.$_POST['DateCandidature'].'", "'.$_POST['NumEntreprise'].'", "'.$NomEntreprise.'", "'.$ContactEntreprise.'", "'.$_POST['RefOffre'].'", "'.$_POST['NomOffre'].'", "'.$_POST['DateParution'].'", "'.$_POST['LieuParution'].'", "'.$_POST['DetailOffre'].'", "'.$_POST['Commentaire'].'", "'.$_POST['VersionCV'].'" ,"","N")';

    Voilà ...

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

Discussions similaires

  1. [XL-2007] Macro VBA ajout un champ dans base de donnée
    Par Sangoku76 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/10/2012, 09h35
  2. Erreur : ajout dans bases de données
    Par koma777 dans le forum ASP
    Réponses: 4
    Dernier message: 15/03/2010, 17h49
  3. [MySQL] Insertion automatique dans base de données
    Par Go_Ahead dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/01/2009, 19h14
  4. Impossible d'ajouter données dans base de données
    Par spartaxhit dans le forum Requêtes
    Réponses: 1
    Dernier message: 14/01/2008, 02h58
  5. [MySQL] Nombre dans base de donnée, ajouter +1 au nombre
    Par abinteractive dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/09/2007, 09h48

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