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

jQuery Discussion :

Méthode $_POST [AJAX]


Sujet :

jQuery

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 3
    Par défaut Méthode $_POST
    Bonjour à tous,

    Voilà je suis un jeune développeur ayant un projet de stage assez conséquent, et je m'en sort plus je ne trouve pas de solution...

    Voici mon problème, je suis très novice en javascript (Je ne jure que par PHP HTML5 CSS3), j'ai quelques bases mais ayant une mémoire sélective non contrôlé j'oublie vite se que j'ai appris en javascript, et pour revoir le cours de javascript il me faudrait 70j sans compter la dizaine de jours d'apprentissage d'AJAX, je n'ai malheureusement pas le temps...

    Le site que j'ai repris était en faite une structure HTML CSS AJAX, il ne me manquais plus "que" mettre les requêtes, les algo's et régler quelques bugs, et styliser le final.

    PROBLEME : Ajax... c'est merveilleux, sauf quand on ne sais pas l'utiliser alors là c'est juste un cauchemar dès qu'une ligne Ajax apparaît, je bave... Je vous explique :
    enfaîte le site est en intranet, Ajax est utilisé pour que l'URL reste tels quels lors d'un chargement de page et lorsque l'on clique sur le menu juste une div est "reload" pour que la page ne se recharge pas entièrement, rien d'extraordinaire, mais voila je suis confronter à plusieurs <FORM> et la réaction entre ajax, les formulaires suivis d'un submit équivaut à un retour à la page d'accueil... ni plus ni moins.

    Du coup je suis à la recherche d'une âme charitable qui pourrais m'aider à envoyer se fichue formulaire.
    Voici mon code raccourcis :

    Code php : 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
        <fieldset class="poste">
              <legend>Poste</legend> <hr />
             <label for="service">Service</label>
    <!--                      --------------------------------------------- CHOIX DU SERVICE------------------------------------------------------------------     -->
          <select name="service" id="service" onchange="javascript:submit(this);">
          <option value="vide">-- Service --</option>         
            <?php 
            include '../oracle/connexion.php';
            $ora_conn=oci_connect($login,$mdp,$host);
            $query="SELECT * FROM service";
            $stmt = oci_parse($ora_conn,  $query);
            oci_execute($stmt, OCI_DEFAULT);
            $results = oci_fetch_array($stmt, OCI_BOTH);
            if ($results){
                oci_execute($stmt, OCI_DEFAULT);
                // Parcours du tableau $results pour afficher les résultats :
                while (oci_fetch($stmt)) {    ?>
     
                           <option value="<?php echo oci_result($stmt, "ID_SERVICE"); ?>"> <?php echo oci_result($stmt, "NOM_SERVICE"); ?></option>
                <?php
                }
            } 
            ?>
            </select>
             <br/>
    <!--                      --------------------------------------------- CHOIX DE L'EQUIPE SELON LE CHOIX DU SERVICE------------------------------------------------------------------   -->  
    <label for="Equipe">Equipe </label>
          <select name="equipe" id="equipe">
          <option value="">-- Equipe --</option>         
            <?php     
            if(isset( $_POST['service'])){    
                include '../oracle/connexion.php';
                $ora_conn=oci_connect($login,$mdp,$host);
                $query="SELECT * FROM equipe WHERE service_ID='".$_POST['service']."'";
                $stmt = oci_parse($ora_conn,  $query);
                oci_execute($stmt, OCI_DEFAULT);
                $results = oci_fetch_array($stmt, OCI_BOTH);
                if ($results){
                    oci_execute($stmt, OCI_DEFAULT);
                    // Parcours du tableau $results pour afficher les résultats :
                    while (oci_fetch($stmt)) {    ?>
     
                               <option value="<?php echo oci_result($stmt, "ID_EQUIPE"); ?>"> <?php echo oci_result($stmt, "NOM_EQUIPE"); ?></option>
                    <?php
                    }
                } 
            }
                ?>
     
            </select>
            <br />

    EXPLICATION : Le code fait en sorte que lorsque l'on choisit un service, une requête se fait automatiquement grâce au javascript submit(this) pour avoir un choix lié à la liste déroulante précédente. MAIS le tout est dans un formulaire en méthode POST, lorsque je choisis un service, j'ai un retour à la page d'accueil. Je sais pourquoi (AJAX) mais je ne sais pas comment on reload une page en AJAX avec un retour de formulaire...

    ENVIRONNEMENT : le code que j'ai choisi de vous montrer est dans une DIV nommé "content_inner_wrapper" qui est reload pour chaque cliques grâce à AJAX, dans le header tous les scripts sont présents, et le resteront sur toutes les pages car juste le "Body" est reload.

    voici le code qui me permet de reload les pages :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $(document).ready(function () {  
     
     
      $("a.load")
      .click(function() {
      $('#content_inner_wrapper').load(this.href);
        return false;
      });
     
     
    });
    Merci beaucoup de votre lecture en espérant que le fleuron des développeurs Français vont pouvoir m'aider :-)

    PS : J'ai une solution pour les autres pages qui n'est pas vraiment très "hygiénique" l'iFrames. Mais dans ce cas là je ne peut pas faire de bidouille.

    PS2 : Je me trompe peut être sur l'effet du code AJAX ci-dessus, comme dit précédemment je suis une bille en JS/JQuery/AJAX... Oui c'est honteux ... mais je m'y attellerais dans mes prochaines études.

    CDLT Zaelos

  2. #2
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    Déjà il faut définir ce que tu souhaites:

    1) JS et Ajax
    ou
    2) Jquery et Ajax

    Je suis tout aussi honteux que toi car je n'ai aucune compétences nécessaires afin de réaliser un requête ajax en js (non connaissance de la syntaxe). Cependant en jquery tout est pris en charge est c'est assez simple.

    Il te faudra inclure la lib Jquery puis une commande semblable à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $.ajax( { 
      type: "POST", // Peut être aussi GET 
      dataType: 'json', // Je mets json mais cette option est facultative, ça peut être json, script, html, xml, plaintext et si tu ne le renseigne pas le choix se fait par déduction... 
      url: 'ajax/mon_php.php', 
      data: { data1: var1, data2: var2 ... }
    } );
    ce $.ajax te retourne un objet XMLHttpRequest ( que je nomme jqxhr) sur lequel tu pourras effectué un certain nombre d'action ( 3 en réalité )

    jqxhr.done(), jqxhr.fail() jqxhr.always() permettent dans l'ordre d’exécuter un code si l'ajax retourne un succès, une erreur ou bien dans les deux cas

    en espérant avoir été clair et de ne pas avoir dis trop de bêtise

    sinon tu trouveras de la doc ici
    http://api.jquery.com/jQuery.ajax/

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 3
    Par défaut
    Bonjour Darkaurora,

    tout d'abord merci de t’intéresser à mon problème la suite est un peut bête mais ... bon je préfère passer pour bête plutôt qu'être inculte.

    Si je comprends bien dans mon header je met le JQuery, et ensuite au tout début de mon code (La page ou je demande actuellement de l'aide)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $.ajax( { 
      type: "POST", // Peut être aussi GET 
      dataType: 'json', // Je mets json mais cette option est facultative, ça peut être json, script, html, xml, plaintext et si tu ne le renseigne pas le choix se fait par déduction... 
      url: 'ajax/ma_page.php', 
      data: { data1: idDeMaVariable1, data2: idDeMaVariable2 ... }
    } );
    J'ai "colorié <(^.^)> " en vert se que je suis sûre d'avoir compris (Pas bien compliquer ...) et en orange ce que je ne suis pas sûre du tout.

    faut il mettre le nom de la variable PHP (ex: $MaVariable) ou une id du formulaire (ex: id="MonID") ?

    jqxhr.done(), jqxhr.fail() jqxhr.always() permettent dans l'ordre d’exécuter un code si l'ajax retourne un succès, une erreur ou bien dans les deux cas
    Faut il que j'appelle ces fonctions ? Je doit t'avouer que j'ai du mal à comprendre les docs comme http://api.jquery.com/jQuery.ajax/

    Déjà il faut définir ce que tu souhaites:

    1) JS et Ajax
    ou
    2) Jquery et Ajax
    Pourquoi pas tous ? Je pensais que tous les langages WEB était compatible entre eux ... (Bien que jQuery est une api)

    Merci de ton aide !

    Bon après midi si nous nous contactons pas d'ici là !

  4. #4
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    Prenons un exemple concret et ce dans les règles du Forum Developpez.com

    Premièrement ton page html/php, en gros une vue classique

    Code php : 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
     
    <html>  
    <head>
    <title>Titre de la page</title>
    </head>
     
    <body>
    /*ici ton code html*/
    /*Supposons que je souhaite remplir un tableau avec les valeurs d'une base de données utilisateur qui sont nés en 1989 mais en js*/
     
    <table>
     
    <thead>
     
    <tr> <th>N° utilisateur</th> <th>Nom d utilisateur</th> <th>Prénom utilisateur</th> </tr>
     
    </thead>
     
    <tbody id="MyTab"> </tbody>
     
    </table>
     
    </body>
     
    <script type="javascript/text" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> // Lien direct mais peut aussi être télécharger
    <script type="javascript/text">
    $( document ).ready( function() { // Le code ne s'exécute pas tant que le document, ta page, n'est pas chargé
     
    $.ajax( {
     
    type: "POST", // Peut être aussi GET 
    dataType: 'json', // Je mets json mais cette option est facultative, ça peut être json, script, html, xml, plaintext et si tu ne le renseigne pas le choix se fait par déduction... 
    url: 'ajax/mon_php.php', 
    data: { naissance: '1989' } // Ici je passe une variable naissance qui sera récupérer dans ton script php et aura comme valeur 1989
     
    } ).done( function( data ) {
    // data est la donnée retourner par ton php
     
    for( a in data ) {
     
    for( b in data[a] ) {
    $( '#MyTab' ).append( '<tr> <td>'+data[a].id+'</td> <td>'+data[a].nom+'</td> <td>'+data[a].prenom+'</td> </tr>' );
    //Je cherche dans mon document l'élément avec l'id MyTab, puis j'ajoute à celui ci (append) un ensemble d'élément qui constitut une ligne de tableau HTML avec comme donnée data[0] = ligne 1 data[0].id = premier id récupérer...
    }
     
    }
     
    } );
     
    } );
    </script>
     
    </html>

    Code de ton php ==> ajax/mon_php.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
     
    <?php
    // Je te passe la connexion à la base de données
     
    if( isset( $_POST['naissance'] ) {
    if( $result = mysql_query( 'SELECT id_user, name_user, firstname_user FROM user WHERE birth_year = "'.$_POST['naissance'].'"' ) ) { 
     
    /*-- Déclaration des variables d'execution --*/
    $rowTable = array( );
                                            
    if( mysql_num_rows( $result ) != 0 ) { 
    while( $ligne = mysql_fetch_assoc( $result ) ) { 
                                                            
    $user = array( 
    'id' => $ligne['id_user']
    'nom' => $ligne['name_user'],
    'prénom' => $ligne['firstname_user']
    );
     
    array_push( $rowTable, $user );
    } 
    }
    else { } /*-- Gestion de l'erreur --*/
     
    echo json_encode( $rowTable );
    }
    ?>

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 3
    Par défaut
    Merci à toi pour ces réponses !!!

    Bonne fin de journée ! Tous est réglé je vais pouvoir mettre RÉSOLUE

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

Discussions similaires

  1. [AJAX] Méthode $_POST qui ne fonctionne pas
    Par zoom61 dans le forum AJAX
    Réponses: 10
    Dernier message: 23/04/2014, 18h26
  2. Passage de Paramètres avec la Méthode $_Post
    Par Trebor_ dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 23/10/2012, 20h38
  3. [MySQL] [$_POST]Méthode de classement
    Par ozzmax dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 02/12/2005, 16h53
  4. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26
  5. Cryptage en C selon la méthode de césat
    Par shenron dans le forum C
    Réponses: 2
    Dernier message: 31/05/2002, 08h22

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