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 :

Query was empty après requête SQL


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 96
    Points : 48
    Points
    48
    Par défaut Query was empty après requête SQL
    Bonjour à tous !

    Alors voila j'ai une page d'insertion.php pour aller enregistrer des données dans ma BDD.

    Seulement voila j'ai un problème. Ma page insertion.php est constituée d'un formulaire; Et si dans ce formulaire on ne met rien dans les champs: "mex_reelle, mex_prevue, mise_en_service", mon insertion fonctionne mais le navigateur me renvoie: "Query was empty".

    Voici le code correspondant a mon problème:
    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
    <?php
     
    	//==========================
    	//déclaration des variables
    	//==========================
     
      //poste source:
      $postesource              = $_POST["poste_source"] ;
      //depart:
      $depart                   = $_POST["depart"] ;
      //N° GDO:
      $gdo                      = $_POST["num_gdo_poste_a_equiper"] ;
      //equipement à poser:
      $equipement               = addslashes($_POST["equipement_a_poser"]) ;
      //nom de poste:
      $nomposte                 = addslashes($_POST["nom_de_poste"]) ;
      //N° affaire:
      $numaffaire               = addslashes($_POST["num_affaire"]) ;
      //commune:
      $commune                  = addslashes($_POST["commune"]) ;
      //chargeé d affaire:
      $chargeaffaire            = addslashes($_POST["charge_affaire"]) ;
      //IPT:
      $ipt                      = addslashes($_POST["ipt"]) ;
      //Radio ou RTC:
      $radiortc                 = addslashes($_POST["radio_ou_rtc"]) ;
      //position de l affaire:
      $positionaffaire          = addslashes($_POST["position_affaire"]) ;
      //Commentaires:
      $commentaires             = addslashes($_POST["commentaires"]) ;
      //Programme:
      $prg                      = addslashes($_POST["prg"]) ;
      //MEX prévue:
      $mexprevue                = addslashes($_POST["mex_prevue"]) ;
      //MEX réelle:
      $mexreelle                = addslashes($_POST["mex_reelle"]) ;
      //Mise en service:
      $miseenservice            = addslashes($_POST["mise_en_service"]) ;
      //Modification schéma d exploit:
      $modif                    = addslashes($_POST["modification_schema_exploitation"]) ;
     
    //=====================================
    // On vérifie si les champs sont vides 
    //=====================================
     
    if(empty($postesource) OR empty($depart)) 
        { 
        echo '<font color="red">Attention, les champs <u><b>Poste Source</b></u> et <u><b>Départ</b></u> ne peuvent pas rester vides !</font>' . "\n"; 
        echo '<a href="http://xxxxx/xxxxx/xxxxx/insertion1_calvados.html">Retour</a>';
     
     } 
     
    //==========================================================
    // Aucun champ n est vide, on peut enregistrer dans la table 
    //==========================================================
    else      
        { 
     
    	//=====================
    	//connection au serveur
    	//=====================
      $connexion = mysql_connect( "xxxxxxx", "xxxxx", "xxxx" ) ;
     
    	//=================================  
    	//sélection de la base de données:
    	//=================================
      $db  = mysql_select_db( "xxx" ) ;
     
    	//===================================
    	//récupération des valeurs des champs:
    	//===================================
     
      //création de la requête SQL:
      $sql = "INSERT  INTO suivi_omt_calvados (poste_source, depart, num_gdo_poste_a_equiper, equipement_a_poser, nom_de_poste, num_affaire, commune, charge_affaire, ipt, radio_ou_rtc, position_affaire,  commentaires, prg, mex_prevue, mex_reelle, mise_en_service, modification_schema_exploitation)
                VALUES ( '$postesource', '$depart', '$gdo', '$equipement', '$nomposte', '$numaffaire', '$commune', '$chargeaffaire', '$ipt', '$radiortc', '$positionaffaire', '$commentaires', '$prg', '$mexprevue', '$mexreelle', '$miseenservice', '$modif') " ;
     
    if($miseenservice)
    {
    $sqldatemes = "UPDATE suivi_omt_calvados SET mise_en_service_date = STR_TO_DATE(mise_en_service, '%d/%m/%Y')";
    }
     
    if($mexprevue)
    {
    $sqldatemexp = "UPDATE suivi_omt_calvados SET mex_prevue_date = STR_TO_DATE(mex_prevue, '%d/%m/%Y')";
    }
     
    if($mexreelle)
    {
    $sqldatemexr = "UPDATE suivi_omt_calvados SET mex_reelle_date = STR_TO_DATE(mex_reelle, '%d/%m/%Y')";
    }
     
      //exécution de la requête SQL:
      $requete = mysql_query($sql, $connexion) or die( mysql_error() ) ;
     
      //exécution de la requête SQLDATE mise en service:
      $requetedatemes = mysql_query($sqldatemes, $connexion) or die( mysql_error() ) ;
     
      //exécution de la requête SQLDATE mex prévue:
      $requetedatemexp = mysql_query($sqldatemexp, $connexion) or die( mysql_error() ) ;
     
      //exécution de la requête SQLDATE mex reelle:
      $requetedatemexr = mysql_query($sqldatemexr, $connexion) or die( mysql_error() ) ;
    Si vous avez des solutions je vous en remercie d'avance !

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Vérifie que les champs ont été remplis avant de lancer ton traitement.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    Oui mais je souhaite aussi pouvoir faire mon enregistrement si ces champs sont vides...

  4. #4
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Mets tes requêtes dans tes conditions alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if($miseenservice)
    {
    $sqldatemes = "UPDATE suivi_omt_calvados SET mise_en_service_date = STR_TO_DATE(mise_en_service, '%d/%m/%Y')";
    $requetedatemes = mysql_query($sqldatemes, $connexion) ;
    }

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    Merci pour ton aide.

    Ta solution fonctionne quand je ne rentre rien dans les champs.
    Je n'ai plus de query was empty.

    Mais maintenant c'est bizarre parce que j'ai l'impression que mes if ne sont pas pris en compte.

    Les requêtes ne sont actualisées dans ma BDD qu'a l'enregistrement suivant si je mets des données dans les 3 champs. si a l'enregistrement suivant je ne mets rien dans mes 3 champs, les dates pour l'enregistrement précédent ne sont pas actualisées

  6. #6
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourquoi tu as une colonne mise_en_service et une colonne mise_en_service_date ?

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    j'ai un colonne mise_en_service (VARCHAR) et une colonne mise_en_service_date (DATE).
    j'ai aussi une colonne mex_reelle (VARCHAR) et mex_reelle_date (DATE).
    j'ai aussi une colonne mex_prevue (VARCHAR) et mex_prevue_date (DATE).

    Je suis obligé de faire comme ca car l'utilisateur rentre ses dates sous la forme JJ/MM/AAAA et moi j'ai un tableau où je dois faire des requêtes sur des dates.

    Donc pour pouvoir faire ca il me faut des champs de type DATE AAAA-MM-JJ.

    C'est pour ca que je transforme mes champs JJ/MM/AAAA en AAAA-MM-JJ avec la fonction STR_TO_DATE...

  8. #8
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourquoi tu ne fais pas directement ton insertion dans le bon format ?

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Pourquoi tu ne fais pas directement ton insertion dans le bon format ?
    Je n'ai pas le choix. Je suis en stage en entreprise et il faut que je fasse comme ca car certains futurs utilisateurs de mon site ne sont pas a l'aise avec l'informatique donc il ne comprendraient pas pourquoi il faut mettre une date au format AAAA-MM-JJ. Enfin c'est meme pas ca. ils veulent rentrer leur dates comme avant donc JJ/MM/AAAA

  10. #10
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Certes mais tu peux faire directement l'insertion dans le format converti plutôt que d'inserer le mauvais format dans une colonne puis faire un update dans une autre colonne.

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    A oui effectivement mais alors la jvai pas avoir les compétences. Je suis débutant...

  12. #12
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    Est-ce que ceci serait un bon début de réponse?
    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
    <?php
     
    	//==========================
    	//déclaration des variables
    	//==========================
     
      //poste source:
      $postesource              = $_POST["poste_source"] ;
      //depart:
      $depart                   = $_POST["depart"] ;
      //N° GDO:
      $gdo                      = $_POST["num_gdo_poste_a_equiper"] ;
      //equipement à poser:
      $equipement               = addslashes($_POST["equipement_a_poser"]) ;
      //nom de poste:
      $nomposte                 = addslashes($_POST["nom_de_poste"]) ;
      //N° affaire:
      $numaffaire               = addslashes($_POST["num_affaire"]) ;
      //commune:
      $commune                  = addslashes($_POST["commune"]) ;
      //chargeé d affaire:
      $chargeaffaire            = addslashes($_POST["charge_affaire"]) ;
      //IPT:
      $ipt                      = addslashes($_POST["ipt"]) ;
      //Radio ou RTC:
      $radiortc                 = addslashes($_POST["radio_ou_rtc"]) ;
      //position de l affaire:
      $positionaffaire          = addslashes($_POST["position_affaire"]) ;
      //Commentaires:
      $commentaires             = addslashes($_POST["commentaires"]) ;
      //Programme:
      $prg                      = addslashes($_POST["prg"]) ;
      //MEX prévue:
      $mexprevue                = addslashes($_POST["mex_prevue"]) ;
      //MEX réelle:
      $mexreelle                = addslashes($_POST["mex_reelle"]) ;
      //Mise en service:
      $miseenservice            = addslashes($_POST["mise_en_service"]) ;
      //Modification schéma d exploit:
      $modif                    = addslashes($_POST["modification_schema_exploitation"]) ;
     
    //=====================================
    // On vérifie si les champs sont vides 
    //=====================================
     
    if(empty($postesource) OR empty($depart)) 
        { 
        echo '<font color="red">Attention, les champs <u><b>Poste Source</b></u> et <u><b>Départ</b></u> ne peuvent pas rester vides !</font>' . "\n"; 
        echo '<a href="http://xxxxxx/xxxxx/xxxxx/insertion1_calvados.html">Retour</a>';
     
     } 
     
    //==========================================================
    // Aucun champ n est vide, on peut enregistrer dans la table 
    //==========================================================
    else      
        { 
     
    	//=====================
    	//connection au serveur
    	//=====================
      $connexion = mysql_connect( "xxxxx", "xxxxx", "xxxxx" ) ;
     
    	//=================================  
    	//sélection de la base de données:
    	//=================================
      $db  = mysql_select_db( "xxx" ) ;
     
    	//===================================
    	//récupération des valeurs des champs:
    	//===================================
     
    $mexreelledate = "UPDATE suivi_omt_calvados SET mex_reelle_date = STR_TO_DATE (mex_reelle, '%d/%m/%Y')";
     
      //création de la requête SQL:
      $sql = "INSERT  INTO suivi_omt_calvados (poste_source, depart, num_gdo_poste_a_equiper, equipement_a_poser, nom_de_poste, num_affaire, commune, charge_affaire, ipt, radio_ou_rtc, position_affaire,  commentaires, prg, mex_prevue, mex_reelle, mise_en_service, modification_schema_exploitation)
                VALUES ( '$postesource', '$depart', '$gdo', '$equipement', '$nomposte', '$numaffaire', '$commune', '$chargeaffaire', '$ipt', '$radiortc', '$positionaffaire', '$commentaires', '$prg', '$mexprevue', '$mexreelledate', '$miseenservice', '$modif') " ;
    Ca ne peut surement pas marche... Je sais pas

  13. #13
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    Non, ca ne marche pas. Le problème doit être ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = "INSERT  INTO suivi_omt_calvados (poste_source, depart, num_gdo_poste_a_equiper, equipement_a_poser, nom_de_poste, num_affaire, commune, charge_affaire, ipt, radio_ou_rtc, position_affaire,  commentaires, prg, mex_prevue, mex_reelle, mise_en_service, modification_schema_exploitation)
                VALUES ( '$postesource', '$depart', '$gdo', '$equipement', '$nomposte', '$numaffaire', '$commune', '$chargeaffaire', '$ipt', '$radiortc', '$positionaffaire', '$commentaires', '$prg', '$mexprevue', '$mexreelledate', '$miseenservice', '$modif') " ;
    puisque j'ai cette erreur:
    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 '%m/%Y')', '', '')' at line 2
    Je ne connais pas assez les synthaxes

  14. #14
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    en fait j'ai mes champs: mex-reelle (VARCHAR), mex_reelle_date (DATE), mex_prevue (VARCHAR), mex_prevue_date (DATE), mise_en_service (VARCHAR), mise_en_service_date (DATE).

    Je suis obligé de faire comme ca (pour des raisons professionnelles): Rentrer dans un des champs de type VARCHAR une date sous la forme JJ/MM/AAAA puis ensuite je vais transformer cette date sous la forme AAAA-MM-JJ pour la mettre dans mon champ correspondant de type DATE (mes champs correspondant de types DATE me servent a faire des requêtes sur les dates dans ma BDD).

    C'est un peu compliqué.

    Et donc mon problème c'est que si je ne rentre rien dans les champs de type VARCHAR de mon formulaire, j'ai une réponse: "Query was empty".


    Il semblerait qu'il soit possible de faire directement l'insertion dans le format converti plutôt que d'inserer le mauvais format dans une colonne puis faire un update dans une autre colonne.

    Mais je ne vois pas trop comment faire.

    J'ai essayé ca :
    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
    <?php
     
    	//==========================
    	//déclaration des VARIABLES
    	//==========================
     
      //poste source:
      $postesource              = $_POST["poste_source"] ;
      //depart:
      $depart                   = $_POST["depart"] ;
      //N° GDO:
      $gdo                      = $_POST["num_gdo_poste_a_equiper"] ;
      //equipement à poser:
      $equipement               = addslashes($_POST["equipement_a_poser"]) ;
      //nom de poste:
      $nomposte                 = addslashes($_POST["nom_de_poste"]) ;
      //N° affaire:
      $numaffaire               = addslashes($_POST["num_affaire"]) ;
      //commune:
      $commune                  = addslashes($_POST["commune"]) ;
      //chargeé d affaire:
      $chargeaffaire            = addslashes($_POST["charge_affaire"]) ;
      //IPT:
      $ipt                      = addslashes($_POST["ipt"]) ;
      //Radio ou RTC:
      $radiortc                 = addslashes($_POST["radio_ou_rtc"]) ;
      //position de l affaire:
      $positionaffaire          = addslashes($_POST["position_affaire"]) ;
      //Commentaires:
      $commentaires             = addslashes($_POST["commentaires"]) ;
      //Programme:
      $prg                      = addslashes($_POST["prg"]) ;
      //MEX prévue:
      $mexprevue                = addslashes($_POST["mex_prevue"]) ;
      //MEX réelle:
      $mexreelle                = addslashes($_POST["mex_reelle"]) ;
      //Mise en service:
      $miseenservice            = addslashes($_POST["mise_en_service"]) ;
      //Modification schéma d exploit:
      $modif                    = addslashes($_POST["modification_schema_exploitation"]) ;
     
    //=====================================
    // ON vérifie si les champs sont vides 
    //=====================================
     
    IF(empty($postesource) OR empty($depart)) 
        { 
        echo '<font color="red">Attention, les champs <u><b>Poste Source</b></u> et <u><b>Départ</b></u> ne peuvent pas rester vides !</font>' . "\n"; 
        echo '<a href="http://xxxxxx/xxxxx/xxxxx/insertion1_calvados.html">Retour</a>';
     
     } 
     
    //==========================================================
    // Aucun champ n est vide, ON peut enregistrer dans la TABLE 
    //==========================================================
    else      
        { 
     
    	//=====================
    	//connection au serveur
    	//=====================
      $connexion = mysql_connect( "xxxxx", "xxxxx", "xxxxx" ) ;
     
    	//=================================  
    	//sélection de la base de données:
    	//=================================
      $db  = mysql_select_db( "xxx" ) ;
     
    	//===================================
    	//récupération des valeurs des champs:
    	//===================================
     
    $mexreelledate = "UPDATE suivi_omt_calvados SET mex_reelle_date = STR_TO_DATE (mex_reelle, '%d/%m/%Y')";
     
      //création de la requête SQL:
      $sql = "INSERT  INTO suivi_omt_calvados (poste_source, depart, num_gdo_poste_a_equiper, equipement_a_poser, nom_de_poste, num_affaire, commune, charge_affaire, ipt, radio_ou_rtc, position_affaire,  commentaires, prg, mex_prevue, mex_reelle, mise_en_service, modification_schema_exploitation)
                VALUES ( '$postesource', '$depart', '$gdo', '$equipement', '$nomposte', '$numaffaire', '$commune', '$chargeaffaire', '$ipt', '$radiortc', '$positionaffaire', '$commentaires', '$prg', '$mexprevue', '$mexreelledate', '$miseenservice', '$modif') " ;
    Mais forcément ca ne marche pas...

    Le problème doit être ici: au niveau du '$mexreelledate'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = "INSERT  INTO suivi_omt_calvados (poste_source, depart, num_gdo_poste_a_equiper, equipement_a_poser, nom_de_poste, num_affaire, commune, charge_affaire, ipt, radio_ou_rtc, position_affaire,  commentaires, prg, mex_prevue, mex_reelle, mise_en_service, modification_schema_exploitation)
                VALUES ( '$postesource', '$depart', '$gdo', '$equipement', '$nomposte', '$numaffaire', '$commune', '$chargeaffaire', '$ipt', '$radiortc', '$positionaffaire', '$commentaires', '$prg', '$mexprevue', '$mexreelledate', '$miseenservice', '$modif') " ;
    puisque j'ai cette erreur:
    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 '%m/%Y')', '', '')' at line 2
    Je ne connais pas assez les synthaxes.

    Si vous avez des solutions a me proposer...

    Merci d'avance !

  15. #15
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Trop de messages tue le message

    Tu as juste a mettre ce que tu faisais dans ta requête UPDATE dans ton INSERT (je te mets l'exemple avec juste une colonne) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = 'INSERT  INTO suivi_omt_calvados (mex_prevue)
                VALUES ( STR_TO_DATE("' . $mexreelle . '", "%d/%m/%Y") )';

  16. #16
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    $sql = 'INSERT INTO suivi_omt_calvados (mex_prevue)
    VALUES ( STR_TO_DATE("' . $mexreelle . '", "%d/%m/%Y") )';
    Le problème c'est que j'ai plein de champs a remplir.

    Donc voici le code que j'ai (Ca ne marche pas):
    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
    <?php
     
    	//==========================
    	//déclaration des variables
    	//==========================
     
      //poste source:
      $postesource              = $_POST["poste_source"] ;
      //depart:
      $depart                   = $_POST["depart"] ;
      //N° GDO:
      $gdo                      = $_POST["num_gdo_poste_a_equiper"] ;
      //equipement à poser:
      $equipement               = addslashes($_POST["equipement_a_poser"]) ;
      //nom de poste:
      $nomposte                 = addslashes($_POST["nom_de_poste"]) ;
      //N° affaire:
      $numaffaire               = addslashes($_POST["num_affaire"]) ;
      //commune:
      $commune                  = addslashes($_POST["commune"]) ;
      //chargeé d affaire:
      $chargeaffaire            = addslashes($_POST["charge_affaire"]) ;
      //IPT:
      $ipt                      = addslashes($_POST["ipt"]) ;
      //Radio ou RTC:
      $radiortc                 = addslashes($_POST["radio_ou_rtc"]) ;
      //position de l affaire:
      $positionaffaire          = addslashes($_POST["position_affaire"]) ;
      //Commentaires:
      $commentaires             = addslashes($_POST["commentaires"]) ;
      //Programme:
      $prg                      = addslashes($_POST["prg"]) ;
      //MEX prévue:
      $mexprevue                = addslashes($_POST["mex_prevue"]) ;
      //MEX réelle:
      $mexreelle                = addslashes($_POST["mex_reelle"]) ;
      //Mise en service:
      $miseenservice            = addslashes($_POST["mise_en_service"]) ;
      //Modification schéma d exploit:
      $modif                    = addslashes($_POST["modification_schema_exploitation"]) ;
     
    //=====================================
    // On vérifie si les champs sont vides 
    //=====================================
     
    if(empty($postesource) OR empty($depart)) 
        { 
        echo '<font color="red">Attention, les champs <u><b>Poste Source</b></u> et <u><b>Départ</b></u> ne peuvent pas rester vides !</font>' . "\n"; 
        echo '<a href="http://127.0.0.1/suivi_omt/insertion1_calvados.html">Retour</a>';
     
     } 
     
    //==========================================================
    // Aucun champ n est vide, on peut enregistrer dans la table 
    //==========================================================
    else      
        { 
     
    	//=====================
    	//connection au serveur
    	//=====================
      $connexion = mysql_connect( "127.0.0.1", "root", "" ) ;
     
    	//=================================  
    	//sélection de la base de données:
    	//=================================
      $db  = mysql_select_db( "xxx" ) ;
     
    	//===================================
    	//récupération des valeurs des champs:
    	//===================================
     
      //création de la requête SQL:
      $sql = "INSERT  INTO suivi_omt_calvados (poste_source, depart, num_gdo_poste_a_equiper, equipement_a_poser, nom_de_poste, num_affaire, commune, charge_affaire, ipt, radio_ou_rtc, position_affaire,  commentaires, prg, mex_prevue, mex_reelle, mise_en_service, modification_schema_exploitation)
                VALUES ( '$postesource', '$depart', '$gdo', '$equipement', '$nomposte', '$numaffaire', '$commune', '$chargeaffaire', '$ipt', '$radiortc', '$positionaffaire', '$commentaires', '$prg', '$mexprevue', STR_TO_DATE("' . $mexreelle . '", "%d/%m/%Y"), '$miseenservice', '$modif') " ;
     
     
     
      //exécution de la requête SQL:
      $requete = mysql_query($sql, $connexion) or die( mysql_error() ) ;
    Avec la partie qui nous intéresse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //création de la requête SQL:
      $sql = "INSERT  INTO suivi_omt_calvados (poste_source, depart, num_gdo_poste_a_equiper, equipement_a_poser, nom_de_poste, num_affaire, commune, charge_affaire, ipt, radio_ou_rtc, position_affaire,  commentaires, prg, mex_prevue, mex_reelle, mise_en_service, modification_schema_exploitation)
                VALUES ( '$postesource', '$depart', '$gdo', '$equipement', '$nomposte', '$numaffaire', '$commune', '$chargeaffaire', '$ipt', '$radiortc', '$positionaffaire', '$commentaires', '$prg', '$mexprevue', STR_TO_DATE("' . $mexreelle . '", "%d/%m/%Y"), '$miseenservice', '$modif') " ;

  17. #17
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    j'ai repris ton code en y incluant le traitement des dates et de la sécurité.
    On n'utilise pas addslashes() pour échapper des données à destination de MySQL mais dans ton cas mysql_real_escape_string().
    D'ailleurs, les fonctions mysql_xxx sont obsolètes et il faut passer soit aux fonctions mysqli_xxx soit à PDO.
    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
    <?php
     
    if (empty($_POST['poste_source']) || empty($_POST['depart'])) 
    { 
        echo
    <<<'HTML'
            <font color="red">Attention, les champs <u><b>Poste Source</b></u> et <u><b>Départ</b></u> ne peuvent pas rester vides !</font>
            <a href="http://127.0.0.1/suivi_omt/insertion1_calvados.html">Retour</a>
    HTML;
    }
    else
    {
        $cnx = mysql_connect('127.0.0.1', 'root', '' );
        $db  = mysql_select_db('xxx');
     
        // données échappées pour MySQL
        /** @var array  array(table field => escaped value) */ 
        $data = array();
     
        // liste des colonnes et des clés du tableau $_POST
        // dans ton cas, les clés du tableau $_POST correspondent aux colonnes de ta table
        // le traitement des dates est spécifique
        $fields = array(
            'poste_source',
            'depart',
            'num_gdo_poste_a_equiper',
            'equipement_a_poser',
            'nom_de_poste',
            'num_affaire',
            'commune',
            'charge_affaire',
            'ipt',
            'radio_ou_rtc',
            'position_affaire',
            'commentaires',
            'prg',
            'modification_schema_exploitation'
        );
     
        foreach ($fields as $key)
        {
            $data[$key] = (isset($_POST[$key]))
                              ? '"'.mysql_real_escape_string($_POST[$key]).'"'
                              : '';
        }
     
        // traitement spécifique aux dates
        $check_date =
            function($key) use (&$data)
            {
                if (isset($_POST[$key]) && (($date = DateTime::createFromFormat('d/m/Y', $_POST[$key])) !== false))
                {
                    $data[$key]          = '"'.mysql_real_escape_string($_POST[$key]).'"';
                    $data["{$key}_date"] = '"'.mysql_real_escape_string($date->format('Y-m-d')).'"';
                }  
            };
     
        $check_date('mex_prevue');    
        $check_date('mex_reelle');    
        $check_date('mise_en_service');    
     
        $sql  = 'INSERT INTO suivi_omt_calvados ('.implode(', ', array_keys($data)).') VALUES ('.implode(', ', $data).')';
        $exec = mysql_query($sql) or die(mysql_error());
    }
    Ça sort du four alors croisage des orteils...

  18. #18
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    Merci beaucoup rawsrc de venir m'aider!

    Alors j'ai pas compris grand chose a ton code, mais t'es un génie !

    C'est absolument ce que je cherchais a faire.

    Deja je n'ai aucun problème avec les apostrophes, et en plus mes champs de type DATE sont bien mis a jour/enregistrés.
    Et en plus de ca, j'ai toutes les même fonctionnalité qu'avant!

    Bref tu viens de résoudre mon problème !

    D'ailleurs, les fonctions mysql_xxx sont obsolètes et il faut passer soit aux fonctions mysqli_xxx soit à PDO.
    Maintenant que j'ai plus de temps car mon problème est résolu, je vais pouvoir m'occuper de mettre a jour mon code en utilisant les fonctions mysqli_xxx.

    J'ai juste un dernier problème, lorsque je test de faire une insertion sans rien rentrer, je devrais avoir la phrase: "Attention, les champs Poste Source et Départ ne peuvent pas rester vide" et le lien retour.

    J'obtiens bien ceci, donc la sécurité est fonctionnelle, seulement il me renvoie quand même un code d'erreur:

    Attention, les champs Poste Source et Départ ne peuvent pas rester vides ! Retour
    Notice: Undefined variable: exec in C:\Program Files\EasyPHP-5.3.9\www\suivi_omt\insertion2_calvados.php on line 77
    L'insertion à échouéeRetour
    Warning: mysql_close(): no MySQL-Link resource supplied in C:\Program Files\EasyPHP-5.3.9\www\suivi_omt\insertion2_calvados.php on line 89
    Donc en fait il considere aussi que l'insertion a echoué, mais en fait justement il ne devrait rien essayer d'insérer.

    Je ne vois pas d'où vient le problème. Voici le code entier de ma page d'insertion:
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
      "http://www.w3.org/TR/html4/loose.dtd"> 
    <html>
      <head>
    <link rel="stylesheet" type="text/css" href="insertion.css" />
        <title>Inserer un OMT dans la base de données du Calvados</title>
      </head>
    <body>
     
    <?php
     
    if (empty($_POST['poste_source']) || empty($_POST['depart'])) 
    { 
        echo
    <<<'HTML'
            <font color="red">Attention, les champs <u><b>Poste Source</b></u> et <u><b>Départ</b></u> ne peuvent pas rester vides !</font>
            <a href="http://127.0.0.1/suivi_omt/insertion1_calvados.html">Retour</a>
    HTML;
    }
    else
    {
        $connexion = mysql_connect('127.0.0.1', 'root', '' );
        $db  = mysql_select_db('xxx');
     
        // données échappées pour MySQL
        /** @var array  array(table field => escaped value) */ 
        $data = array();
     
        // liste des colonnes et des clés du tableau $_POST
        // dans ton cas, les clés du tableau $_POST correspondent aux colonnes de ta table
        // le traitement des dates est spécifique
        $fields = array(
            'poste_source',
            'depart',
            'num_gdo_poste_a_equiper',
            'equipement_a_poser',
            'nom_de_poste',
            'num_affaire',
            'commune',
            'charge_affaire',
            'ipt',
            'radio_ou_rtc',
            'position_affaire',
            'commentaires',
            'prg',
            'modification_schema_exploitation'
        );
     
        foreach ($fields as $key)
        {
            $data[$key] = (isset($_POST[$key]))
                              ? '"'.mysql_real_escape_string($_POST[$key]).'"'
                              : '';
        }
     
        // traitement spécifique aux dates
        $check_date =
            function($key) use (&$data)
            {
                if (isset($_POST[$key]) && (($date = DateTime::createFromFormat('d/m/Y', $_POST[$key])) !== false))
                {
                    $data[$key]          = '"'.mysql_real_escape_string($_POST[$key]).'"';
                    $data["{$key}_date"] = '"'.mysql_real_escape_string($date->format('Y-m-d')).'"';
                }  
            };
     
        $check_date('mex_prevue');    
        $check_date('mex_reelle');    
        $check_date('mise_en_service');    
     
        $sql  = 'INSERT INTO suivi_omt_calvados ('.implode(', ', array_keys($data)).') VALUES ('.implode(', ', $data).')';
        $exec = mysql_query($sql) or die(mysql_error());
    }
     
      //affichage des résultats, pour savoir si l insertion a marchée:
      if($exec)
      {
        echo("L'insertion a été correctement effectuée") ."\n";
        echo '<a href="http://127.0.0.1/suivi_omt/suivi_general_omt.php">Page d\'accueil</a>';
      }
      else
      {
        echo("L'insertion à échouée") ;
        echo '<a href="http://127.0.0.1/suivi_omt/insertion1_calvados.html">Retour</a>';
     
      }
     
     
    mysql_close();
     
    ?>
     
    </body>
    </html>
    Et encore merci pour tout rawsrc !

  19. #19
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Dans ton code, le premier test s'effectue correctement (ligne 12) et le code renvoie le message d'alerte (lignes 14 -> 16) mais comme tu peux le constater ton script ne s'arrête pas juste après.
    Ton if () { ...} else { ... } se termine en ligne 73 et quoi qu'il arrive le mysql_close(); est exécuté même si aucune connexion à MySQL a été ouverte. Et c'est pour cette raison que tu obtiens un Warning.
    Tu devrais te mettre à l'anglais parce que le message est explicite :
    Warning: mysql_close(): no MySQL-Link resource supplied in C:\Program Files\EasyPHP-5.3.9\www\suivi_omt\insertion2_calvados.php on line 89
    Alerte : mysql_close(): Aucune connexion MySQL ouverte
    En gros, rien à fermer puisque rien n'a été ouvert.

    Enfin, pourquoi as-tu sorti du else le if ($exec) ... car ce dernier est rattaché à l'insertion. Par ailleurs si l'insertion échoue ton code va s'arrêter en affichant le message d'erreur MySQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $exec = mysql_query($sql) or die(mysql_error());
    C'est le or die qui produit cet effet.

    Ton code devrait plus ressembler à ceci :
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
      "http://www.w3.org/TR/html4/loose.dtd">
    <html>
      <head>
    <link rel="stylesheet" type="text/css" href="insertion.css" />
        <title>Inserer un OMT dans la base de données du Calvados</title>
      </head>
    <body>
    <?php
     
    if (empty($_POST['poste_source']) || empty($_POST['depart']))
    {
        echo
    <<<'HTML'
            <font color="red">Attention, les champs <u><b>Poste Source</b></u> et <u><b>Départ</b></u> ne peuvent pas rester vides !</font>
            <a href="http://127.0.0.1/suivi_omt/insertion1_calvados.html">Retour</a>
    HTML;
    }
    else
    {
        $connexion = mysql_connect('127.0.0.1', 'root', '' );
        $db  = mysql_select_db('xxx');
     
        // données échappées pour MySQL
        /** @var array  array(table field => escaped value) */
        $data = array();
     
        // liste des colonnes et des clés du tableau $_POST
        // dans ton cas, les clés du tableau $_POST correspondent aux colonnes de ta table
        // le traitement des dates est spécifique
        $fields = array(
            'poste_source',
            'depart',
            'num_gdo_poste_a_equiper',
            'equipement_a_poser',
            'nom_de_poste',
            'num_affaire',
            'commune',
            'charge_affaire',
            'ipt',
            'radio_ou_rtc',
            'position_affaire',
            'commentaires',
            'prg',
            'modification_schema_exploitation'
        );
     
        foreach ($fields as $key)
        {
            $data[$key] = (isset($_POST[$key]))
                              ? '"'.mysql_real_escape_string($_POST[$key]).'"'
                              : '';
        }
     
        // traitement spécifique aux dates
        $check_date =
            function($key) use (&$data)
            {
                if (isset($_POST[$key]) && (($date = DateTime::createFromFormat('d/m/Y', $_POST[$key])) !== false))
                {
                    $data[$key]          = '"'.mysql_real_escape_string($_POST[$key]).'"';
                    $data["{$key}_date"] = '"'.mysql_real_escape_string($date->format('Y-m-d')).'"';
                }
            };
     
        $check_date('mex_prevue');
        $check_date('mex_reelle');
        $check_date('mise_en_service');
     
        $sql  = 'INSERT INTO suivi_omt_calvados ('.implode(', ', array_keys($data)).') VALUES ('.implode(', ', $data).')';
        $exec = mysql_query($sql);
        mysql_close();
     
        if ($exec)
        {
            echo
    <<<'HTML'
        L'insertion a été correctement effectuée
        <a href="http://127.0.0.1/suivi_omt/suivi_general_omt.php">Page d'accueil</a>
    HTML;
        }
        else
        {
            echo
    <<<'HTML'
        L'insertion à échouée
        <a href="http://127.0.0.1/suivi_omt/insertion1_calvados.html">Retour</a>
    HTML;
        }
    }
    ?>
    </body>
    </html>
    Enfin, je t'invite à bouquiner un peu le PHP et surtout la manière d'écrire du code propre et lisible :
    - Syntaxes possibles
    - normes PSR-0, PSR-1, PSR-2
    si tu les suis à au moins 80%, ça sera déjà super

  20. #20
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    Je savais bien qu'il y avait un problème avec mon if quand j'ai vu le mysql_close().
    Mais je pensais carrément le supprimer moi...
    J'ai sorti du else le if($exec) puisque dans mon fichier d'origine mon if($exec) n'était pas dans mon else. Je pensais résoudre l'affichage en faisant la même chose.

    Le code marche très bien maintenant. Néanmoins après avoir fait une insertion, je vais modifier ces données.

    C'est donc un peu plus complexe.
    Et j'ai remarqué que comme pour mon insertion, lorsque je modifie sans mettre de valeurs dans les mex_reelle, mise_en_service et mex_prevue, j'ai un renvoi: Query vide.

    Je tente donc de transformer mon fichier modification.php en utilisant ta méthode, mais j'ai un peu de mal.

    Voici le code:
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
      "http://www.w3.org/TR/html4/loose.dtd"> 
    <html>
      <head>
    <link rel="stylesheet" type="text/css" href="modification1.css" />
        <title>Modifier un OMT dans la base de données du Calvados</title>
      </head>
    <body>
    <?php include "connexion_database.php";?>
    <?php
     
    //récupération des valeurs des champs:
      //Poste Source:
      $ps                   = $_POST["PosteSource"] ;
      //Départ:
      $dep                  = $_POST["Depart"] ;
      //N° GDO:
      $numg                 = $_POST["NumGDO"] ;
      //Equipement:
      $equip                = addslashes($_POST["EquipementPoser"]) ;
      //Nom de poste:
      $nomp                 = addslashes($_POST["NomPoste"]) ;
      //Num affaire:
      $numaff               = addslashes($_POST["NumAffaire"]) ;
      //Commune:
      $comm                 = addslashes($_POST["Commune"]) ;
      //Charge affaire:
      $chrgaff              = addslashes($_POST["Chargeaffaire"]) ;
      //IPT:
      $inter                = addslashes($_POST["IPT"]) ;
      //Radio rtc:
      $radio                = addslashes($_POST["RadioRTC"]) ;
      //Position affaire:
      $position             = addslashes($_POST["Positionaff"]) ;
      //Blocage:
      $bloc                 = addslashes($_POST["Bloc"]) ;
      //Commentaires:
      $commen               = addslashes($_POST["Comment"]) ;
      //programme:
      $prg                  = addslashes($_POST["PRG"]) ;
      //Mex prevue:
      $mexp                 = addslashes($_POST["MEXprev"]) ;
      //Mex reelle:
      $mexr                 = addslashes($_POST["MEXre"]) ;
      //Mise en service:
      $mes                  = addslashes($_POST["Misenserv"]) ;
      //Modification schema exploit:
      $modif                = addslashes($_POST["Modifexploit"]) ;
     
      //récupération de l'identifiant de la personne:
      $ident                = $_POST["id_omt"] ;
     
      //création de la requête SQL:
      $select = "UPDATE suivi_omt_calvados
                SET   poste_source                     = '$ps', 
    	          depart                           = '$dep',
    		  num_gdo_poste_a_equiper          = '$numg',
    		  equipement_a_poser               = '$equip',
    		  nom_de_poste                     = '$nomp',
    		  num_affaire                      = '$numaff',
    		  commune                          = '$comm',
    		  charge_affaire                   = '$chrgaff',
    		  ipt                              = '$inter',
    		  radio_ou_rtc                     = '$radio',
    		  position_affaire                 = '$position',
    		  blocage                          = '$bloc',
    		  commentaires                     = '$commen',
    		  prg                              = '$prg',
    		  mex_prevue                       = '$mexp',
    		  mex_reelle                       = '$mexr',
    		  mise_en_service                  = '$mes',
    		  modification_schema_exploitation = '$modif'
               WHERE id_omt = '$ident' " ;
     
    if($mes)
    {
    $sqldatemes = "UPDATE suivi_omt_calvados SET mise_en_service_date = STR_TO_DATE(mise_en_service, '%d/%m/%Y')";
    }
     
    if($mexp)
    {
    $sqldatemexp = "UPDATE suivi_omt_calvados SET mex_prevue_date = STR_TO_DATE(mex_prevue, '%d/%m/%Y')";
    }
     
    if($mexr)
    {
    $sqldatemexr = "UPDATE suivi_omt_calvados SET mex_reelle_date = STR_TO_DATE(mex_reelle, '%d/%m/%Y')";
    }
     
      //exécution de la requête SQL:
      $result = mysql_query($select, $link) or die( mysql_error() ) ;
     
      //exécution de la requête SQLDATE mise en service:
      $requetedatemes = mysql_query($sqldatemes, $link) or die( mysql_error() ) ;
     
      //exécution de la requête SQLDATE mex prévue:
      $requetedatemexp = mysql_query($sqldatemexp, $link) or die( mysql_error() ) ;
     
      //exécution de la requête SQLDATE mex reelle:
      $requetedatemexr = mysql_query($sqldatemexr, $link) or die( mysql_error() ) ;
     
     
      //affichage des résultats, pour savoir si la modification a marchée:
      if($result)
      {
        echo("La modification à été correctement effectuée") ;
        echo '	/<a href="http://127.0.0.1/suivi_omt/suivi_general_omt.php">Page d\'accueil</a>';
      }
      else
      {
        echo("La modification à échouée") ;
        echo '	/<a href="http://127.0.0.1/suivi_omt/modification1_calvados.php">Retour</a>';
      }
    ?>
    </body>
    </html>
    Je pense donc virer les addslashes(), mais j'ai du mal avec le changement de variables ($...)

    Faut-il que j'utilise directement cette méthode
    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
        // données échappées pour MySQL
        /** @var array  array(table field => escaped value) */
        $data = array();
     
        // liste des colonnes et des clés du tableau $_POST
        // dans ton cas, les clés du tableau $_POST correspondent aux colonnes de ta table
        // le traitement des dates est spécifique
        $fields = array(
            'poste_source',
            'depart',
            'num_gdo_poste_a_equiper',
            'equipement_a_poser',
            'nom_de_poste',
            'num_affaire',
            'commune',
            'charge_affaire',
            'ipt',
            'radio_ou_rtc',
            'position_affaire',
            'commentaires',
            'prg',
            'modification_schema_exploitation'
        );
     
        foreach ($fields as $key)
        {
            $data[$key] = (isset($_POST[$key]))
                              ? '"'.mysql_real_escape_string($_POST[$key]).'"'
                              : '';
        }
     
        // traitement spécifique aux dates
        $check_date =
            function($key) use (&$data)
            {
                if (isset($_POST[$key]) && (($date = DateTime::createFromFormat('d/m/Y', $_POST[$key])) !== false))
                {
                    $data[$key]          = '"'.mysql_real_escape_string($_POST[$key]).'"';
                    $data["{$key}_date"] = '"'.mysql_real_escape_string($date->format('Y-m-d')).'"';
                }
            };
     
        $check_date('mex_prevue');
        $check_date('mex_reelle');
        $check_date('mise_en_service');
    Et que je modifie la requête SQL? Je ne vois pas non plus comment faire avec le id_omt...

    Merci pour tes réponses rawsrc!

Discussions similaires

  1. Query was empty requête SQL
    Par clementdevelop dans le forum Requêtes
    Réponses: 1
    Dernier message: 17/05/2013, 16h28
  2. [PEAR][DB] Error "Query was empty"
    Par Katachana dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 21/01/2008, 15h51
  3. Ensemble de données fermé après requête SQL
    Par Eric Beaumard dans le forum Bases de données
    Réponses: 10
    Dernier message: 04/10/2007, 08h19
  4. [ADODB] erreur Query was empty
    Par JuTs dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/01/2007, 20h18
  5. [Débutant] ClassCastException après requête SQL
    Par tck-lt dans le forum Hibernate
    Réponses: 10
    Dernier message: 06/12/2006, 16h18

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