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

WordPress PHP Discussion :

Meilleures méthodes pour une requête sql avec wordpress


Sujet :

WordPress PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Par défaut Meilleures méthodes pour une requête sql avec wordpress
    Update.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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    var order_number = localStorage.getItem("cleef"); 
    	var conducteur = jQuery('#conducteur').val();
    	var lieudepart = jQuery('#lieudepart').val();
    	var lieuarrive = jQuery('#lieuarrive').val();
    	var participation = jQuery('#participation').val();
    	var datedepart = jQuery('#from_date').val();
    	var datearrive = jQuery('#to_date').val();
     
     
    	ajaxurl = '<?php echo admin_url( 'admin-ajax.php' ) ?>';
     
    	jQuery.ajax({
    		  url: ajaxurl,				  
    		  method: "POST",
    		  cache : false,
    		  data:  {
    	action:'changeractivite',
    	order_number : order_number,
    	conducteur : conducteur,
    	lieudepart: lieudepart,
    	lieuarrive: lieuarrive,
    	participation: participation,
    	datedepart: datedepart,
    	datearrive: datearrive
     
      				}, 
      				dataType: "text",
    			    "success": function (data, textStatus, jqXHR) {
    			        console.log("L'appel Ajax est une réussite.");
    //			        alert("longArrive " + longArrive);
    			       	           jQuery("#resultat").html("<p>La modification a ete effectuer avec succes ! </p><br><p>Vous allez etre rediriger sur la liste des activite");
               		setTimeout(function() {jQuery('#resultat').fadeOut();document.location.href = 'indexdate'}, 3000);
    //	     		    $('#resultat').fadeOut(2000,traitement_callback("hello world"));
    			    },
    			    "error": function (jqXHR, textStatus, errorThrown) {
    			        console.log("L'appel Ajax est un échec.");
    			        jQuery("#resultat").html("<p>mise a jour non effectuee...</p>");alert(data);			    
    			    }
    			}); 
     
    		};
     
    	});
    changeractivite

    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
     
    unction changeractivite() {
     
     
    if (isset($_POST['order_number'],$_POST['conducteur'],$_POST['conducteur'],$_POST['lieudepart'],$_POST['lieuarrive'],$_POST['participation'],$_POST['datedepart'],$_POST['datearrive'])) {
        $order_number = $_POST['order_number'];
        $conducteur = $_POST['conducteur'];
        $lieudepart = $_POST['lieudepart'];
        $lieuarrive = $_POST['lieuarrive'];
     
        $participation = $_POST['participation'];
     
        $datedepart = $_POST['datedepart'];
        $datearrive = $_POST ['datearrive'];
    //     $idtrajet = 0;
    //     $idmembre = 0;
     
        try {
     
            $PDO = new PDO('mysql:host=localhost;dbname=local','root','root');
            $PDO->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
            $PDO->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_OBJ);
    //       $pdo = new PDO('mysql:host=localhost;dbname=philippe','root','');
     
    //       $sql = "UPDATE orders SET conducteur=? , lieudepart=?, lieuarrive=?, participation=?, datedepart =?, datearrive =?, idtrajet =?  where order_number =?";
     
          $sql = "UPDATE orders SET conducteur = :conducteur , lieudepart = :lieudepart, lieuarrive = :lieuarrive, participation = :participation, datedepart = :datedepart, datearrive = :datearrive WHERE order_number = :order_number";
     
    //       UPDATE `orders` SET `conducteur` = 'PAS MOI', `lieudepart` = 'pekin', `lieuarrive` = 'Tapei', `participation` = '800', `datearrive` = '2022-09-30 09:23:00' WHERE `orders`.`order_number` = 108;
     
          $req = $PDO->prepare($sql);
     
    //       UPDATE `orders` SET `conducteur` = 'Philippe', `lieudepart` = 'Paris', `lieuarrive` = 'Pekin', `participation` = '500' WHERE `orders`.`order_number` = 46; 
    //       $stmt = $pdo->prepare($sql)->execute([$conducteur, $lieudepart, $lieuarrive, $participation, $datedepart, $datearrive, $idtrajet, $identifiant]);
          $req->execute(array(
     
              "conducteur" => $conducteur,
     
              "lieudepart" => $lieudepart,
     
              "lieuarrive" => $lieuarrive,
     
              "participation" => $participation,
     
              "datedepart" => $datedepart,
     
              "datearrive" => $datearrive,
     
              "order_number" => $order_number
     
    //           "idtrajet" => $idtrajet,
     
    //           "idmembre" => $idmembre
     
          ));
     
        } catch (PDOException $e) {
            die('Erreur :'.$e->getMessage());
        }
     
    //     echo "Success";
     
    }
    }
    functions.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    get_template_part('changeractivite'); 
     add_action(*'wp_ajax_changeractivite',*'changeractivite'*); 
     add_action('wp_ajax_nopriv_changeractivite',*'changeractivite');
    Est-ce comme ça que l'on doit faire ?

  2. #2
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    celui qui saura te répondre doit maîtriser Wordpress, Jquery et Ajax, ce qui ne doit pas être fréquent. Je n'appartiens pas à cette catégorie.

    Néanmoins, vu que tu as une idée complète du code requis, pourquoi ne pas faire une page de test ?

  3. #3
    Membre éclairé Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Par défaut
    Bonne idée.
    Une fonction de delete fonctionne mais pas toute le crud.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 154
    Par défaut Tu avances pas mal, je pense.
    Je serai bien tenté de faire la même réponse que LaurentSC.
    Il est essentiel que tu débugges, et trouve tes erreurs de raisonnement, syntaxe...
    Ensuite pour t'aider les fragments de code que tu donnes sont insuffisants, et n'étant pas commentés c'est au dessus de mes capacités.
    Éventuellement je peux t'adresser mon code, mais je pense déjà l'avoir fait dans une autre de tes questions, au moins en partie.
    Je te le renvoie avec quelques commentaires.

    SVP les puristes PHP, JS, JQUERY soyez indulgents avec mon code.....

    templateASA.php
    functions.php
    ASAscript.js

    PS: Cela fonctionne avec Elementor (Free).

  5. #5
    Membre éclairé Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Par défaut
    Voici un code update d'ordres.
    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
     
    jQuery("#coffre2").submit(function( event ) {
    	  event.preventDefault();
     
    	  var from_date = $('#from_date').val();
    	  var to_date = $('#to_date').val();
     
    	  var date1 = new Date(from_date);
    	  var date2 = new Date(to_date);
     
    	  // différence des heures
    	  var time_diff = date2.getTime()-date1.getTime();
     
    	   // différence de jours
    	  var days_Diff = time_diff / (1000 * 3600 * 24);
     
     
    	  if (days_Diff < 0) {alert("dates invalide");}
    	  else {
    	var order_number = localStorage.getItem("cleef"); 
    	var conducteur = jQuery('#conducteur').val();
    	var lieudepart = jQuery('#lieudepart').val();
    	var lieuarrive = jQuery('#lieuarrive').val();
    	var participation = jQuery('#participation').val();
    	var datedepart = jQuery('#from_date').val();
    	var datearrive = jQuery('#to_date').val();
     
     
    	ajaxurl = '<?php echo admin_url( 'admin-ajax.php' ) ?>';
     
    	jQuery.ajax({
    		  url: ajaxurl,				  
    		  method: "POST",
    		  cache : false,
    		  data:  {
    	action:'changeractivite',
    	order_number : order_number,
    	conducteur : conducteur,
    	lieudepart: lieudepart,
    	lieuarrive: lieuarrive,
    	participation: participation,
    	datedepart: datedepart,
    	datearrive: datearrive
     
      				}, 
      				dataType: "text",
    			    "success": function (data, textStatus, jqXHR) {
    			        console.log("L'appel Ajax est une réussite.");
    //			        alert("longArrive " + longArrive);
    			       	           jQuery("#resultat").html("<p>La modification a ete effectuer avec succes ! </p><br><p>Vous allez etre rediriger sur la liste des activite");
               		setTimeout(function() {jQuery('#resultat').fadeOut();document.location.href = 'indexdate'}, 3000);
    //	     		    $('#resultat').fadeOut(2000,traitement_callback("hello world"));
    			    },
    			    "error": function (jqXHR, textStatus, errorThrown) {
    			        console.log("L'appel Ajax est un échec.");
    			        jQuery("#resultat").html("<p>mise a jour non effectuee...</p>");alert(data);			    
    			    }
    			}); 
     
    		};
     
    	});
    Le formulaire est soumis mais l'ordre n'est pas modifierr.
    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
     
    /* 
     * Template Name: changeractivite
     * 
     * */
    function changeractivite() {
     
     
    if (isset($_POST['order_number'],$_POST['conducteur'],$_POST['conducteur'],$_POST['lieudepart'],$_POST['lieuarrive'],$_POST['participation'],$_POST['datedepart'],$_POST['datearrive'])) {
        $order_number = $_POST['order_number'];
        $conducteur = $_POST['conducteur'];
        $lieudepart = $_POST['lieudepart'];
        $lieuarrive = $_POST['lieuarrive'];
     
        $participation = $_POST['participation'];
     
        $datedepart = $_POST['datedepart'];
        $datearrive = $_POST ['datearrive'];
    //     $idtrajet = 0;
    //     $idmembre = 0;
     
        try {
     
            $PDO = new PDO('mysql:host=localhost;dbname=local','root','root');
            $PDO->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
            $PDO->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_OBJ);
    //       $pdo = new PDO('mysql:host=localhost;dbname=philippe','root','');
     
    //       $sql = "UPDATE orders SET conducteur=? , lieudepart=?, lieuarrive=?, participation=?, datedepart =?, datearrive =?, idtrajet =?  where order_number =?";
     
          $sql = "UPDATE orders SET conducteur = :conducteur , lieudepart = :lieudepart, lieuarrive = :lieuarrive, participation = :participation, datedepart = :datedepart, datearrive = :datearrive WHERE order_number = :order_number";
     
    //       UPDATE `orders` SET `conducteur` = 'PAS MOI', `lieudepart` = 'pekin', `lieuarrive` = 'Tapei', `participation` = '800', `datearrive` = '2022-09-30 09:23:00' WHERE `orders`.`order_number` = 108;
     
          $req = $PDO->prepare($sql);
     
    //       UPDATE `orders` SET `conducteur` = 'Philippe', `lieudepart` = 'Paris', `lieuarrive` = 'Pekin', `participation` = '500' WHERE `orders`.`order_number` = 46; 
    //       $stmt = $pdo->prepare($sql)->execute([$conducteur, $lieudepart, $lieuarrive, $participation, $datedepart, $datearrive, $idtrajet, $identifiant]);
          $req->execute(array(
     
              "conducteur" => $conducteur,
     
              "lieudepart" => $lieudepart,
     
              "lieuarrive" => $lieuarrive,
     
              "participation" => $participation,
     
              "datedepart" => $datedepart,
     
              "datearrive" => $datearrive,
     
              "order_number" => $order_number
     
    //           "idtrajet" => $idtrajet,
     
    //           "idmembre" => $idmembre
     
          ));
     
        } catch (PDOException $e) {
            echo('Erreur :'.$e->getMessage());
        }
     
        echo "Success";
     
    }
    Je vois pas pourquoi l'appel ajax est positif et que l'ajout d'un nouvel ordre ne se fait pas.
    Merci les potes.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 154
    Par défaut Débogage
    Bonjour,
    Lors du débogage, quel est le dernier appel réussi?
    Pour tester ton code il me semble manquer pas mal d'éléments.
    Cordialement.

Discussions similaires

  1. Meilleurs méthodes pour une requête sql avec wordpress
    Par Philcmoi dans le forum WordPress
    Réponses: 0
    Dernier message: 15/12/2022, 16h10
  2. Méthode POST pour une requête sql
    Par killer2015 dans le forum Langage
    Réponses: 2
    Dernier message: 13/11/2016, 01h47
  3. [PDO] Echapper les caractères potentiellement dangereux pour une requête SQL avec LIKE
    Par JimDraw dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 17/12/2012, 10h46
  4. [MySQL] Meilleure configuration pour une requête SQL
    Par beninsky dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/05/2010, 17h21
  5. Besoin d'aide pour une Requête SQL ...
    Par Kokito dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/07/2004, 11h56

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