Flux rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

[Ajax+PHP] Refresh et MySQL

xxkirastarothxx, le vendredi 11 juillet 2008 à 12:04:09
Bonjour à tous,

J'ai récupéré et modifié un script de mini chat, mais depuis que je veux afficher des réponses SQL, à la place de ce qu'il y a dans un fichier txt, plus rien ne marche.
je suis spécialement mauvais en Ajax, donc si quelqu'un pouvais m'aider un peu ça serrai super :)

<?php
function afficher()
{
    mysql_connect("localhost", "root", "");
	mysql_select_db("chat");
	$reponse = mysql_query("SELECT * FROM minichat");
	while ($donnees = mysql_fetch_array($reponse))
	{
		echo $donnees['name'];
	}
    mysql_close();
}

require_once('./xajax_core/xajax.inc.php');
$xajax = new xajax();
$xajax->register(XAJAX_FUNCTION, 'afficher');
$xajax->processRequest();
?>
<html>
        <head>
                <title>Chat xAjax</title>
                <?php $xajax->printJavascript();?>
                <script type="text/javascript">
                    function refresh()
                    {
                        xajax_afficher();
                        setTimeout(refresh, 5000);
                    }
                </script>
        </head>
        <body>
                <div id="block"></div>
		<?php include "form.php"; ?>
                <script type="text/javascript">
                        refresh();
                </script>
        </body>
</html>


il n'y a presque que la fonction afficher() qui change, l'originale était:
function afficher()
{
        $reponse = new xajaxResponse();
        $chat = '';//Initialisation de la variable $chat
        $fichier_texte = fopen('./chat.txt', 'r');
        $chat = fread($fichier_texte, filesize('./chat.txt'));
        fclose($fichier_texte);
        $reponse->assign('block', 'innerHTML', $chat);
        return $reponse;
}

je suppose donc que ma fonction est complètement fausse, mais comme je l'ai dis j'y connais rien en ajax :P
Merci Beaucoup :)
Configuration: Windows XP
Firefox 2.0.0.15
Répondre à xxkirastarothxx  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Alkaaran, le vendredi 11 juillet 2008 à 12:35:29
Il nous faudrai ton fichier './xajax_core/xajax.inc.php', c'est lui le principal concerné :)
Répondre à Alkaaran

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
xxkirastarothxx, le vendredi 11 juillet 2008 à 12:45:24
Merci pour la réponse :)
Heuu c'est plutôt énorme comme fichier, j'ai + de 1300 lignes
c'est un script xajax, que j'ai télécharger sur: http://xajaxproject.org/download.php
(version 0.5 beta 4b Full)
Si ça aide pas, je veux bien le poster quand même ^^
Répondre à xxkirastarothxx

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Alkaaran, le vendredi 11 juillet 2008 à 13:28:04
Ahem, pour tout te dire après l'aperçu des fichiers qui composent le zip... je pense qu'il y a une sacrée enjambée entre un script de chat PHP par fichier texte et un script utilisant une librairie xAjax :)

Même si le site dit "The easiest way to develop apps with Ajax", c'est pas forcément vrai ^^

Si tu est un minimum autodidacte, renseigne toi sur les XMLHttpRequest (javascript), sinon je te propose de t'aider à faire le javascript, et tu t'occupera du php :p

Voici quelques liens :)
http://www.siteduzero.com/tuto-3-3804-1-les-objets-xmlhttprequest.html
http://www.toutjavascript.com/savoir/xmlhttprequest.php3
http://www.xul.fr/xml-ajax.html

Si tu veux un script js tout fait qui t'exécute ton fichier php par Ajax, j'en ai sous la main =)
Répondre à Alkaaran

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
xxkirastarothxx, le vendredi 11 juillet 2008 à 13:41:36
Enfait, je cherche juste le moyen d'actualiser automatiquement l'affichage des messages, se trouvant dans ma base de donnée.
Le reste (channel privé, session utilisateur, utilisateur en ligne etc etc, c'est pas un soucis.

Je vais allé voir les liens que tu m'as passé
100% autodidacte sur la conception web, mais depuis apeine 6 mois (HTML/CSS Ok - Php+Mysql Ok sans problème, sauf la poo pour laquel je n'ai encore aucune notion) :p
et je suis en train de développé ça pour le CMS que je développe en parallèle (Mdr).

Pour ton fichier, tu pourrais m'expliquer vite fais le fonctionement, je comprends pas trop :)
Répondre à xxkirastarothxx

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Alkaaran, le vendredi 11 juillet 2008 à 13:51:15
De quel fichier tu parle ? le script js ?
Répondre à Alkaaran

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
xxkirastarothxx, le vendredi 11 juillet 2008 à 13:57:39
oui ^^
Répondre à xxkirastarothxx

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Alkaaran, le vendredi 11 juillet 2008 à 14:04:35
// retourne un objet xmlHttpRequest.
// méthode compatible entre tous les navigateurs (IE/Firefox/Opera)
function getXMLHTTP(){
  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) {
      try {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e1) {
        xhr = null;
      }
    }
  }
  else { // XMLHttpRequest non supporté par le navigateur
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
  }
  return xhr;
}

var _xmlHttp = null; //l'objet xmlHttpRequest utilisé pour contacter le serveur
var _adresseRecherche = "Tonfichier.php" //l'adresse à interroger 

function getData(){
  if(_xmlHttp&&_xmlHttp.readyState!=0){
    _xmlHttp.abort()
  }
  _xmlHttp=getXMLHTTP();
  if(_xmlHttp){
    //appel à l'url distante
    _xmlHttp.open("GET",_adresseRecherche,true);
    _xmlHttp.onreadystatechange=function() {
      if(_xmlHttp.readyState==4&&_xmlHttp.responseText) {
	alert(_xmlHttp.responseText) ; //Le contenu est renvoyé dans la propriété _xmlHttp.responseText :)
      }
    };
    // envoi de la requête
    _xmlHttp.send(null)
  }
}


La fonction javascript getData te renverra le resultat du fichier Tonfichier.php :)
Répondre à Alkaaran

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
xxkirastarothxx, le vendredi 11 juillet 2008 à 14:36:42
hmmm effectivement ça a l'air interessant.
Je vais me pencher la dessus cette après midi, je repasserais dans la soirée.
Merci :)
Répondre à xxkirastarothxx

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
xxkirastarothxx, le vendredi 11 juillet 2008 à 15:54:54
Bon, alors :)
ça a l'air de marcher, mais pour le moment ça m'affiche le résultats dans une alerte et je n'ai pas trouvé le moyen de l'afficher "simplement" dans une div par exemple.
je continue de chercher de mon coté, mais un petit indice ne serrait pas de refus :)

j'ai essayé:
assign('block', 'innerHTML', _xmlHttp.responseText);
mais ça à pas l'air de marcher.
Répondre à xxkirastarothxx

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Alkaaran, le vendredi 11 juillet 2008 à 15:59:10
Rooh... je t'ai fait ça exprès pour que ça te fasse voir ^^

Donc dans ton code javascript :
remplace alert( _xmlHttp.responseText ) ;

par document.getElementById( 'id_de_ton_div' ) = _xmlHttp.responseText ;

:)
Répondre à Alkaaran

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
xxkirastarothxx, le vendredi 11 juillet 2008 à 16:50:09
Je fais des efforts mais franchement je comprends rien dans cette langue "lol" :P
Il faudrait que je suive bien les tutos (voir déjà que j'entame les bases du js), mais j'aimerais finir de dev ce truc avant, surtout que pour le moment c'est le seul endroits ou j'aurais besoin d'utiliser de l'ajax dans mon CMS.

pour le moment, j'ai pris ton script, j'ai tout mis entre balise <script type="text/javascript"></script>; j'ai changer "Tonficher.php" par "message.php" (qui, pour le test, ne contient qu'un simpe 'echo "ok";' ; et j'ai rajouter le getData(); en toute fin de script.
=> Jusque la ça marche, j'ai mon alerte qui me dis "ok"

je change "alert( _xmlHttp.responseText ) ;" par "document.getElementById( 'block' ) = _xmlHttp.responseText ;" et je rajoute "<html><body><div id='block'> </div></body></html>"
=> Et bah là y'a p'u rien :S

voici mon fichier "test.php":

<script type="text/javascript">
// retourne un objet xmlHttpRequest.
// méthode compatible entre tous les navigateurs (IE/Firefox/Opera)
function getXMLHTTP()
{
	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) 
		{
			try 
			{
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e1)
			{
				xhr = null;
			}
	    }
	}
	else // XMLHttpRequest non supporté par le navigateur
	{ 
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
	}
	return xhr;
}

var _xmlHttp = null; //l'objet xmlHttpRequest utilisé pour contacter le serveur
var _adresseRecherche = "chat.php" //l'adresse à interroger 

function getData()
{
	if(_xmlHttp&&_xmlHttp.readyState!=0)
	{
		_xmlHttp.abort()
	}
	_xmlHttp=getXMLHTTP();
	if(_xmlHttp)
		{
		    //appel à l'url distante
		    _xmlHttp.open("GET",_adresseRecherche,true);
		    _xmlHttp.onreadystatechange=function()
			{
			    if(_xmlHttp.readyState==4&&_xmlHttp.responseText)
				{
					document.getElementById( 'block' ) = _xmlHttp.responseText ;
			    }
		    };
		    // envoi de la requête
		    _xmlHttp.send(null)
		}
}
getData();
</script>
<html><body><div id='block'> </div></body></html>


Encore un peu d'aide ? O:-)
Merci encore pour tout, dans tout les cas j'ai énormément avancé grâce à toi.
Répondre à xxkirastarothxx

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Alkaaran, le vendredi 11 juillet 2008 à 17:00:58
Aucun problème ! Voici la clé de ton bonheur :

remplace getData(); à la fin de ton script par :

window.onload = getData() ;

Explication :
lorsque getData() ; est seule en fin de script elle se déclenche... récupère les données du php... et essaie de mettre dans une boite du doux nom de block :p

Le problème c'est qu'elle est po la maligne ! Bah oui, ton navigateur n'a meme pas encore atteint la balise html !

Donc pour remédier à ce problème, on lui d'attendre que le chargement soit fini grâce à l'evénement window.onLoad

CQFD :)
Répondre à Alkaaran

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
xxkirastarothxx, le mardi 15 juillet 2008 à 09:40:12
Merci pour tes réponses :)
j'ai changé "getData();" par "window.onload = getData();"
mais aucun changement, rien ne s'affiche :s

je reposte mon fichier au cas où:

affichage.php
<script type="text/javascript">
// retourne un objet xmlHttpRequest.
// méthode compatible entre tous les navigateurs (IE/Firefox/Opera)
function getXMLHTTP()
{
	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) 
		{
			try 
			{
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e1)
			{
				xhr = null;
			}
	    }
	}
	else // XMLHttpRequest non supporté par le navigateur
	{ 
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
	}
	return xhr;
}

var _xmlHttp = null; //l'objet xmlHttpRequest utilisé pour contacter le serveur
var _adresseRecherche = "chat.php" //l'adresse à interroger 

function getData()
{
	if(_xmlHttp&&_xmlHttp.readyState!=0)
	{
		_xmlHttp.abort()
	}
	_xmlHttp=getXMLHTTP();
	if(_xmlHttp)
		{
		    //appel à l'url distante
		    _xmlHttp.open("GET",_adresseRecherche,true);
		    _xmlHttp.onreadystatechange=function()
			{
			    if(_xmlHttp.readyState==4&&_xmlHttp.responseText)
				{
					document.getElementById( 'block' ) = _xmlHttp.responseText ;
			    }
		    };
		    // envoi de la requête
		    _xmlHttp.send(null)
		}
}
window.onload = getData();
</script>
<html>
	<body>
		<div id='block'> </div>
	</body>
</html>


chat.php:
<?php echo 'test1'; ?>
<p>test2</p>
Répondre à xxkirastarothxx

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Alkaaran, le mardi 15 juillet 2008 à 11:59:37
Peut-être ta structure html alors... :-)

Il faudrait que tu respecte le standard :
<html>
	<head>
		<title>(Ton titre de page)</title>
		<script type="text/javascript">(Ton script)</script>
	</head>
	
	<body>
		(Ton texte)
	</body>
</html>
Répondre à Alkaaran

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
xxkirastarothxx, le mardi 15 juillet 2008 à 13:17:01
c'est fait, j'ai remonté la balise <html>, j'ai mis le script entre les balises <head> et mon div id="block" dans le <body>, et j'ai également rajouter le <title> au cas ou;
mais nan ça veut rien savoir :S
toujours pas le moindre caractère d'affiché :(

le window.onload, il faut pas le placer dans les balise du div ? genre <div onload:"GetData();" id="block", j'en ai aucune idée mais je me rappelle avoir déjà vu ce genre de syntaxe.
Répondre à xxkirastarothxx

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Alkaaran, le mardi 15 juillet 2008 à 13:50:58
est ce que ton site est en ligne actuellement ? Ca me permettrait de voir les eventuelles erreurs javascript...
Répondre à Alkaaran

17


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Alkaaran, le mardi 15 juillet 2008 à 13:53:15
Tiens a tout hasard... met .innerHTML juste après document.getElementById( 'block' )
Répondre à Alkaaran

18


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
xxkirastarothxx, le mardi 15 juillet 2008 à 13:59:02
Yeah !!
à première vu ça marche.

Je vais continuer le développement du chat, et lorsqu'il serra fini:
1] je te tiendrais au courant du lien
2] Je te propose de laisser ta marque de développement dans le log si tu veux, tu m'as énormément aidé, donc c'est la moindre des choses :)

Je préfère pas donner le lien du site pour le moment, j'ai énormément de failles de secus, enfin je pense puisque je ne m'en suis absolument pas occupé ^^

Encore merci :)
Répondre à xxkirastarothxx

19


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Alkaaran, le mardi 15 juillet 2008 à 14:03:02
Okay ravi de l'entendre, pour le log bah pourquoi pas, mais c'est du code open sauce que je t'ai donné...
Par contre je serai curieux de ton site :-) A la prochaine !

(n'oublie la petite option "résolu" ;-) )
Répondre à Alkaaran

20


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 vct, le dimanche 7 septembre 2008 à 11:19:02
Hello, permettez moi de m'incruster.
J'ai cru comprendre que ton script est censé appeler la page chat.php lorsqu'il y a de nouvelles entrées dans la base, me tromperais-je ?

Je l'ais essayé mais il n'actualise pas mes pages tout seul...

Parce que je recherche à faire en AJAX une actualisation de page lorsqu'il y a une nouvelle entrée dans la base de donnée. Un peu comme le principe des webradios qui actualises les artistes et titres lorsque la musique change.

Merci pour votre aide!
Répondre à vct

Résultats pour [Ajax+PHP] Refresh et MySQL

Formulaire : possible sans php ni mysql ? (Résolu) Bonjour Je souhaiterai créer un formulaire pour mon site internet. Sans entrer dans les détails maintenant, je voudrais juste savoir si déjà c'est possible sachant que mon hébergeur n'accepte ni php ni mysql etc... en gros rien de... www.commentcamarche.net/forum/affich-2067904-formulaire-possible-sans-php-ni-mysql
Besoin d'aide PHP et MySQL (Résolu) Besoin d'aide PHP et MySQL Bonjour tout le monde, Je suis un "petit" nouveau sur le forum ... et j'ai déjà besoin d'un petit coup de main Avant le petit soucis, une courte présentation, je m'appelle Jean, j'ai 23 ans et je... www.commentcamarche.net/forum/affich-3406987-besoin-d-aide-php-et-mysql
Apache2, PHP5 et MySQL4 et mises à jour (Résolu) Bonjour, Voilà, j'aimerai savoir comment on procède pour les mises à jour lorsque l'on a Apache, PHP, et MySQL installés indépendamment (donc pas d'EasyPHP, ni de WAMP... etc)? Faut-il tout réinstaller à chaque fois? Quand même pas! je... www.commentcamarche.net/forum/affich-4187476-apache2-php5-et-mysql4-et-mises-a-jour

Résultats pour [Ajax+PHP] Refresh et MySQL

Unable to load dynamic library '/usr/lib/php4/20020429/mysql.soVous obtenez un message du type suivant suite à une mise à jour de PHP : Unable to load dynamic library '/usr/lib/php4/20020429/gd2.so' - /usr/lib/php4/20020429/gd2.so: cannot open shared object file: No such file or directory in Unknown on line... www.commentcamarche.net/faq/sujet-2893-unable-to-load-dynamic-library-usr-lib-php4-20020429-mysql-so

Résultats pour [Ajax+PHP] Refresh et MySQL

Tout sur Php et MySql (Résolu)Bonjour, Je suis une passionnée de la programmation web et j'aimerais s'il vous plait que vous me conseilliez un livre qui me montrera tous ou le maximum de secrets de php et mysql MERCI BEAUCOUP DE ME REPONDRE www.commentcamarche.net/forum/affich-4746217-tout-sur-php-et-mysql
Problème soit PHP soit mySQL .... (Résolu)Bonjour, Soit vous m'aidez ... soit je me jette .... la j'ouvre la fenêtre :) ... Bon .... J'utilise PHP et mySQL.... Voici une morceau de requête : $sql = 'SELECT SUM( M.scorext ) as SetPour, SUM( M.scoredom ) as SetContre FROM... www.commentcamarche.net/forum/affich-3816831-probleme-soit-php-soit-mysql
Passage de variable php dans ajax (Résolu)Salut, Je fais un site perso avec de l'ajax ( http://smawn.free.fr ) et je voudrais faire passer une variable php à un autre div (charger par ajax .php) sur le click d'un appellant ma fonction ajax et page php... voila je pense que... www.commentcamarche.net/forum/affich-3753091-passage-de-variable-php-dans-ajax