PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 29-05-2010 11:00:48

yolet
Membre
Inscription : 27-04-2010
Messages : 34

besoin explication

Bonjour
Je n'ai toujours pas solution lors de l'affichage des données envoyées par un javascript. Comme c'est la premiere fois que j'utilise cela qq1 pourrait me donner des precisions concernant certains points iés à l'uitlisation de javascript :
Quand on utilise :
document.getElementById("detail_ins").innerHTML=xmlhttp.responseText;
xmlhttp.open("GET","insert_donnees.php?par="+str,true);
xmlhttp.send();
... on appelle bien un bout de php, mais cette inclusion de page ne laisse pas de trace (clic droit/afficher la source ) on ne voit que la balise "detail_ins".
1)Si j'ai bien compris c'est justement propre à ajax : est ce possible (parametre ou autres) de faire "comme si" c'était un include normal ?
2)dans mon "insert_donnees.php" est ce que je dois preciser qq chose dans le header


Merci de votre aide
(j'ai déja lu les tutos, regardés les exemples etc)

Hors ligne

#2 29-05-2010 12:09:31

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : besoin explication

Tout code javascript ne recréé pas le code généré par le navigateur à ce que je sache.
C'est donc propre aux navigateurs qui ne remettent pas à jour leur interprétation de la page.

Après il me semble que FireBug (plugin firefox) te permettrait de voir ce que tu souhaites. Car il me semble qu'il réactualise à chaque action javascript.

Hors ligne

#3 29-05-2010 17:43:46

yolet
Membre
Inscription : 27-04-2010
Messages : 34

Re : besoin explication

xTG a écrit :

Tout code javascript ne recréé pas le code généré par le navigateur à ce que je sache.
C'est donc propre aux navigateurs qui ne remettent pas à jour leur interprétation de la page.

Après il me semble que FireBug (plugin firefox) te permettrait de voir ce que tu souhaites. Car il me semble qu'il réactualise à chaque action javascript.

... bon c'est un peu ce que je craignais

Hors ligne

#4 29-05-2010 20:24:24

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : besoin explication

Bonsoir Yolet,

J'avoue que je n'ai pas très bien compris ta question^^
1) Si tu travailles avec FF, comme l'a très justement dit xTG, il te faut Firebug pour pouvoir débugger ton javascript. Sache qu'il existe l'equivalent sur IE8.
2) Pour pouvoir utiliser ton code Javascript faut mette ceci entre tes balises <head>...</head> comme suit:


...
<script type="text/javascript" language="JavaScript1.2" src="../js/monfichierjavascript.js"></script>
...
 

3) pour appeler ta requête ajax, soit tu fait comme pierrot, soit d'une manière plus classique de base :


    function add(){
  xmlhttp=GetXmlHttpObject();
  if (xmlhttp==null){alert ("Votre navigateur ne supporte pas les requêtes HTTP ou javascript a été désactivé.");return;} 
  ...
  xmlhttp.onreadystatechange=add_stateChanged;
  xmlhttp.open("GET",url,true);
  xmlhttp.send(null);
    }

function add_stateChanged(){
  if (xmlhttp.readyState==4){
    document.getElementById("myDivId").innerHTML=xmlhttp.responseText;
  } else {
    document.getElementById("myDivId").innerHTML="<div>affichage d'un timer d'attente</div>";
  }
}

 

Voila


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#5 29-05-2010 22:05:26

yolet
Membre
Inscription : 27-04-2010
Messages : 34

Re : besoin explication

Bonsoir
...  mon souci est de comprendre ce qui se passe (meme si ca se passeplutot bien!)
=>  sur un select j'appelle un javascript, avec tout cekil faut :

1)document.getElementById("balise_detail_ins").innerHTML=xhr.responseText;
... là on localise l'élément uniquement (je crois)
2)xhr.open("GET","insert_donnees.php?par="+str,true);
...là on envoie un bout de page html (sans recharger la page entiere, ça j'ai compris !)
3)xhr.send();
.. non c'est la qu'on envoie ;-)

=> dans mon insert_donnees.php tout est ok et ma page s'affiche à 99% comme je le veux
Ma question initiale ( à priori c'est <normal>) le code de la page ne se recharge pas lorsqu'on appelle ce "insert_donnees.php" donc s'il me manque qq chose je ne le vois pas en affichant la source : Je me sers de IE , le debugger javascript c'est lequel ? (ca m'aidera probablement pour d'autres pages)

Le 1% qui ne va pas c'est que le contenu des lignes du tableau retourné par insert_donnees.php  ne peut pas etre exporté vers XL. Les utilisateurs du site le font pour tous les autres pages en php, et là c'est "rien".
J'ai aussi la solution de faire un export de fichier, mais tellement plsu simple comme cela (clic droit/exporter vers xl)


tongue à bientot wink

Hors ligne

#6 30-05-2010 08:15:20

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : besoin explication

Désolé Yolet, toujours pas bien compris^^

Pour IE ca s'appele tout simplement "Outils de developpement"
Un conseil avec ajax (peut être ton problème viens de là, mais bon n'ayant toujours pas vraiment compris ton pb...) : Dans le chargement initial de ta page, il se peut que ta div ayant pour ID "balise_detail_inc" contienne du code que tu as besoin de garder (présence d'une autre div d'affichage d'erreur, appel de script, etc...) et lorsque tu appliques ta fonction JS

document.getElementById("balise_detail_ins").innerHTML=xhr.responseText;

, tout l'ancien contenu sera écrasé par le nouveau contenu de ta fonction Ajax. Il faut donc penser à le maintenir en le rajoutant dans ton retour xhr.responseText

Concernant ton export, il me semble que sur les autres pages en php il doit y avoir une fonction rajoutée sur un onclick() pour l'export que tu as du oublié de rajouter dans ton traitement PHP de ta fonction ajax.

Dernière modification par Jc (30-05-2010 08:20:24)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#7 30-05-2010 13:14:20

yolet
Membre
Inscription : 27-04-2010
Messages : 34

Re : besoin explication

Jc a écrit :

Désolé Yolet, toujours pas bien compris^^

Pour IE ca s'appele tout simplement "Outils de developpement"  OK merci je vais regarder ce que cà peut m'apporter)
Un conseil avec ajax (peut être ton problème viens de là, mais bon n'ayant toujours pas vraiment compris ton pb...) : Dans le chargement initial de ta page, il se peut que ta div ayant pour ID "balise_detail_inc" contienne du code que tu as besoin de garder (présence d'une autre div d'affichage d'erreur, appel de script, etc...) et lorsque tu appliques ta fonction JS

document.getElementById("balise_detail_ins").innerHTML=xhr.responseText;

, tout l'ancien contenu sera écrasé par le nouveau contenu de ta fonction Ajax. Il faut donc penser à le maintenir en le rajoutant dans ton retour xhr.responseText
rien de particluier dans cette balise , non ?
        <td align=center width='75'> N°Lic. </td>
    </tr>
</table>.... c'est mon en tete !
    <div id="balise_detail_ins"></div>


Concernant ton export, il me semble que sur les autres pages en php il doit y avoir une fonction rajoutée sur un onclick() pour l'export que tu as du oublié de rajouter dans ton traitement PHP de ta fonction ajax.
Ben non , au départ toutes les autres pages (elle n'utilisaent pas ajax , mais bien un rappel de la page entière ! donc pas de souci. Là c'est la premiere fois que j'utilse ajax pour mettre à jour les données d'une partie de la page : et là si je fais un "afficher la source" je ne vois que la balise div et pas mes lignes . .. ce qui me parait ensuite logique que si l'utilisateur fais clic droit sur le tableau des lignes il ne recoive rien dans XL
Rappel : le script
xhr.open("GET","insert_donnees.php?course="+str,true);
xhr.send();
... et dans ce php on génére autant de ligne que d'enregistremnt lus.
.

... le pb est bien de pouvoir faire un clic droit dans les lignes affichées à l'écran pour recupérer le contenu dans XL.

Hors ligne

#8 31-05-2010 08:24:56

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : besoin explication

Bonjour,

Oui c'est normal que le rajout Ajax dans ta page n'apparaisse pas dans la source du document. Si ton xhr.responseText commence par <table> et fini par </table> rien ne t'empêche de rajouter un bouton ou un event onmouseup sur ton tableau pour executer la fonction d'export associée aux données rajoutées dynamiquement.
De plus normalement un script d'insertion de données en db n'est pas censé retourner des enregistrements sur une page mais le résultat d'erreur sur l'insertion, donc les données à inserer doivent normalement être présentes dans la source du document, mais bon...

Dernière modification par Jc (31-05-2010 08:27:47)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#9 31-05-2010 18:18:02

yolet
Membre
Inscription : 27-04-2010
Messages : 34

Re : besoin explication

wink

Jc a écrit :

Bonjour,

Oui c'est normal que le rajout Ajax dans ta page n'apparaisse pas dans la source du document. Ok ca j'ai compris maintenant ..on avance wink

Si ton xhr.responseText commence par <table> et fini par </table> là = pas compris : document.getElementById("balise_detail_ins").innerHTML=xhr.responseText;
j'ai cru comprendre que cela ne faisait que retourner une reponse à adresse de la balise (pas de specifier un contenu) . ACtuellement c'est xhr.open("GET","insert_donnees.php?par="+str,true);  .. qui va ouvrir un bout de code php dans lequel je lis mes données pour les afficher(inserer) dans une table html

rien ne t'empêche de rajouter un bouton ou un event onmouseup sur ton tableau pour executer la fonction d'export pourquoi pas ! option2, rappel je debute et c'est encore qq chose de plus à decouvrir la fonction export
associée aux données rajoutées dynamiquement. non juste lues
De plus normalement un script d'insertion de données en db n'est pas censé retourner des enregistrements sur une page mais le résultat d'erreur sur l'insertion, donc les données à inserer doivent normalement être présentes dans la source du document, mais bon...

Hors ligne

#10 31-05-2010 19:54:04

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : besoin explication

Vas voir ce topic wink
il explique bien comment retourner des données dans une div wink
et c'est du tous cuit wink

a++

Hors ligne

#11 31-05-2010 20:53:05

yolet
Membre
Inscription : 27-04-2010
Messages : 34

Re : besoin explication

Pierrot a écrit :

Vas voir ce topic wink
il explique bien comment retourner des données dans une div wink
et c'est du tous cuit wink

a++

i'a pas de lien roll

Hors ligne

#12 31-05-2010 21:48:56

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : besoin explication

wink
a++

Hors ligne

#13 01-06-2010 14:09:33

yolet
Membre
Inscription : 27-04-2010
Messages : 34

Re : besoin explication

Pierrot a écrit :

Vas voir ce topic
il explique bien comment retourner des données dans une div
et c'est du tous cuit

a++

... ben oui c'est ce que j'arrive à faire , mais on a le meme resultat , si vuex utiliser le clic droit et exporter vers xl c'est "cuit" hmm
Pour le coup mon doute s'efface du plus en plus , avec ajax , ce que je pensais faire n'est pas realisable.

Va falloir que je me penche sur une fonction d'export .csv

Hors ligne

#14 01-06-2010 16:17:00

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : besoin explication

tu appel quoi exporter vers xl ?????
a++

Hors ligne

#15 01-06-2010 19:18:56

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : besoin explication

Re,

Je sens que je vais avoir du mal, mais on va essayer^^
La page PHP que tu appeles avec ton xhr.open (en fait tu l'appeles au moment du xhr.send mais on s'en fou ici ^^) va lire des données en DB, ensuite va les sortir via echo,eval ou print, et l'ensemble de ces données va être renvoyée de manière asynchrone à ton navigateur via xhr.responseText . Ce contenu contient donc tout ce que tu y a mis et ici ce sont des données au format html. Ces données retournées dans xhr.responseText sont assignées au contenu de ta div via l'affectation ..._.innerHTML=xhr.responseText  . Et comme son nom l'indique innerHTML veut dire contenu html égal à ...

J'espère que c'est plus clair maintenant

Dernière modification par Jc (01-06-2010 19:19:49)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#16 02-06-2010 09:54:53

yolet
Membre
Inscription : 27-04-2010
Messages : 34

Re : besoin explication

@jc : ca commence à être clair maintenant (à force de ne pas trouver!)
Pour qq1 qui n'a jamais utilisé Java &co , ce qui peut s'imaginer comme "logique" ne l'est pas toujours. Quand on le sait , apres on se demande pourquoi on a cherché.
Maintenant je sais que ce que je pensais etre realisable ne l'est pas. Je suis obligé de creer qq chose de plus pour proposer de recuperer les memes données que celles affichées pour l'integer dans un fichier .csv
Remarque comme tout cela est simple :
1 er cas j'affiche une page nickel et je peux envoyer vers xl, mais assez statique
2 eme cas je veux juste pouvoir n'afficher que certains enreg dans cette page en focntion d1 select et ne pas tout recharger ... eh bien ca s'affiche super mais tu peux plus exporter. Obligé de refaire autre chose.

@pierrot : euh export Xl  (Excel); beh tout simplement que n'importe qui puisse récupérer des données d1 table html  , vers XL ... ou plutot maintenant que je sais que rien n'est faisable dans ce sens avec ajax, depuis données mysql vers fichier .csv

Si qq1 a une autre methode que celles que j'ai deja utilisées, et qui permette d'afficher le resultat d1 requete et de l'exporter dans la foulée jesuis preneur wink

Hors ligne

#17 02-06-2010 23:36:16

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : besoin explication

Bonsoir,

Pourquoi tu dis que ce n'est pas faisable. Ca l'est tout à fait avec ajax. Suffit d'ajouter ta fontion export sur l'event souris de ton choix dans ton tableau dans ton fichier php et la fonction sera dispo après mise à jour des données dans ta page qui receptionne la requete ajax (le retour fonction).


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#18 03-06-2010 20:41:25

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : besoin explication

Juste un petit rajout..

Il arrive un moment ou la difficulté n'est pas contournable et si on veut coder ce que l'on souhaite, il faut vraiment apprendre à le faire.
Il y a peut être un moyen cependant pour contourner un peu la difficulté ici c'est de recupérer dans la base de registre windows la commande de ta fonction d'export que t'offre windows dans ton navigateur lorsque le contenu est chargé de facon à l'inclure dans ton code, ce qui devrait te simplifier un peu la tâche.

Dernière modification par Jc (03-06-2010 20:42:02)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#19 03-06-2010 21:08:49

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : besoin explication

je ne pense pas que la base registre soit accessible au navigateur wink

a++

Hors ligne

#20 03-06-2010 22:41:27

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : besoin explication

Bonsoir,

On est d'accord, il s'agissait juste d'y aller voir manuellement de recup l'info et de l'utiliser dans son code^^.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums