alone06
Messages postés115Date d'inscriptionmardi 9 novembre 2010StatutMembreDernière intervention18 mai 2016
-
4 juil. 2014 à 23:10
alone06
Messages postés115Date d'inscriptionmardi 9 novembre 2010StatutMembreDernière intervention18 mai 2016
-
8 juil. 2014 à 00:07
Bonjour,
J'ai un soucis avec les listes deroulantes, je sais que c'est un peu bete mais je ne m'y connais pas du tout en ajax, j'ai fais quelques recherches et je suis arrivé à afficher les données sur un seul champs texte alors que je veux le faire sur 5.
Voici mon code :
Pour la page html :
<html>
<head>
<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
<script type='text/javascript'>
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr;
}
/**
* Méthode qui sera appelée sur le click du bouton
*/
function go(){
var xhr = getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200){
leselect = xhr.responseText;
// On se sert de innerHTML pour rajouter les options a la liste
document.getElementById('desc').innerHTML = leselect;
}
}
// Ici on va voir comment faire du post
xhr.open("POST","ajax.php",true);
// ne pas oublier ça pour le post
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
// ne pas oublier de poster les arguments
// ici, l'id de l'auteur
sel = document.getElementById('page');
id_page = sel.options[sel.selectedIndex].value;
xhr.send("id_page="+id_page);
}
</script>
</head>
<body>
<form>
<fieldset style="width: 500px">
<legend>Liste liées</legend>
<label>Pages</label>
<select name='page' id='page' onchange='go()'>
<option value='-1'>Aucun</option>
<?
include "dataconn.php";
$rep2 = mysql_query("SELECT * FROM pages ORDER BY nom_page ASC");
while($row = mysql_fetch_assoc($rep2)){
echo "<option value='".$row["id_page"]."'>".$row["nom_page"]."</option>";
}
?>
</select>
<label>desc</label>
<div id='desc' style='display:inline'>
<input type="text" name='desc' value="">
</div>
</fieldset>
</form>
</body>
</html>
et ici le code du script ajax.php :
<?php
echo "<input type='text' name='desc' value='";
if(isset($_POST["id_page"])){
include "dataconn.php";
$res = mysql_query("SELECT * FROM pages
WHERE id_page=".$_POST['id_page']."");
while($row = mysql_fetch_array($res)){
echo $row["desc"];
}
}
echo "'>";
?>
comme je l'ai expliqué je voudrais récupérer plusieurs champs texte qui correspondent au enregistrement sur la meme table pour pouvoir les modifier et les reenregistrer.
Je vous remercie d'avance pour votre aide.
jordane45
Messages postés38144Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention21 avril 2024344 Modifié par jordane45 le 5/07/2014 à 01:11
Bonjour,
Déjà :
Pas besoin de passer par du js pour récupérer la value de l'élément sélectionné dans ton select... Il suffit de le passer en paramètre de ta fonction.
Ensuite... tu ne créés pas dans ton fichier php (ajax) l'input qui va recevoir la valeur....
Tu l'écris depuis ton code javascript...
=> pour un input on utiliser le Value ( et non le innerHTML)
alone06
Messages postés115Date d'inscriptionmardi 9 novembre 2010StatutMembreDernière intervention18 mai 2016 5 juil. 2014 à 02:06
Merci Jordane pour votre reponse,
ma question est la suivante :
j ai d autres champs dans la table pages champs2, champs3
ce que je voudrais et que comme j ai fais pour desc je voudrais faire pour champs2 et champs3
// Ne pas oublier d'importer jquery.js dans la page
function go(id_page){
$.ajax({
url : 'ajax.php',
data : "id_page="+id_page,
type : 'post',
dataType : 'json',
success : function(data){
// ICI LE CODE POUR REMPLIR TES INPUT
$('#input_desc').val(data.desc);
},
error : function(resultat){
alert(resultat);
}
});
}
alone06
Messages postés115Date d'inscriptionmardi 9 novembre 2010StatutMembreDernière intervention18 mai 2016 5 juil. 2014 à 02:27
oh my god tout ça est trop pour moi lol deja je suis nul en ajax et maintenant y a json en plus, je déconne lol
j'essaye ça et je vais voir ce que ça va donner
Merci
jordane45
Messages postés38144Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention21 avril 2024344 5 juil. 2014 à 02:40
Tu verras que la librairie Jquery simplifie grandement la vie des développeurs javascript....
Par exemple... pour mettre une valeur dans un élément tu n'as plus besoin de faire :
Et pour l'AJAX .. plus besoin de créer le getXhr ... c'est Jquery qui gère tout seul.
Pour ce qui est du json... ce n'est rien de plus qu'un "encodage" ...
comme tu peux le voir.. ça ne complexifie pas ton code.. puisque je n'ai ajouté qu'une instruction pour le faire .... json_encode
Vous n’avez pas trouvé la réponse que vous recherchez ?
jordane45
Messages postés38144Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention21 avril 2024344 5 juil. 2014 à 03:42
Déjà Tu peux virer la fonction getXhr()
Ensuite... il est où le json_encode du fichier ajax (php) ??
ça veut dire que que je dois mettre les autres input c est ça?
Oui.. mais attention tu as une apostrophe en trop
Et ..
data.champs2
- data représente les données issues de ta page ajax (ça..tu ne change rien)
- champ2 .. ça doit être le nom d'un champ de ta BDD retourné par ta requête;
si je prend la requête :
input1 et input2 étant les ID de mes inputs à remplir.
Mais avant de te lancer à coup de copier/coller de code (au pif...) prend le temps de lire des tutos sur AJAX / JSON....
alone06
Messages postés115Date d'inscriptionmardi 9 novembre 2010StatutMembreDernière intervention18 mai 2016 5 juil. 2014 à 05:40
le copier coller c etait pour savoir si j etais sur la bonne voie
alone06
Messages postés115Date d'inscriptionmardi 9 novembre 2010StatutMembreDernière intervention18 mai 2016 5 juil. 2014 à 06:57
j'ai lu quelques cours et tutos de json mais honetement je suis encore au point de depart je ne sais pas comment l utiliser (et quel est l'interet de son utilisation)
jordane45
Messages postés38144Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention21 avril 2024344 5 juil. 2014 à 11:24
Json c'est juste un encodage...une autre façon de gérer des variables.. une autre sorte de array en quelques sorte.
si c est juste de l encodage donc meme si je ne l utilise pas ça devrait fonctionner n est ce pas?
mais maintenant quand je fais mon choix dans la liste deroulante j'ai un pop up avec [Object object] et rien ne s'affiche sur les champs texte :(
jordane45
Messages postés38144Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention21 avril 2024344 6 juil. 2014 à 13:53
j'ai un pop up avec [Object object]
Ca c'est normal.... un ALERT ne peut pas afficher directement le contenu d'une variable JSON.... c'est un peu comme en PHP ... faire un echo sur un Array...ça ne passe pas!
Pour voir ce que ta variable contient utilise le console.log()
si c est juste de l encodage donc meme si je ne l utilise pas ça devrait fonctionner n est ce pas?
Ca te permet de pouvoir plus facilement manipuler les données issues de ta page php (ajax).....
alone06
Messages postés115Date d'inscriptionmardi 9 novembre 2010StatutMembreDernière intervention18 mai 2016 6 juil. 2014 à 23:31
je n'est plus le pop up d erreur maintenant mais le champs texte reste vide
jordane45
Messages postés38144Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention21 avril 2024344 7 juil. 2014 à 00:21
Si tu ne nous en dit pas plus... on ne pourra pas t'aider...
Quel code utilises tu maintenant ?
Qu'obtiens tu avec des " console.log " ?
...
alone06
Messages postés115Date d'inscriptionmardi 9 novembre 2010StatutMembreDernière intervention18 mai 2016 7 juil. 2014 à 01:10
désolé ça fait 3 jours que je tourne en rond et que je fais des recherches et que lis les tutos sans résultat, je perds la tete que j ai oublié de mettre le code.
j'ai ajouté les autres champs texte et j'ai eu encore le pop up
<?php
include "dataconn.php";
if(isset($_POST["id_page"])){
$sql="SELECT * FROM pages WHERE id_page='".$_POST['id_page']."'";
$res = mysql_query($sql);
while($row = mysql_fetch_array($res)){
echo $row["desc"];
echo $row["title"];
echo $row["subj"];
}
}
?>
quand j'utilise firebug pour avoir le resultat consol.log j'ai comme quoi id_page est indefini :(
jordane45
Messages postés38144Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention21 avril 2024344 7 juil. 2014 à 01:46
Ben oui...ta fonction go attend un paramètres. ..mais dans ton onchange..il n'y en a pas.
alone06
Messages postés115Date d'inscriptionmardi 9 novembre 2010StatutMembreDernière intervention18 mai 2016 7 juil. 2014 à 02:00
merci je l'ai remplacé par go(this.value) mais ça ne rempli que les 2 premiers champs et par la valeur du 1er (le contenu du 1er champs est dupliqué au 2eme et le 3eme champs est vide)
alone06
Messages postés115Date d'inscriptionmardi 9 novembre 2010StatutMembreDernière intervention18 mai 2016 7 juil. 2014 à 02:25
je sens que je suis tout pres de la solution lol
maintenant j'ai le code de sortie que je dois avoir pour les 3 input mais sur chaque champs texte (je ne sais pas si je suis assez clair ou non, j'ai des champs texte et dedans <input...> les 3 input que je dois avoir correctement remplis)
jordane45
Messages postés38144Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention21 avril 2024344 Modifié par jordane45 le 7/07/2014 à 10:15
Bonjour,
Dans le dernier code que tu nous montres... tu y mets du HTML...
C'est dommage alors que ton code précédent était presque bon...
Il ne te restait plus qu'à y mettre du json..
jordane45
Messages postés38144Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention21 avril 2024344 Modifié par jordane45 le 7/07/2014 à 22:55
Humm.. Tu as tout mis ?
Je pense qu'il manque des infos comme : Object{.....}
1 - As tu bien, sur ta page HTML des Inputs portant comme ID ce qui est dans ton script jquery ?
input_desc
input_title
input_nom_page
2 - Tu peux aussi essayer, vue que tu ne retourne finalement qu'une seule Ligne dans ta requête de faire ça (dans ta page PHP)
Echo json_encode($arrResult[0]);
jordane45
Messages postés38144Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention21 avril 2024344 7 juil. 2014 à 22:58
Tu peux nous remettre le code js que tu as ?
jordane45
Messages postés38144Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention21 avril 2024344 7 juil. 2014 à 23:18
Resolu ???
alone06
Messages postés115Date d'inscriptionmardi 9 novembre 2010StatutMembreDernière intervention18 mai 2016 8 juil. 2014 à 00:07
oui désolé j'avais répondu a ce message mais je ne sais pas pourquoi c'est affiché sur le message précédent