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

AJAX Discussion :

Appelle scripts PHP + données


Sujet :

AJAX

  1. #1
    Membre habitué Avatar de Skunka
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2018
    Messages : 135
    Points : 158
    Points
    158
    Par défaut Appelle scripts PHP + données
    Bonjour!

    Dans le cadre de mon stage d'études, je réalise une application web destiné à la gestion des plannings de l'entreprise. Dans le contexte de modifications des ressources, j'ai un bouton m'ouvrant une modale contenant une liste déroulante (remplie via requête sql) et différent champs, le tout dans un formulaire. L'utilisateur final pourra choisir dans ce cas un poste de salarié et les informations relatives à ce poste devront s'afficher dans le formulaire permettant ainsi la modification. En cliquant ensuite sur un bouton "Modifier", la modification sera prise en compte dans la base de données, le tout de manière asynchrone afin que l'utilisateur n'ai pas à recharger la page de manière répété.

    Modale:

    Code HTML : 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
     
    <!-- popup de modification -->
    	<div id="myModal" class="modal fade" role="dialog">
    	  	<div class="modal-dialog">
     
    	    <!-- contenu du popup-->
    	    	<div class="modal-content">
    	      		<div class="modal-header"> <!-- En-tête -->
    	        		<button type="button" class="close" data-dismiss="modal">&times;</button>
     
    	        			<p> <!-- Liste déroulante -->
    							<form method="POST" action="Scripts/posteSalarie_update.php">
    								<select name="selec" size="1" style="width: 230px" onchange="Change(this.value)">
    									<option value="0"> - - - - - - - - </option>
    									<?php
                                                                            $req = "SELECT * FROM posteSalarie ORDER BY nomPoste";
                                                                            try{
                                                                                    $stmt = $pdo->prepare($req);
                                                                                    $stmt->execute();
                                                                                    //$data = array(); //tableau pour stocker tous les résultats
                                                                                    //$data = [0]; //Le premier index de array() est 0, ainsi le 'numPoste' concordera à l'index array
                                                                                    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                                                                                            //$data[] = $row;
                                                                                            echo "<option value='".$row["numPoste"]."'>".$row["nomPoste"]."</option>";
                                                                                    }
                                                                            }
                                                                            catch(Exception $e){
                                                                                    print "Erreur ! ".$e->getMessage(). "<br/>";
                                                                            }
                                                                            ?>
    								</select>
    		      	</div>
    		      	<div class="modal-body"> <!--corps -->
     
    								Numéro du poste: <input type="text" name="numPoste" readonly="readonly">  <br/>
    								Nom du poste: <input type="text" name="nomPoste">  <br/>
    								<input type="submit" name="modifier" value="Modifier">
    							</form>
    						</p>    
    	      		</div>
    	      		<div class="modal-footer">
    	        		<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
    	      		</div>
    	    	</div>
     
    	  	</div>
    	</div>

    Le script appelé par "onChange":

    Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    	function Change(value){ //Appelle d'un script PHP permettant la récupération des données
    		//On récupère 
    		var num = value; //La variable 'num' récupère l valeur de la liste déroulante
    		$.ajax({
    			type: "POST", //méthode utilisé
    			url: "posteSalarie_retrieve.php", //fichier à appeler
    			data: num, //données envoyées
    			dataType: text, //Format des données
    			success: function(num, nom){
    				document.getElementsById('numPoste').value = num; //affiche le num du poste dans le formulaire
    				document.getElementsById('nomPoste').value = nom; //affiche le nom du poste
    			}
    		})
    	}

    Script appelé par la fonction précédente:

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php 
    include "../include/connexion.php";
    include "../Classe/posteSalarie.php";
    if (isset($_POST['num'])) {
     
    	$num = $_POST['num'];
    	include "../Classe/posteSalarie.php";
    	$unPoste->retrieve($num);
    	return $unPoste->getNumPoste(), $unPoste->getNomPoste();
    } 
    ?>

    Vous vous en doutez, le code actuel ne fonctionne pas. La valeur de la liste déroulante est bien transmise à la fonction javascript mais l'affichage ne se réalise pas. C'est la première fois que je manipule du AJAX et bien que je me soit renseigné, il se peut donc que ce soit un simple problème de syntaxe ou de la manière dont je l'utilise mais si quelqu'un peut m'indiquer la route à suivre, j'en serais enchanté ! N'hésitez pas à demander d'autre infos si nécessaire.

    Cordialement,
    Skunka.
    Traverse les rues ...

    Git: https://github.com/BlueSkunka

    Débutant à vie

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    pour débuger un appel AJAX regardez dans la console de développement de votre navigateur, vous pourrez vérifier les paramètres envoyés et la réponse.

  3. #3
    Membre habitué Avatar de Skunka
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2018
    Messages : 135
    Points : 158
    Points
    158
    Par défaut
    Effectivement, cela m'a permis de régler un premier problème mais cela n'a pas résolus le problème d'affichage :/
    Maintenant, le numéro s'affiche puisque j'ai modifier la fonction js mais le nom du poste ne s'affiche toujours pas ... Lors du traitement, aucun message d'erreur n'est apparu dans l'outil de développement.

    Edit: j'obtient maintenant un affichage pour le nom du poste mais ce n'est pas le nom désiré: [object Object]
    Toujours aucun message d'erreur pendant l'exécution.

    La fonction modifié (post-Edit):

    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
     
    function Change(value){ //Appelle d'un script PHP permettant la récupération des données
    		//On récupère 
    		var num = value; //La variable 'num' récupère la valeur de la liste déroulante
    		document.getElementById('numPoste').value = num; //affiche le num du poste dans le formulaire grâce à la 'value' de la balise <select>
    		$.ajax({
    			type: "POST", //méthode utilisé
    			url: "Scripts/posteSalarie_retrieve.php", //fichier à appeler
    			data: 'num='+ num, //données envoyées
    			//dataType: 'text' //Format des données
    			complete: function(nom, statut){
    				document.getElementById('nomPoste').value = nom; //affiche le nom du poste
    			}
    		})
    	}
    Le type 'text' de dataType apporte une erreur et empêche l’exécution de la fonction. Quel est le type retourné actuellement ? Y a t-il des données cachés derrière cet affichage ? Si oui, comment les utiliser ?

    Cordialement,
    Skunka
    Traverse les rues ...

    Git: https://github.com/BlueSkunka

    Débutant à vie

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $.ajax({
    			type: "POST", //méthode utilisé
    			url: "Scripts/posteSalarie_retrieve.php", //fichier à appeler
    			data: 'num='+ num, //données envoyées
    			dataType: "text", //Format des données
    			success: function(nom, statut){
    				document.getElementById('nomPoste').value = nom; //affiche le nom du poste
    			},
                            error: function(erreurs){
    				alert(erreurs);
    			}
    		});
    Pourquoi tu melanges du js pur, avec jquery

  5. #5
    Membre habitué Avatar de Skunka
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2018
    Messages : 135
    Points : 158
    Points
    158
    Par défaut
    Citation Envoyé par bonjourajax Voir le message
    Pourquoi tu melanges du js pur, avec jquery
    Je t'avouerais que j'en ai aucune idée, j'ai très peu manipulé de javascript en études et c'est la première fois que je m'adonne à l'AJAX. Cependant j'en suis arrivé à ce résultat, il ne me reste plus qu'à correctement gérer les données qui me sont retournées et c'est bien là que je bloque !

    Edit:

    Voici le résultat à l'affichage si ce n'était pas assez clair:

    Nom : Capture.JPG
Affichages : 165
Taille : 27,1 Ko

    Quelqu'un aurait une piste ?
    Merci !
    Traverse les rues ...

    Git: https://github.com/BlueSkunka

    Débutant à vie

  6. #6
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Bonsoir Skunka,

    Je t’invite à vérifier la structure HTML de ta modale à l’aide de l’inspecteur DOM de la console, il se pourrait que tu aies des surprises. Par exemple, si tu regardes attentivement ton <form>, tu verras qu’il est coupé en deux par la fermeture prématurée d’une <div>, et du coup, les <input> ne se trouvent pas dedans.

    Un point sur la différence entre success et complete :

    success est appelée quand la requête réussit, comme son nom l’indique. Une « réussite » au sens d’ajax signifie que la requête a atteint le serveur. Ce qui se passe sur le serveur n’a aucune importance, autrement dit un code d’erreur comme 404 ou 500 est considéré comme un succès.

    Comme une erreur du serveur n’est pas une erreur ajax, on peut se demander en quoi consiste une erreur ajax. Il y en a trois catégories :
    • les pannes de réseau
    • les délais dépassés (timeout)
    • les requêtes interdites

    Les requêtes interdites sont celles qui ne respectent pas la politique de même origine (same-origin policy), et pour lesquelles le serveur distant n’a pas envoyé les bons en-têtes cross-origin. Par exemple, on peut appeler api.github.com depuis n’importe où, mais pas example.com.

    Quand on gère les erreurs, il est important de savoir lesquelles s’adresse à l’utilisateur, et lesquelles s’adressent au développeur. S’il s’agit d’une requête interdite, c’est probablement un problème dans le code JS, et l’utilisateur ne peut rien faire pour corriger ça (sauf s’il est super malin, mais dans tous les cas ce n’est pas son boulot). En revanche, s’il s’agit d’une panne de réseau, on peut par exemple inviter l’utilisateur à vérifier sa connexion et à réessayer.

    complete est appelée dans tous les cas quand la requête est terminée. C’est pratique quand on veut faire la même action en cas de succès comme en cas d’erreur. Dans cerains scénarios on peut utiliser complete en plus de success et error. Mais dans le cas présent, je pense qu’on n’a pas besoin de complete.

    Avec jQuery 3, on doit utiliser les méthodes de deferred, à savoir .done(), .fail() et .always(). Avec cette nouvelle façon de faire, ton code devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $.ajax({
      method: "POST", //méthode utilisé
      url: "Scripts/posteSalarie_retrieve.php", //fichier à appeler
      data: 'num=' + num, //données envoyées
      //dataType: 'text' //Format des données
    })
      .done(function (data, textStatus, jqXHR) {
        console.log(data);
        $("#nomPoste").val(data); //affiche le nom du poste
      })
      .fail(function (jqXHR, textStatus, errorThrown) {
        console.error(textStatus, errorThrown); // affiche l’erreur dans la console
      });
    Les signatures des fonctions sont un peu incohérentes à mon humble avis, il faut faire avec. Elles sont documentées sur la page de jQuery.ajax.

    L’option dataType agit sur le type des données renvoyées par le serveur. Quand cette option est présente, l’en-tête Content-Type de la réponse est écrasé. À toi de voir si c’est une bonne chose ou pas.

    En fait, il semblerait que jQuery transforme la réponse en objet JavaScript, à en juger par ce [object Object] qui s’affiche. Pour cette raison j’ai rajouté un console.log(data) dans ton code, qui te permettra de voir dans la console ce que contient cet objet.

    Autre chose, attention ici :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    return $unPoste->getNumPoste(), $unPoste->getNomPoste();

    Le return ne fait très probablement pas ce que tu imagines. Je pense que tu voulais plutôt mettre echo. Et la virgule crée de la confusion également. Tu voulais renvoyer un tableau ?

    J’aimerais que tu nous montres à quoi ressemble, dans l’onglet réseau de ta console, la réponse à la requête faite vers Scripts/posteSalarie_retrieve.php.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  7. #7
    Membre habitué Avatar de Skunka
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2018
    Messages : 135
    Points : 158
    Points
    158
    Par défaut
    Citation Envoyé par Watilin Voir le message
    Bonsoir Skunka,

    Le return ne fait très probablement pas ce que tu imagines. Je pense que tu voulais plutôt mettre echo. Et la virgule crée de la confusion également. Tu voulais renvoyer un tableau ?

    J’aimerais que tu nous montres à quoi ressemble, dans l’onglet réseau de ta console, la réponse à la requête faite vers Scripts/posteSalarie_retrieve.php.
    Bonjour et merci de cette réponse!

    Effectivement, le return a était remplacé par un echo entre temps. Voici ce qu'y s'affichait dans la console:

    Nom : Capture.JPG
Affichages : 175
Taille : 24,1 Ko

    Grâce à ton code, mon formulaire s'est correctement remplis mais je travaillais là sur un petit (très petit) formulaire simpliste. En espérant ne pas être trop lourd, j'aimerais maintenant manipuler un formulaire un peu plus complexe que voici (cette fois-ci ma balise <form> n'est pas scindée en deux):

    Code HTML/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
    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
     
    	<!-- Bouton pour le popup de modification -->
    	<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal1"> Modifier </button>
     
    	<!-- popup de modification-->
    	<div id="myModal1" class="modal fade" role="dialog">
    	  	<div class="modal-dialog">
     
    		    <!-- contenu du popup-->
    		    <div class="modal-content">
    		      	<div class="modal-header"> <!-- En-tête -->
    		        	<button type="button" class="close" data-dismiss="modal">&times;</button>
    			        <select name="selec" size="1" style="width: 230px" onchange="Change(this.value)">
    						<option value="0"> - - - - - - - - </option>
    						<?php
                                                    $req = "SELECT numSalarie, nomSalarie, prenomSalarie FROM salarie ORDER BY nomSalarie";
                                                    try{
                                                            $stmt = $pdo->prepare($req);
                                                            $stmt->execute();
                                                            while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                                                                    echo "<option value='".$row["numSalarie"]."'>".$row["nomSalarie"]." ".$row["prenomSalarie"]."</option>";
                                                            }
                                                    }
                                                    catch(Exception $e){
                                                            print "Erreur ! ".$e->getMessage(). "<br/>";
                                                    }
                                                    ?>
    					</select>
    		      	</div>
     
    		      	<div class="modal-body"> <!--corps -->
    			        <p div="left">
    			        	<FORM method="POST" action="Scripts/salarie_update.php">
    				        	Numéro: <input type="text" name="numSalarie" id="numSalarie" readonly="readonly"> <br>
    							Nom: <input type="text" name="nomSalarie"> <br>
    							Prénom: <input type="text" name="prenomSalarie"> <br>
    							Poste: 	<select name="posteSalarie" style="width: 230px"> <!-- Liste déroulante -->
    										<option value="0"> - - - - - - - - </option>
    										<?php
                                                                                    $req = "SELECT * FROM posteSalarie ORDER BY nomPoste";
                                                                                    try{
                                                                                            $stmt = $pdo->prepare($req);
                                                                                            $stmt->execute();
                                                                                            while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                                                                                                    echo "<option value='".$row["numPoste"]."'>".$row["nomPoste"]."</option>";
                                                                                            }
                                                                                    }
                                                                                    catch(Exception $e){
                                                                                            print "Erreur !".$e->getMessage()."<br>";                                                                               
                                                                                    }
                                                                                    ?>
    									</select> <br>
    							Niveau de droit: 	<select name="niveauSalarie" style="width: 230px">
    													<option value="0"> - - - - - - - - </option>
    													<?php
                                                                                                            $req = "SELECT * FROM posteSalarie ORDER BY nomPoste";
                                                                                                            try{
                                                                                                                    $stmt = $pdo->prepare($req);
                                                                                                                    $stmt->execute();
                                                                                                                    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                                                                                                                            echo "<option value='".$row["numPoste"]."'>".$row["nomPoste"]."</option>";
                                                                                                                    }
                                                                                                            }
                                                                                                            catch(Exception $e){
                                                                                                                    print "Erreur !".$e->getMessage()."<br>";                                                                               
                                                                                                            }
                                                                                                            ?>
    												</select> <br>
    							Date visite médicale: <input type="text" name="dateVisiteMedicale"> <br>
    							Date obtention FIMO / dernière FCO: <input type="text" name="dateFIMO"> <br>
    							Date prochaine FCO: <input type="text" name="dateFCO"> <br>
    							Date finale de validité de <br> la carte conducteur: <input type="text" name="dateValiditeCarteConducteur"> <br>
    							Date finale de validité de <br> la qualification conducteur: <input type="text" name="dateValiditeQualificationConducteur"> <br>
    							AIPR: 	<select name="aipr">
    										<option value=""> Aucune</option>
    										<option value="Concepteur">Concepteur</option>
    										<option value="Encadrant">Encadrant</option>
    										<option value="Operateur">Opérateur</option>
    									</select> <br><br>
    							Date finale de validité de l'AIPR :<input type="text" name="dateAIPR"> <br>
    							<input type="submit" value="Confirmer">
    						</FORM>
    					</p>   
    		      	</div>
    		      	<div class="modal-footer">
    		        	<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
    		      	</div>
    		    </div>
    	  	</div>
    	</div>	
    </body>

    onChange fait appelle à cette fonction:

    Code Javascript : 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
     
    <script type="text/javascript">
    	function Change(value){ //Appelle d'un script PHP permettant la récupération des données
    		//On récupère 
    		var num = value; //La variable 'num' récupère la valeur de la liste déroulante
    		document.getElementById('numSalarie').value = num; //affiche le num du poste dans le formulaire grâce à la 'value' de la balise <select>
    		$.ajax({
    			type: "POST", //méthode utilisé
    			url: "Scripts/salarie_retrieve.php", //fichier à appeler
    			data: 'num='+ num, //données envoyées
    			//dataType: 'html', //Format des données
    		})
    		.done(function (data, textStatus, jqXHR) {
    		    console.log(data); //affiche les données renvoyées 
    		    //$("#nomPoste").val(data); //affiche le nom du poste
    		})
    		.fail(function (jqXHR, textStatus, errorThrown) {
    			console.error(textStatus, errorThrown); // affiche l’erreur dans la console
    		});
    	}	
     
    </script>

    Elle même appelant ce script salarie_retrieve.php:

    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
     
    <?php 
    include "../include/connexion.php";
    if (isset($_POST['num'])) {
     
    	$num = $_POST['num'];
    	include "../Classe/salarie.php";
    	$unSalarie = new salarie($nom="", $prenom="", $poste="", $niveau="");
    	$unSalarie->retrieve($num);
    	$niveau = $unSalarie->getNiveauSalarie();
    	$poste = $unSalarie->getPosteSalarie();
    	$nom = $unSalarie->getNomSalarie();
    	$prenom = $unSalarie->getPrenomSalarie();
    	$fimo = $unSalarie->getDateFIMO();
    	$fco = $unSalarie->getDateFCO();
    	$carte = $unSalarie->getDateValiditeCarteConducteur();
    	$qualif = $unSalarie->getDateValiditeQualificationConducteur();
    	$med = $unSalarie->getDateVisiteMedicale();
    	$aipr = $unSalarie->getAIPR();
    	$dateAIPR = $unSalarie->getDateValiditeAIPR();
    	echo $niveau, $poste, $nom, $prenom, $fimo, $fco, $carte, $qualif, $med, $aipr, $dateAIPR;
    } 
    ?>

    Avec la méthode retrieve de la classe salarie:

    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
     
    	public function retrieve($num){
    		include "../include/connexion.php";
    		$req = "SELECT * FROM salarie WHERE numSalarie = ".$num;
    		$stmt = $pdo->query($req);
    		$ligne = $stmt->fetch();
    		$this->_numSalarie = $ligne["numSalarie"];
    		$this->_nomSalarie = $ligne["nomSalarie"];
    		$this->_prenomSalarie = $ligne["prenomSalarie"];
    		$this->_posteSalarie = $ligne["numPoste"];
    		$this->_niveauSalarie = $ligne["numNiveau"];
    		$this->_dateVisiteMedicale = $ligne["dateVisiteMedicale"];
    		$this->_dateFIMO = $ligne["dateFIMO"];
    		$this->_dateFCO = $ligne["dateFCO"];
    		$this->_dateValiditeCarteConducteur = $ligne["dateValiditeCarteConducteur"];
    		$this->_dateValiditeQualificationConducteur = $ligne["dateValiditeQualificationConducteur"];
    		$this->_AIPR = $ligne["AIPR"];
    		$this->_dateValiditeAIPR = $ligne["dateValiditeAIPR"];
    	}
    La même classe en SQL:

    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
     
    CREATE TABLE `salarie` (
     `numSalarie` int(11) NOT NULL AUTO_INCREMENT,
     `numNiveau` int(11) NOT NULL,
     `numPoste` int(11) NOT NULL,
     `nomSalarie` char(32) COLLATE utf8_unicode_ci NOT NULL,
     `prenomSalarie` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
     `dateFIMO` date DEFAULT NULL,
     `dateFCO` date DEFAULT NULL,
     `dateValiditeCarteConducteur` date DEFAULT NULL,
     `dateValiditeQualificationConducteur` date DEFAULT NULL,
     `dateVisiteMedicale` date DEFAULT NULL,
     `AIPR` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL,
     `dateValiditeAIPR` date DEFAULT NULL,
     PRIMARY KEY (`numSalarie`),
     KEY `FK_salarie_niveauSalarie` (`numNiveau`),
     KEY `FK_salarie_posteSalarie` (`numPoste`)
    ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_c
    J'ai effectué quelques tentatives, résolus 2/3 petites erreurs et j'arrive au même point que pour mon précédent formulaire: renseigner les champs avec les données renvoyées par le serveur.
    Voici les deux réponses que j'ai eu:

    -"12TestTentative2022-08-21" pour la première avec un salarié n'ayant pas toutes les propriétés de renseignées.
    -"23TestAttempt2022-08-212022-08-212022-08-212022-08-212024-01-16Encadrant2022-08-21" pour un salarié ayant toutes les propriétés de renseignées.

    Je ne sais pas réellement commet manipuler toutes ces informations, dois-je approfondir mon utilisation d'un xhr ou pencher sur l'utilisation de JSON pour la manipulation des données renvoyées ?
    Sachant que je suis "novice" sur ces sujets là, quelle solution serait la plus simple d'utilisation ? Laquelle est la plus pertinente ?
    echo $niveau, $poste, $nom, $prenom, $fimo, $fco, $carte, $qualif, $med, $aipr, $dateAIPR; est-il "autorisé" ? Dois-je former un tableau à niveau pour l'exploiter après ?

    Cordialement,
    Skunka.
    Traverse les rues ...

    Git: https://github.com/BlueSkunka

    Débutant à vie

  8. #8
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Citation Envoyé par Skunka Voir le message
    Voici les deux réponses que j'ai eu:

    -"12TestTentative2022-08-21" pour la première avec un salarié n'ayant pas toutes les propriétés de renseignées.
    -"23TestAttempt2022-08-212022-08-212022-08-212022-08-212024-01-16Encadrant2022-08-21" pour un salarié ayant toutes les propriétés de renseignées.

    Je ne sais pas réellement commet manipuler toutes ces informations, dois-je approfondir mon utilisation d'un xhr ou pencher sur l'utilisation de JSON pour la manipulation des données renvoyées ?
    Les deux mon capitaine

    Tu as la totale liberté du format de transmission des données entre ton serveur et le côté client. Tu pourrais choisir du XML, du CSV, ou du texte brut où les données sont séparées par un emoji caca. Ce qui est pratique avec le JSON, c’est qu’un grand nombre de technos serveur et client savent l’utiliser, donc tu n’as pas à écrire toi-même les fonctions d’encodage et de décodage.

    Avec PHP : json_encode
    Avec jQuery, on l’a vu, il essaye de faire en fonction du Content-Type envoyé. Il faut donc utiliser une autre fonction PHP : header.

    Tu utiliseras ces fonctions dans ton fichier salarie_retrieve.php :
    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
    <?php
    header('Content-Type: application/json; charset=utf-8');
     
    ...
     
    echo json_encode([
      "niveau"   => $niveau,
      "poste"    => $poste,
      "nom"      => $nom,
      "prenom"   => $prenom,
      "fimo"     => $fimo,
      "fco"      => $fco,
      "carte"    => $carte,
      "qualif"   => $qualif,
      "med"      => $med,
      "aipr"     => $aipr,
      "dateAIPR" => $dateAIPR
    ]);

    Sauf imprévu, jQuery va détecter le format application/json et convertir automatiquement les données, et tu devrais voir l’objet JSON dans ta console grâce à la ligne console.log(data) qui se trouve déjà dans ton code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        .done(function (data, textStatus, jqXHR) {
            console.log(data);
            $("input[name='nomSalarie']").val(data.nom);
            $("input[name='prenomSalarie']").val(data.prenom);
            ...
        })
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  9. #9
    Membre habitué Avatar de Skunka
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2018
    Messages : 135
    Points : 158
    Points
    158
    Par défaut
    Citation Envoyé par Watilin Voir le message
    Les deux mon capitaine
    Tu pourrais choisir du XML, du CSV, ou du texte brut où les données sont séparées par un emoji caca.
    Attention! Je pourrais te prendre au sérieux!

    C'est tout bon, je peux enfin remplir mes formulaires automatiquement! Merci à tous ceux qui ont participé et un spécial remerciement à Watilin pour ces réponses très pertinentes, clairement expliquées et accompagnées d'une multitude d'informations intéressantes! Je devrais être capable de mettre en pratique ce que j'ai appris à travers notre échange et l'adapter au reste de l'application. Ce problème est maintenant résolu!
    Encore merci à tous!

    Cordialement,
    Skunka.
    Traverse les rues ...

    Git: https://github.com/BlueSkunka

    Débutant à vie

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

Discussions similaires

  1. Appel script PHP avec schtasks
    Par Redbass dans le forum Windows
    Réponses: 0
    Dernier message: 11/06/2012, 14h13
  2. appel script php et condition sur valeur de retour
    Par lolodev dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/06/2011, 08h18
  3. Appeler une fonction d'un script PHP depuis HTML
    Par barthelv dans le forum Langage
    Réponses: 31
    Dernier message: 27/12/2005, 11h25
  4. Probléme d'appel script PHP
    Par pollux93160 dans le forum Langage
    Réponses: 3
    Dernier message: 21/10/2005, 19h06
  5. Réponses: 6
    Dernier message: 23/05/2005, 08h33

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