Requete PHP à exécuter dans du javascript
Fermé
vct
-
27 juil. 2008 à 11:11
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 6 sept. 2008 à 16:24
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 6 sept. 2008 à 16:24
A voir également:
- Requete PHP à exécuter dans du javascript
- Telecharger javascript - Télécharger - Langages
- Easy php - Télécharger - Divers Web & Internet
- Il y a eu un problème avec cette requête. nous travaillons à sa résolution aussi vite que nous le pouvons. - Forum Facebook
- Requête sql pix - Forum Python
- Expert php pinterest - Télécharger - Langages
29 réponses
Non tu n'as pas compris mon cas.
J'ai une page d'enregistrement
Et j'ai une page de restitution des données.
Et dans le cas où je mettrais en ligne ce micro site et que j'ai la page de restitution ouverte et que en parallèle un individu s'ajoute j'aimerais que ma page s'actualise.
Comme le principe de listener dans flash.
Et c'est un peu le même cas de figure que lorsque tu écoutes la radio en ligne et que le titre et l'artiste change lorsque la musique change.
Vincent.
J'ai une page d'enregistrement
Et j'ai une page de restitution des données.
Et dans le cas où je mettrais en ligne ce micro site et que j'ai la page de restitution ouverte et que en parallèle un individu s'ajoute j'aimerais que ma page s'actualise.
Comme le principe de listener dans flash.
Et c'est un peu le même cas de figure que lorsque tu écoutes la radio en ligne et que le titre et l'artiste change lorsque la musique change.
Vincent.
Alors je peux peut-être faire des refresh en ajax tous les 2minutes par exemple et vérifier uniquement le reste des données de la base s'il y a lieu.
Par exemple si on a :
ID: 01 nom: Franck DUTRONC Lieu: Paris ....
ID: 02 nom: Vincent DILIEU Lieu: Lille....
ID: 03 nom: Isabelle SEILOR Lieu: Caen....
on retient les id restitués dans un tableau et on vérifie avec une requete s'il y a de nouvelles données.
En résumé à la demande d'un client ce n'est pas possible mais un rafraichissement selon une durée et tester les nouvelles données c'est possible ?
Vincent.
Par exemple si on a :
ID: 01 nom: Franck DUTRONC Lieu: Paris ....
ID: 02 nom: Vincent DILIEU Lieu: Lille....
ID: 03 nom: Isabelle SEILOR Lieu: Caen....
on retient les id restitués dans un tableau et on vérifie avec une requete s'il y a de nouvelles données.
En résumé à la demande d'un client ce n'est pas possible mais un rafraichissement selon une durée et tester les nouvelles données c'est possible ?
Vincent.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
20 août 2008 à 22:14
20 août 2008 à 22:14
Oui avec un refresh ça peut marcher
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
21 août 2008 à 12:08
21 août 2008 à 12:08
Mais le refresh va te recharger la page , ça peut être génant
mets une fonction SetTimeout(....) juste après ta fonction Ajax dans la partie <script javascript >
qui va te lancer une fonction Ajax à intervales réguliers pour aller lire la BDD
Sinon une autre solution:
quand qq'un entre un nouvel enregistrement le script t'envoie un mail par la fonction mail() de php
@lain
mets une fonction SetTimeout(....) juste après ta fonction Ajax dans la partie <script javascript >
qui va te lancer une fonction Ajax à intervales réguliers pour aller lire la BDD
Sinon une autre solution:
quand qq'un entre un nouvel enregistrement le script t'envoie un mail par la fonction mail() de php
@lain
Je verrais ça car je suis encore au stade de réflexion..
En revanche je ne vois pas l'intérêt d'envoyer un mail car mon but est que les données s'actualisent si quelqu'un visite mon carnet d'adresse. Et non pas consulter à la demande.
Prenons sinon pour exemple si une donnée change cette donnée dois se changer en directe sur la page de consultation comme une web radio. enfin je me répète.
On verra je réfléchis aux solutions envisageables pendant les 5mn que je bosse dessus par jour hihi.
Vct
En revanche je ne vois pas l'intérêt d'envoyer un mail car mon but est que les données s'actualisent si quelqu'un visite mon carnet d'adresse. Et non pas consulter à la demande.
Prenons sinon pour exemple si une donnée change cette donnée dois se changer en directe sur la page de consultation comme une web radio. enfin je me répète.
On verra je réfléchis aux solutions envisageables pendant les 5mn que je bosse dessus par jour hihi.
Vct
Bonsoir,
Je suis au stade de conception cette fois ci et j'ai décidé de commencer par le former sur un bouton qui me permet de rafraichir.
J'ai mon code php qui cherche les informations dans la base de donnée et au bas de mon tableau j'ai créé un bouton qui appel une fonction javascript (ajax) et de la même manière que pour enregistrer un nouvel individu dans la base, j'appel un fichier php qui va comparer le nombre de résultat que j'ai avec le nombre de résultat qu'il y a au moment du rafraichissement. La variable du nombre est bien passé d'une page à l'autre.
Sur cette autre page je refais la même démarche d'afficher dans un tableau la base de donnée. Mais je ne sais pas comment faire un retour visuel sur l'autre page. voici les fichiers :
visualiser-carnet-adresse.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Visualiser le carnet d'adresse</title>
<link rel="stylesheet" type="text/css" href="carnet-dadresse.css" />
<script language="javascript" type="text/javascript">
function refresh(nbrResultat){
var xhr;
try {
xhr = new ActiveXObject('Msxml2.XMLHTTP');
}
catch (e){
try { xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
catch (e2){
try {
xhr = new XMLHttpRequest();
}
catch (e3) {
xhr = false;
}
}
}
xhr.onreadystatechange=function(){
if(xhr.readyState==4){
if(xhr.status==200){
var reponse=xhr.responseText;
alert("Reponse du script enregistrement.php: "+reponse);
document.getElementById('tableau').innerHTML="cool";
}else{
document.getElementById('tableau').innerHTML="Error code " + xhr.status;
}
}
}
xhr.open("POST", "recup-data-base.php", true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
var data = nbrResultat
alert ("valeurs envoyees: "+ data);
xhr.send(data);
}
</script>
</head>
<body>
<h1>Visualiser le carnet d'adresse</h1>
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("carnet_adresse");
$requete=mysql_query("SELECT * FROM carnet");
$nbrResultat=mysql_num_rows($requete);
if ($nbrResultat>0){
echo "<table id='tableau' class='cadre-visualiser'>";
while($donnees=mysql_fetch_array($requete)){
?>
<tr>
<td><?php echo $donnees['prenom']; ?></td>
<td><?php echo $donnees['nom']; ?></td>
<td><?php echo $donnees['lieu']; ?></td>
<td><?php echo $donnees['tel_fixe']; ?></td>
<td><?php echo $donnees['tel_portable']; ?></td>
<td><?php echo $donnees['adresse']; ?></td>
<td><?php echo $donnees['email']; ?></td>
<td><?php echo $donnees['date']; ?></td>
</tr>
<?php
}
echo "<tr><td colspan='8' align='right'><input type='button' value='rafraichir' onClick='refresh($nbrResultat);' /></td></tr>";
echo "</table>";
}
?>
</body>
</html>
recup-data-base.php
<?php
if (isset($_POST['nbrResultat']) && $_POST['nbrResultat']!=NULL){
mysql_connect("localhost", "root", "");
mysql_select_db("carnet_adresse");
$requete=mysql_query("SELECT * FROM carnet");
$combienResultat=mysql_num_rows($requete);
if($combienResultat>$nbrResultat){
//requete d'affichage des résultats
echo "<table class='cadre-visualiser'>";
while($donnees=mysql_fetch_array($requete)){
?>
<tr>
<td><?php echo $donnees['prenom']; ?></td>
<td><?php echo $donnees['nom']; ?></td>
<td><?php echo $donnees['lieu']; ?></td>
<td><?php echo $donnees['tel_fixe']; ?></td>
<td><?php echo $donnees['tel_portable']; ?></td>
<td><?php echo $donnees['adresse']; ?></td>
<td><?php echo $donnees['email']; ?></td>
<td><?php echo $donnees['date']; ?></td>
</tr>
<?php
}
echo "<tr><td colspan='8' align='right'><input type='button' value='rafraichir' onClick='refresh($nbrResultat);' /></td></tr>";
echo "</table>";
}else{
//rien sinon une info "pas de nouvelles données"
}
}
?>
Vincent.
Je suis au stade de conception cette fois ci et j'ai décidé de commencer par le former sur un bouton qui me permet de rafraichir.
J'ai mon code php qui cherche les informations dans la base de donnée et au bas de mon tableau j'ai créé un bouton qui appel une fonction javascript (ajax) et de la même manière que pour enregistrer un nouvel individu dans la base, j'appel un fichier php qui va comparer le nombre de résultat que j'ai avec le nombre de résultat qu'il y a au moment du rafraichissement. La variable du nombre est bien passé d'une page à l'autre.
Sur cette autre page je refais la même démarche d'afficher dans un tableau la base de donnée. Mais je ne sais pas comment faire un retour visuel sur l'autre page. voici les fichiers :
visualiser-carnet-adresse.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Visualiser le carnet d'adresse</title>
<link rel="stylesheet" type="text/css" href="carnet-dadresse.css" />
<script language="javascript" type="text/javascript">
function refresh(nbrResultat){
var xhr;
try {
xhr = new ActiveXObject('Msxml2.XMLHTTP');
}
catch (e){
try { xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
catch (e2){
try {
xhr = new XMLHttpRequest();
}
catch (e3) {
xhr = false;
}
}
}
xhr.onreadystatechange=function(){
if(xhr.readyState==4){
if(xhr.status==200){
var reponse=xhr.responseText;
alert("Reponse du script enregistrement.php: "+reponse);
document.getElementById('tableau').innerHTML="cool";
}else{
document.getElementById('tableau').innerHTML="Error code " + xhr.status;
}
}
}
xhr.open("POST", "recup-data-base.php", true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
var data = nbrResultat
alert ("valeurs envoyees: "+ data);
xhr.send(data);
}
</script>
</head>
<body>
<h1>Visualiser le carnet d'adresse</h1>
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("carnet_adresse");
$requete=mysql_query("SELECT * FROM carnet");
$nbrResultat=mysql_num_rows($requete);
if ($nbrResultat>0){
echo "<table id='tableau' class='cadre-visualiser'>";
while($donnees=mysql_fetch_array($requete)){
?>
<tr>
<td><?php echo $donnees['prenom']; ?></td>
<td><?php echo $donnees['nom']; ?></td>
<td><?php echo $donnees['lieu']; ?></td>
<td><?php echo $donnees['tel_fixe']; ?></td>
<td><?php echo $donnees['tel_portable']; ?></td>
<td><?php echo $donnees['adresse']; ?></td>
<td><?php echo $donnees['email']; ?></td>
<td><?php echo $donnees['date']; ?></td>
</tr>
<?php
}
echo "<tr><td colspan='8' align='right'><input type='button' value='rafraichir' onClick='refresh($nbrResultat);' /></td></tr>";
echo "</table>";
}
?>
</body>
</html>
recup-data-base.php
<?php
if (isset($_POST['nbrResultat']) && $_POST['nbrResultat']!=NULL){
mysql_connect("localhost", "root", "");
mysql_select_db("carnet_adresse");
$requete=mysql_query("SELECT * FROM carnet");
$combienResultat=mysql_num_rows($requete);
if($combienResultat>$nbrResultat){
//requete d'affichage des résultats
echo "<table class='cadre-visualiser'>";
while($donnees=mysql_fetch_array($requete)){
?>
<tr>
<td><?php echo $donnees['prenom']; ?></td>
<td><?php echo $donnees['nom']; ?></td>
<td><?php echo $donnees['lieu']; ?></td>
<td><?php echo $donnees['tel_fixe']; ?></td>
<td><?php echo $donnees['tel_portable']; ?></td>
<td><?php echo $donnees['adresse']; ?></td>
<td><?php echo $donnees['email']; ?></td>
<td><?php echo $donnees['date']; ?></td>
</tr>
<?php
}
echo "<tr><td colspan='8' align='right'><input type='button' value='rafraichir' onClick='refresh($nbrResultat);' /></td></tr>";
echo "</table>";
}else{
//rien sinon une info "pas de nouvelles données"
}
}
?>
Vincent.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alain tu m'as abandonné?
Je conçois que tu m'ai bien aidé mais ne me laisse pas tomber à ce stade là :)
Bye,
Vincent.
Je conçois que tu m'ai bien aidé mais ne me laisse pas tomber à ce stade là :)
Bye,
Vincent.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
2 sept. 2008 à 22:35
2 sept. 2008 à 22:35
Salut,
Je ne t'ai pas abandonné mais un peu absent.
tu as 2 erreurs dans ta fonction:
il faut :
il faut que la variable ait un nom pour pouvoir la récupérer en POST dans ton script appelé
et là pour ecrire la réponse il faut:
ça va ecrire et écraser ce qu'il y a dans ta <table id="tableau" enfin je suppose car moi je met toujurs un <div id="
@lain
Je ne t'ai pas abandonné mais un peu absent.
tu as 2 erreurs dans ta fonction:
il faut :
var data = "nbrResultat="+nbrResultat;
il faut que la variable ait un nom pour pouvoir la récupérer en POST dans ton script appelé
et là pour ecrire la réponse il faut:
var reponse=xhr.responseText; alert("Reponse du script enregistrement.php: "+reponse); document.getElementById('tableau').innerHTML=reponse;
ça va ecrire et écraser ce qu'il y a dans ta <table id="tableau" enfin je suppose car moi je met toujurs un <div id="
@lain
Alain !!! Tu es carrément génial.
Merci pour ton aide, j'ai réussi grâce à toi à faire fonctionner mon ajax pour afficher les données de mon carnet d'adresse si j'ai de nouveau enregistrement qui se sont fait.
Maintenant je vais passer à un refresh automatique pour voir si ça marche mais je te tiens au courant!
A bientôt et bon week end.
Vincent;
Merci pour ton aide, j'ai réussi grâce à toi à faire fonctionner mon ajax pour afficher les données de mon carnet d'adresse si j'ai de nouveau enregistrement qui se sont fait.
Maintenant je vais passer à un refresh automatique pour voir si ça marche mais je te tiens au courant!
A bientôt et bon week end.
Vincent;
Me revoilà j'ai essayé de faire un refresh en html et devine quoi ça fonctionne !
voici le code de mon refresh
<meta http-equiv="refresh" content="30;url=javascript:refresh(<?php echo $nbrResultat; ?>);" />
Maintenant je dois passer à l'étape suivante, c'est mettre à jour la page de résultat lorsqu'il y a une nouvelle entrée dans la base de donnée mais c'est pas évident et je ne sais pas si c'est réalisable sans "écouteur" (comme des listener en flash), l'"écouteur" étant mon refresh en ce moment...
Si quelqu'un a une piste je suis preneur.
Ca doit être possible puisque les tchats mettent à jour leur affichage immédiatement.
Vincent.
voici le code de mon refresh
<meta http-equiv="refresh" content="30;url=javascript:refresh(<?php echo $nbrResultat; ?>);" />
Maintenant je dois passer à l'étape suivante, c'est mettre à jour la page de résultat lorsqu'il y a une nouvelle entrée dans la base de donnée mais c'est pas évident et je ne sais pas si c'est réalisable sans "écouteur" (comme des listener en flash), l'"écouteur" étant mon refresh en ce moment...
Si quelqu'un a une piste je suis preneur.
Ca doit être possible puisque les tchats mettent à jour leur affichage immédiatement.
Vincent.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
6 sept. 2008 à 08:54
6 sept. 2008 à 08:54
Salut,
tu aurait pu faire aussi avec la fonction SetTimout() de javascript
Qui lancerait la fonction Ajax à intervalles réguliers.
Pour ce qui est de la nouvelle entrée, tu as l'évenemnt puisque le script php va faire le INSERT
Envoyer un mail ce serait facile.
Mais je ne vois pas comment faire l'info vers ton navigateur, car le serveur ne répond que à des demandes du navigateur, mais ne peut pas à mon avis envoyer des infos à un navigateur client autre (heureusement car il y aurait de gros pb de sécurité)
Ou alors il faudrait savoir comment font ceux qui t'envoient de la pub pyrate qd tu visite un site ?
tu aurait pu faire aussi avec la fonction SetTimout() de javascript
Qui lancerait la fonction Ajax à intervalles réguliers.
Pour ce qui est de la nouvelle entrée, tu as l'évenemnt puisque le script php va faire le INSERT
Envoyer un mail ce serait facile.
Mais je ne vois pas comment faire l'info vers ton navigateur, car le serveur ne répond que à des demandes du navigateur, mais ne peut pas à mon avis envoyer des infos à un navigateur client autre (heureusement car il y aurait de gros pb de sécurité)
Ou alors il faudrait savoir comment font ceux qui t'envoient de la pub pyrate qd tu visite un site ?
Hello,
Effectivement, mon but n'est pas de rafraichir mon navigateur or c'est ce que mail m'oblige à faire.
Tu comprends mon contexte ? Si plein de personne visite mon carnet d'adresse il faudrait que la page soit rafraichie chez chacun des visiteurs. Mais bon, peux être que le système de tchat utilise aussi les temps. Mais c'est bizarre car il arrive, par exemple msn, à détecter quand une personne est en train de rédiger, et de me donner l'info comme quoi l'interlocuteur est en train de rédiger.
Cruel dilemme...
Vct;
Effectivement, mon but n'est pas de rafraichir mon navigateur or c'est ce que mail m'oblige à faire.
Tu comprends mon contexte ? Si plein de personne visite mon carnet d'adresse il faudrait que la page soit rafraichie chez chacun des visiteurs. Mais bon, peux être que le système de tchat utilise aussi les temps. Mais c'est bizarre car il arrive, par exemple msn, à détecter quand une personne est en train de rédiger, et de me donner l'info comme quoi l'interlocuteur est en train de rédiger.
Cruel dilemme...
Vct;
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
6 sept. 2008 à 16:04
6 sept. 2008 à 16:04
Oui mais msn il doit y avoir un systeme de connexion, avec un serveur au milieu qui ne doit pas être sur le même principe qu'un serveur web
Si j'ai bien compris ce que tu veux c'est savoir qd qq un visite ton carnet d'adresse. Mais si c'est à 1 heure du mat, il faudra que tu soit toujours present devant ton micro.
Pourquoi ne pas enregistrer dans une table de la BDD qd il y a une requette de SELECT sur ta base ?
table que tu viendra consulter qd tu veux.
Si j'ai bien compris ce que tu veux c'est savoir qd qq un visite ton carnet d'adresse. Mais si c'est à 1 heure du mat, il faudra que tu soit toujours present devant ton micro.
Pourquoi ne pas enregistrer dans une table de la BDD qd il y a une requette de SELECT sur ta base ?
table que tu viendra consulter qd tu veux.
Non je dois pas être clair.
Si quelqu'un consulte le carnet d'adresse et qu'une autre personne ajoute une personne en même temps je voulais que pour la personne qui consulte, la page se mette à jour.
Tu vois?
Si quelqu'un consulte le carnet d'adresse et qu'une autre personne ajoute une personne en même temps je voulais que pour la personne qui consulte, la page se mette à jour.
Tu vois?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
6 sept. 2008 à 16:24
6 sept. 2008 à 16:24
Si qq un ajoute une adresse => la base va se mettre à jour automatiquement, donc si une autre personne consulte elle aura forcement la page à jour.
20 août 2008 à 20:38
Le principe du web, tu reçoit une réponse à ta demande