[RESOLU] Récupérer le résultat d'ajax et le traiter dans une requete sql

Eléphant du PHP | 99 Messages

11 déc. 2016, 19:20

Bonjour,
je fais appel à vos connaissances car je but sur un problème depuis le début de l’après-midi...

J'ai un tableau qui liste des interventions et qui permet d'ouvrir une modal lorsque l'on clique sur une ligne de celui-ci.
Voici le code :
<tr onclick="input" data-toggle="modal" href="#my_modal" data-int-id="<?php echo $affiche['id']; ?>" class="inters">
La modal s'ouvre sans problème avec le code ci-dessous:
$('#my_modal').on('show.bs.modal', function (e) {
				var rowid = $(e.relatedTarget).attr('data-int-id');
				$.ajax({
				  type : 'POST',
				  url : '../inc/reponse.php',
				  data :  'rowid='+ rowid,
				  success : function(data) {
					//var intId = $(e.relatedTarget).data('intId');
				  }
				});
	 });
ma page reponse.php reçoit bien la valeur de la variable rowid.
Le problème est que je n'arrive pas à utiliser cette valeur pour executer une requette sql qui me permettra d'afficher dans ma modal le contenu de celle-ci.

Voila si vous pouviez me donner un petit cout de main ça serai vraiment super.
Merci

Mammouth du PHP | 791 Messages

11 déc. 2016, 19:35

c'est le code de inc/reponse.php dont on a besoin si tu ne sais pas executer une requete sql dans ce fichier.

Eléphant du PHP | 99 Messages

11 déc. 2016, 19:44

Merci pour ta réponse :)
voici :
<?php
    $id_int = $_POST['rowid']; 
	echo $id_int;
?>

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 8686 Messages

13 déc. 2016, 14:50

salut,

qu'est ce que tu ne sais pas faire ?

a partir du moment où tu as ton id dans response.php tu peux faire un select * from latable where id=xxx

ensuite il te faut mettre les données dans un tableau et le retourner au format json (c'est le plus simple pour l'utiliser en JS ensuite).
voici la base
<?php
// exemple pour Mysql, a toit de voir comment faire dans la doc
$cnx = mysqli_connect();
$sql = 'select champ1, champ2, champ3, etc from latable where id='.mysqli_real_escape_string($cnx,$_POST['rowid']);
$req = mysqli_query($cnx,$sql);
$data = [];
if($req !== false){
  $data = mysqli_fetch_all($req, MYSQLI_ASSOC);
  mysqli_free_result($req);
  mysqli_close($cnx);
}
echo json_encode($data);
tu peux avantageusement utiliser cela pour envoyer un message d'erreur :)

Perso je préfère la version qui fournit de objet (plus simple à utiliser en js ensuite
<?php
// exemple pour Mysql, a toit de voir comment faire dans la doc
$cnx = mysqli_connect();
$sql = 'select champ1, champ2, champ3, etc from latable where id='.mysqli_real_escape_string($cnx,$_POST['rowid']);
$req = mysqli_query($cnx,$sql);
$data = [];
if($req !== false){
  while($d = mysqli_fetch_object($req)){
    $data[] = $d;
  }
  mysqli_free_result($req);
  mysqli_close($cnx);
}
echo json_encode($data);
cote js jQuery va te permettre d'exploiter le json de façon simple (voir dans la doc ;) )


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 99 Messages

13 déc. 2016, 20:30

merci moogli pour ta réponse,
je ne pense jamais à utilisé json.
Mon fichier reponse.php me retourne bien la chaine json au format [{"id":"2","id_client":"1","id_inter":"21"}]. Cependant je ne comprend comment j peux renvoyer le résultat dans ma modal.

j'ai essayé de la manière suivante:
<?php
$resultat = var_dump(json_decode($data, true));
echo $resultat["id_inter"];
?>
Mais la variable reste vide.
J'ai vraiment du mal avec le jquery et le javascript :(

Eléphant du PHP | 111 Messages

13 déc. 2016, 22:12

Bonjour,

Tu renvois directement le JSON via ton PHP sans faire le echo $resultat["id_inter"], tu fais plutôt le echo json_encode($data);

Ensuite côté javascript tu récupères tes données en les parsants JSON.parse(data);

Eléphant du PHP | 99 Messages

15 déc. 2016, 19:30

merci je vais essayer ça. :)

Eléphant du PHP | 99 Messages

15 mars 2017, 21:26

Salut,
je reviens après quelques moi de pause.
Donc j'ai avancé sur mon problème j'arrive bien à récupérer mes info avec json mais je suis confronté à un autre souci....
Je n'arrive pas à afficher le résultat de 2 tables dans un tableau.
seul le premier resultat s'affiche...
Voici mon code :
$nom_ent = array();
	$qte_ent = array();
	//recherche quantités entrepot
	$qte_war = mysqli_query($link, "SELECT * FROM warhouse_stock WHERE id_produits=".$produitId."");
		while($donnee = mysqli_fetch_array($qte_war))
		{
			$qte_ent = '<td><strong>'.$donnee['quantite'].'</strong></td>';
			$warh = $donnee['id_warhouse'];
		}
		//recherche nom entrepot
		$warhouse = mysqli_query($link, "SELECT * FROM entrepots WHERE id=".$warh."");
			while($donnees = mysqli_fetch_array($warhouse))
			{													
				$nom_ent = '<td>'.$donnees['nom_entrepot'].'</td>';
			}
et pour la partie json :
$text = array('title' => $nom_produit, 
'data' => '
  <tr class="bg-primary-300">
          <th><strong>Entrepôt / Agence</strong></th>
                  <th><strong>Quantité</strong></th>
                    </tr>
                     </thead>
                       <tbody>
                         <tr>
				'.$nom_ent.'
				'.$qte_ent.'
			 </tr>
                       </tbody>
                     </table>');
Merci pour votre aide.

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 8686 Messages

16 mars 2017, 16:18

salut,

alors tu n'as qu'un résultat parce que tu n'utilises pas de tableau;, il te manque des [] pour alimenter les tableaux déclarés en haut
$qte_ent[] = '<td><strong>'.$donnee['quantite'].'</strong></td>';



question bête tu balances du html dans le json ?
parce la but d'une requête ajax c'est de retourner les données et c'est le front qui construit le html ;)

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 99 Messages

17 mars 2017, 22:31

merci pour ta réponse :D
Alors non je ne passe plus le html dans mon json, mais il me reste un problème lorsque que ma modal est ouverte les résultats tableau sont sur la même ligne...

je doit faire un foreach ou autre l'afficher?

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 8686 Messages

20 mars 2017, 12:06

pour afficher sur le front ?

oui y a un moment faut boucler sur le tableau d'objet que tu reçois après faut voir comment tu affiches la chose.
soit en html simple il faut que tu ajoutes du html dans le dom.

avec une grid JS comme https://datatables.net/
y a sa aussi : http://www.jqwidgets.com/jquery-widgets ... /index.htm (qui a pas l'air mal : http://www.jqwidgets.com/jquery-widgets ... o-json.htm).

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 99 Messages

24 mars 2017, 22:42

Après quelques jour de galère j'ai enfin réussi...
si ca peu aider voici le code :
						  var warh = json["nom_ent"];
						  var wqte = json["qte_ent"];

						  var war_qteHTML = "";
					
						  // Loop through Object and create peopleHTML
						  for (var key in warh) {
							if (warh.hasOwnProperty(key)) {
							  war_qteHTML += "<tr>";
							  if(wqte[key] >=1){
								war_qteHTML += "<td>" + warh[key] + "</td>";
								war_qteHTML += "<td>" + wqte[key] + "</td>";
							  }
							  war_qteHTML += "</tr>";
							}
						  }
				
					  // Replace table’s tbody html with peopleHTML
					  $("#war_qte tbody").html(war_qteHTML);
Merci à toi Moogli