0
votes

Comment amener un résultat JSON en PHP

J'ai des résultats d'un fetch.php à l'aide de JSON et j'ai apporté avec succès tous les résultats à mon écran HTML modal bootstrap. Lorsque le modal est affiché, j'aimerais exécuter une requête MySQL en utilisant une valeur provenant du même Json que j'ai utilisé pour le modal, mais je ne peux pas mettre cette valeur dans une variable PHP pour exécuter la requête SQL. Comment puis-je obtenir cela?

J'essaie d'apporter la même valeur que je saisis dans la zone de texte HTML (modal), mais cela ne fonctionne pas. J'ai également essayé d'utiliser la valeur de Json '$ (' # PCR '). Val (data.pcrno);)', mais rien n'arrive.

Ceci est le script pour collecter des informations à partir de la base de données à partir de la base de données fichier .php: xxx

ceci est le code PHP xxx

je voudrais inclure la valeur de ce Val (data.pcrno) json retourne dans la variable $ PCR, la requête MySQL va donc fonctionner


6 commentaires

Le paramètre que vous avez envoyé s'appelle PCR_Number, pas PCR. Ils doivent correspondre, l'ordinateur ne peut pas deviner ce que vous vouliez dire


Et les données que vous avez écho en retour n'est pas JSON, alors JQuery ne le comprendra pas. Vous semblez être en sortie HTML à la place


Conseil de débogage, essayez d'imprimer la matrice $ _Post une fois pour voir la structure de tableau, le paramètre DataType est utilisé pour spécifier le type de retour des données, et non le sortant.


Je pense que vous devez vérifier votre code et vérifier que vous comprenez ce que JSON est et comment le générer à l'aide de PHP. Il y a beaucoup de simples tutoriels que vous pouvez suivre.


Merci pour les premiers commentaires @adyson et @pinaki, une chose que je confuse est la raison pour laquelle je peux utiliser le code $ ('# pcr'). Val (data.pcrno); et inclure cette valeur dans Mon HTML et je ne peux pas obtenir cette valeur pour insérer dans une variable PHP.


Parce que ce sont deux choses complètement différentes et indépendantes. Vous pouvez accéder à votre champ de formulaire à l'aide de $ ('# PCR') , car vous avez donné le champ de formulaire l'identifiant PCR . Nom du paramètre de poteau que vous envoyez, vous vous-même spécifié comme pccr_number - c'est le premier pcr_number dans Data: {PCR_NUMBER : PCR_NOMBER} Les touches que vous utilisez dans cet objet que vous passez pour DATA ici, déterminez les noms des paramètres de poste que vous envoyez.


3 Réponses :


1
votes

Vous devez d'abord retourner Json à partir de PHP à l'aide de json_encode code>.

à l'intérieur de cette boucle p> xxx pré>

stocker toutes les données d'une association Array, puis convertissez-le en JSON en utilisant json_encode code> et renvoyer le json. p>

Utilisez des données JSON dans votre fichier Ajax P>

$.ajax({
        url:'fetch.php',
        method:'post',
        data:{pcr_number:pcr_number},
        dataType:"json",
        success:function(data){
          var data = JSON.parse(data);
          $('#PCR').val(data.PCRNo);
          $('#PCC').val(data.PCC);
          $('#PCR_Creation').val(data.Creation_Date);
          $('#PCR_Status').val(data.Stage);
          $('#Required_Completion').val(data.Required_Completion);
        }
      });


4 commentaires

@vinay_kumar Que dois-je inclure dans le json_encode pour obtenir la valeur du fichier fetch.php? Serait l'entrée pccr_number i envoyez au fichier fetch.php ou la sortie val (data.pcrno) que j'ai utilisé dans mon HTML?


J'ai essayé vos codes, mais quelque chose n'a encore manqué. J'essaie d'être très simple. Faisons la séquence que j'aimerais faire. J'ai ma table et je clique sur le "numéro de PCR" et il est stocké à var pccr_number = $ (this) .attr ('id'); . Parfait maintenant. Après cela, cette valeur est allée à fetch.php et trouvez le PCR_Number dans la base de données et revenez à l'intérieur d'un tableau JSON avec la même valeur que nous avons envoyée dans le fichier de récupération mais dans un autre format $ ('# # PCR '). Val (data.pcrno); que je remplissais mon bootstrap Modal HTML dans la zone de texte Number PCR Le nom et l'identifiant sont "PCR" . (suite)


... Ce dont j'ai vraiment besoin est un moyen de stocker le numéro PCR dans un $ PCR variable et utilisez cette valeur pour exécuter une autre requête MySQL et obtenir d'autres informations. Comment puis-je stocker ce numéro de PCR que j'ai cliqué sur une variable PHP?


@ El.alex78uk vérifier ma nouvelle réponse



1
votes

Il existe un certain nombre de problèmes logiques assez basiques avec votre code qui l'empêche de travailler.

1) Data: {PCR_Number: pcr_number} - le nom pcr_number ne correspond pas à la valeur PCR Lequel est le serveur recherchant à l'aide de $ _ post ['PCR']; . Les noms doivent correspondre. Lorsque vous effectuez une demande AJAX, le nom que vous avez donné au champ de formulaire dans le code HTML n'a pas d'importance (sauf si vous n'utilisez pas . Sériaire () ) car vous spécifiez de nouveaux noms dans les données Paramètre.

2) Votre requête SQL n'a pas de sens. Vous semblez vouloir lire une seule ligne relatif à un numéro de PCR, mais votre requête ne fait aucune utilisation de la valeur d'entrée PCR pour essayer de restreindre les résultats à cette ligne. Vous devez utiliser un code SQL clause pour l'obtenir pour sélectionner uniquement la ligne avec cet identifiant, sinon vous allez chercher toutes les lignes et saurai ce que l'on est correct. (La récupérant tous, puis à l'aide d'un si dans une boucle PHP pour vérifier que le correct est très inefficace.) Je vous ai écrit une version qui utilise correctement la clause du lieu de la requête. En toute sécurité, en utilisant des énoncés et des paramètres préparés (à projeter contre les attaques d'injection SQL).

3) Votre sortie du PHP n'a aucun sens. Vous avez dit à JQuery (via DataType: "json" Pour attendre une réponse JSON, puis votre code à l'intérieur de la fonction "Success" est basé sur l'hypothèse que vous recevrez un seul objet contenant tous les champs de la table. Mais echo $ Row1 ['pcnno']; echo "
"; seule sortira un champ, et il en sortit avec HTML à côté. Ce n'est pas JSON, Ce n'est même pas proche d'être JSON. Vous devez émettre toute la ligne, puis utiliser json_encode () pour activer l'objet en une chaîne JSON que JQuery peut analyser lorsqu'il le reçoit.

Voici une version du code contenant toutes les modifications ci-dessus:

JavaScript: xxx

php: xxx

NB Je suggérerais potentiellement à étudier certains didacticiels sur ce type de sujet, car il s'agit d'un cas d'utilisation assez standard pour Ajax / Json, et vous devriez pouvoir trouver des échantillons qui amélioreraient votre compréhension de tous les différentes parties.

ps actuellement le code PHP ci-dessus retournera un vide objet s'il n'y a pas de ligne de correspondance dans la base de données. Cependant, il s'agit probablement d'une condition d'erreur (et provoquera un crash de votre code JavaScript en raison de la lutte contre les propriétés inexistantes). Vous devez donc déterminer comment vous souhaitez gérer une telle erreur et quelle réponse à revenir (par exemple 400 ou 404, et un message approprié).


4 commentaires

Vous devriez penser que tout n'a pas de sens parce que l'instruction est de ne pas mettre le code entier, alors je viens de reprendre ce que je travaille. La requête MySQL fonctionne bien dans une autre page, alors je ne suis donc pas inquiet à ce sujet, ma préoccupation est de savoir comment stocker la valeur de la PCR, que je clique dans une table pour l'envoyer à une variable PHP comme $ PCR et utilisez ceci pour exécuter la requête MySQL.


Eh bien, je vous ai montré comment envoyer la valeur au serveur et je vous ai montré comment l'utiliser dans une requête SQL. Votre requête pourrait travailler ailleurs mais ce n'était pas logique dans cette situation (ce n'est pas la même chose que cela ne fonctionne pas!). Donc, le code que j'ai posté travaille-t-il pour vous et produit le résultat attendu? Et avez-vous compris les points que j'ai faits pour apprendre de plus tard?


Bonjour @adyson, ça ne m'a pas aidé. Vous essayez de vous plaindre au lieu de comprendre mon vrai problème. Je comprends les points que j'ai besoin pour étudier et apprendre, merci pour cela. Je crois que mon message est un peu déroutant, alors je crée un autre qui est lié au même problème, cependant peut le résoudre aussi. Voir le Lien . Merci beaucoup


Je suis d'accord que je ne pense pas que vous ayez peut-être articulé votre problème trop clairement. J'ai répondu à ce que je pensais être la question, mais des excuses si ce n'était pas utile. Je vais regarder votre nouveau post, merci.



1
votes

ci-dessous est le script modifié pour stocker différentes valeurs en $ variable PCR xxx


1 commentaires

Bonjour @Vinay Kumar, j'ai fait un autre message que je crois vous aidera davantage, car je crois que celui-ci est très déroutant. Voir ceci Lien . Si vous triez celui-là, vous trierez cela aussi :-). Merci.