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 :

Erreur Syntaxe SQL [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Par défaut Erreur Syntaxe SQL
    Bonjour bonjour,

    Voila j'aimerai créer un module de modification de données depuis un formulaire j'ai commencé et voila le résultat :
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
     
    <div id="aft">
     <!-- frm Search
    ================================================== -->
    <fieldset class="frmsearch">
            <legend class="ttr1"><h4>Rechercher d'un salarié</h4></legend>
            <p class="txt">Saisir le<b> matricule :</b></p>
              <form  method="POST">
                <input type="text" placeholder="Matricule du salarié" name="matricule">
                <p class="txt">Ou saisir le <b>Nom</b> et <b>Prenom :</b></p>
                <input type="text" placeholder="Nom du salarié" name="nom">
                <input type="text" placeholder="Prénom du salarié" name="prenom">
                <input class="bigbtn" type="submit" value="Rechercher" name="searchbtn" action="creationfeuille.html">
                <input class="bigbtn" type="reset" name="reset" value="Réinitialiser">
              </form>
    </fieldset>
    <?php
    // 1- récupération
        $matricule_search = ( !empty($_POST['matricule_search']) )? $_POST['matricule_search'] : '';
        $nom_search = ( !empty($_POST['nom_search']) )? $_POST['nom_search'] : '';
        $prenom_search = ( !empty($_POST['prenom_search']) )? $_POST['prenom_search'] : '';
     
    // 2- initialisation 
        $where = array();
        $params = array();
     
     
    // 3- construction de la requête 
    if( !empty($matricule_search) )
      {
        $where[] = " (matricule_employe LIKE ?) ";
        $params[] = '%'.$matricule_search.'%';
      }
     
     
    if( !empty($nom_search) && !empty($prenom_search) )
      {
        $where[] = " (nom_employe LIKE ? AND prenom_employe LIKE ?) ";
        $params[] = '%'.$nom_search.'%';
        $params[] = '%'.$prenom_search.'%';
      }
     
     
    // 4- clause WHERE
      $where = ( !empty($where) )? " WHERE " . implode( " OR ", $where ) : ""; // OR : l'un OU l'autre
     
        $matricule_employe=$_POST['matricule_employe'];
        $nom_employe=$_POST['nom_employe'];
        $prenom_employe=$_POST['prenom_employe'];
        $datenaiss_employe=$_POST['datenaiss_employe'];
        $date_embauche_employe=$_POST['date_embauche_employe'];
        $photo_employe=$_POST['photo_employe'];
        $contrat_employe=$_POST['contrat_employe'];
        $fonction_employe=$_POST['fonction_employe'];
        $statut_employe=$_POST['statut_employe'];
        $carte_identite_employe=$_POST['carte_identite_employe'];
        $carte_btp_employe=$_POST['carte_btp_employe'];
     
    // 5- finalisation :
      $sql = "UDAPTE employe_table SET matricule_employe =".$_POST['matricule_employe'].", nom_employe =".$_POST['nom_employe'].", prenom_employe =".$_POST['prenom_employe'].", datenaiss_employe =".$_POST['datenaiss_employe'].", date_embauche_employe =".$_POST['date_embauche_employe'].", 
      photo_employe =".$_POST['photo_employe']." , contrat_employe =".$_POST['contrat_employe']." , fonction_employe =".$_POST['fonction_employe'].", statut_employe =".$_POST['statut_employe']." , carte_identite_employe =".$_POST['carte_identite_employe'].", carte_btp_employe =".$_POST['carte_btp_employe']."" . $where . "";
     
      $db = include 'includes/connect_bdd.php';
      try { 
        //la ligne qui lance la requête préparée
        $stmt = $db->prepare($sql);
        //on affecte les marqueurs précis sur les filtres
        $stmt->execute(array('matricule_employe' => $matricule_employe,'nom_employe' => $nom_employe,'prenom_employe' => $prenom_employe,
        'datenaiss_employe' => $datenaiss_employe,'date_embauche_employe' => $date_embauche_employe,'photo_employe' => $photo_employe,'contrat_employe' => $contrat_employe,
        'fonction_employe' => $fonction_employe,'statut_employe' =>$statut_employe,'carte_identite_employe' =>$carte_identite_employe,'carte_btp_employe' =>$carte_btp_employe));
     } 
     catch (Exception $e) {
        //s'il y a un problème PHP ou SQL, tout s'affichera ici
        print "Erreur ! " . $e->getMessage() . "<br/>";
     }
    ?>
    <!-- frm de création de fiche signalitique 
     
    ================================================== -->
    <fieldset  class="form">
            <legend class="ttr1"><h4>Fiche signalétique</h4></legend>
        <form action="index.php" method="post">
     
        <p class="contact"><label class="txt2"> Saisir le <b>Matricule :</b></label><br/></p>
            <input type="text" placeholder="Matricule du salarié" name="matricule" required >
     
         <p class="contact"> <label class="txt2"> Saisir le <b>Nom</b>:</label></p>
            <input type="text" placeholder="Nom du salarié" name="nomslr"><br/>
     
        <p class="contact"><label class="txt2"> Saisir le <b>Prenom</b> : </label></p>
            <input type="text" placeholder="Prénom du salarié" name="prenomslr"></label><br/>
     
        <p class="contact"><label class="txt2"> Saisir la <b>Date de naissance</b> : </label></p>
            <input type="date" placeholder="Date de naissance du salarié" name="datedenaissanceslr"><br/>
     
        <p class="contact"><label class="txt2"> Saisir la <b>Date d'entrée dans l'entreprise</b> :</label></p>
            <input type="date" placeholder="Date d'entrée dans l'entreprise" name="dateentreeentreprise"><br/>
     
        <p class="contact"><label class="txt2" for="photoprofil">Fichier <b> Photo de profil</b> (PDF, PNG, JPG |max. 1 Mo):</label></p>
          <input type="hidden" name="MAX_FILE_SIZE" id="1048576" >
          <input type="file" name="photoprofil" id="photoprofil"><br/>
     
        <p class="contact"><label class="txt2"> Saisir le <b>Contrat</b> :</label></p>
                <select name="contrat">
                    <option value="CDI">CDI</option>
                </select><br/><br/>
        <p class="contact"><label class="txt2"> Saisir la <b>Fonction</b> : </label></p>
             <select name="fonction">
             <optgroup label="Cadre">
                                <option value="Responsable_administratif_et_comptable">Responsable administratif et comptable</option>
                                <option >Chef</option>
                        </optgroup>
                        <optgroup label="Etam">
     
                                <option >Employée administratif</option>
     
                        </optgroup>
     
                        <optgroup label="Ouvrier">
                                <option >Ouvrier</option>
                        </optgroup>
             </select> <br/><br/>
     
            <p class="contact"><label class="txt2"> Saisir le <b>Statut</b> : </label></p>
             <select name="Statut">
                <option value="cadre">Cadre</option>
              </select><br/>
     
            <p class="contact"><label class="txt2" for="carteidentite">Fichier <b>carte d'identité </b>(PDF, PNG, JPG |max. 1 Mo):</label></p>
              <input type="hidden" name="MAX_FILE_SIZE" id="1048576" >
              <input type="file" name="carteidentite" id="carteidentite"><br/>
     
            <p class="contact"><label class="txt2" for="carteBTP">Fichier <b>carte identification professionnelle  BTP </b>(PDF, PNG, JPG |max. 1 Mo):</label></p>
              <input type="hidden" name="MAX_FILE_SIZE" id="1048576" >
              <input type="file" name="carteBTP" id="carteBTP">
     
            </br><label class="txt2"> <input type="submit" value="Valider" name="Valider" action="creationfeuille.html"></label><br/>
              <label class="txt2"> <input type="reset" value="Reinitialiser" name="Réinitialiser" action="creationfeuille.html"></label><br/>
        </form>
    </fieldset>
     
    </div>
    </body>
    </html>
    Voici le message d'erreur :

    Erreur ! SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UDAPTE employe_table SET matricule_employe =, nom_employe =, prenom_employe =, d' at line 1
    Donc il y a bien une erreur de syntaxe

    Donc je voulais savoir si vous pouvez m'aider

    PS : Si vous voulez plus informations n'hésitez pas

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Une requête préparée ça fonctionne comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $sql = "UDAPTE employe_table SET matricule_employe = :matricule_employe , nom_employe = :nom_employe, prenom_employe = :prenom_employe, datenaiss_employe = :datenaiss_employe, etc.;
    Par contre il faut revoir la logique : tu ne peux pas lancer l'update sans savoir quels sont tes résultats de recherche.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- UDAPTE ??

    2- tu mélanges le code que je t'ai donné pour une recherche multi-critères avec un code de modification...

    3- il faut être plus rigoureux et logique.
    1. Récupération des données
    2. Gestion des erreurs
    3. Construction de la requête
    4. Preparation / Exécution

    Mais d'abord, on fait une recherche personnelle : ce ne sont pas les exemples de codes qui manquent.

  4. #4
    Membre confirmé Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Par défaut
    Ok merci pour ta réponse

    Ce que j'aimerai faire c'est un module de modification en fonction du matricule

    c'est pour ça que j'ai le module de recherche mais c'est une mauvaise idée

  5. #5
    Invité
    Invité(e)
    Par défaut
    Non. C'est une mauvaise connaissance.

    Au lieu de vouloir ré-inventer la roue : recherche ce qui a déjà été fait !!

    Et prends un papier et un crayon pour noter tout, logiquement, et étape par étape.
    Dernière modification par Invité ; 02/07/2018 à 12h15.

  6. #6
    Membre confirmé Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Par défaut
    Ok merci du conseil

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

Discussions similaires

  1. Erreur syntaxe SQL
    Par _developpeur_ dans le forum VBA Access
    Réponses: 4
    Dernier message: 04/07/2011, 21h14
  2. Erreur syntaxe SQL
    Par sgcb01 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 20/11/2008, 10h18
  3. Erreur syntaxe SQL DELETE avec sous requête
    Par jeanbenoit1987 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 07/12/2007, 12h14
  4. Erreur syntaxe SQL
    Par diaboloche dans le forum Access
    Réponses: 2
    Dernier message: 02/02/2007, 17h30
  5. Erreur syntaxe SQL
    Par SaeZ dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/06/2006, 13h04

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