> Tous les forums > Forum des Webmasters
 Sur page PHP : méthode pour rafraîchir un div sous include en AjaxSujet résolu
Ajouter un message à la discussion
Pages : [1] 2 ... Fin
Page 1 sur 2 [Fin]
Jean-Pierre
  Posté le 06/09/2019 @ 12:35 
Aller en bas de la page 
Maître astucien

Je bosse sur un petit projet (miaouuuuuuu... ) et je sèche sur un point précis :

Je dois rafraîchir un div en include automatiquement. Sans rafraîchir la page PHP bien entendu.

La page sous div est en extension .doc. Elle comporte les messages issus de divers PC.

J'ai jeté mon dévolu sur la méthode Ajax (sans rapport avec GG hein )

J'ai testé des scripts plus ou moins complexes, mais en fin de compte assez décevants pour diverses raisons.

Voilà ; si vous avez une expérience en ce domaine avec un petit exemple à la clé pas trop compliqué, ce serait super, merci d'avance

JP



Modifié par Jean-Pierre le 06/09/2019 12:42
Publicité
zoulouman
 Posté le 06/09/2019 à 19:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Salut limace humide,

Te fais pas de souci pour ta page PHP, en include ou en require, elle ne se mettra pas à jour si tu sais ce que tu fais.

Par contre, pour afficher un fichier .doc, ça ne le fera jamais.
Le .doc est un format propriétaire Microsoft, rien n'est prévu pour l'afficher chez tout le monde sur un navigateur.

Il va falloir changer d'approche, le .doc ne fonctionnera jamais. Enfin, ça ne fonctionnera jamais de façon simple.

Tu remarqueras que je n'ai même pas parlé de Ajax. Dès le début tu t'es planté avec ton .doc, pas la peine d'évoquer Ajax...

Jean-Pierre
 Posté le 06/09/2019 à 19:48 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Hello belle grosse grenouille non moins humide

Je suis des plus têtu et tu dois désormais le savoir via un autre post focalisé sur les formulaires.

Présentement je peux même formater (= CSS) le fichier .doc en include (si tu veux je te file the link via MP))

Regarde :



Je crois avoir enfin trouvé un excellent script :
https://codes-sources.commentcamarche.net/forum/affich-10009891-rafraichir-div-par-ajax

Je réussi à rafraîchir manuellement avec le "button".

Mais malheureusement pas encore en automatique.

Je vous montre le code "semi-fonctionnel (= ne fonctionnant qu'avec le button) :
("dodo.doc" c'est mon fichier de messages à rafraîchir et "id_test" c'est l'ID de l'include )

En <head> :

<script>
window.onload = function(){
val1t=0;
var g = new JustGage({
id: "val1t",
value: Math.round(val1t*100)/100 ,
min: 0,
max: 15,
title: "valeur 1",
label : "carottes",
levelColors: [
"#ff0000",
"#ffff33",
"#33ff33"
]
});
setInterval(function() {g.refresh(Math.round(val1t*100)/100);
}, 500);

setInterval("makeRequest('dodo.doc','id_test')",2000);
};
</script>


<script language="Javascript"type="text/JavaScript">
var val1t;

// Requette AJAX
function makeRequest(url,id_test){
var http_request = false;
//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}

if (!http_request) {
alert('Abandon :( Impossible de créer une instance XMLHTTP');
return false;
}
http_request.onreadystatechange = function() { traitementReponse(http_request,id_test); } //affectation fonction appelée qd on recevra la reponse
// lancement de la requete
http_request.open('POST', url, true);
//changer le type MIME de la requête pour envoyer des données avec la méthode POST , !!!! cette ligne doit etre absolument apres http_request.open('POST'....
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
data="292";
http_request.send(data);
}

function traitementReponse(http_request,id_test) {
var affich="";
if (http_request.readyState == 4) {
if (http_request.status == 200) {
// cas avec reponse de PHP en mode texte:
//chargement des elements reçus dans la liste
var affich_list=http_request.responseText;
obj = document.getElementById(id_test);
obj.innerHTML = affich_list;
var reg=new RegExp("[z]+", "g");
var tableau=affich_list.split(reg);
for (var i=0; i<tableau.length; i++) {
val1t=tableau[2]

}

}
else {
alert('Un problème est survenu avec la requête.');
}

}

}
</script>



En <body> le fameux button fonctionnant impec :

<input type="button" name="toto" value="Refraich" onclick="makeRequest('dodo.doc','id_test')"/> <br />




Mon formulaire ici...
.../...



Sous ce formulaire ceci :

<div id="id_test">
<?php
// On intègre le fichier d'enregistrement
include("dodo.doc");
?>
</div>



Et voilà, je cherche quelle marche ai-je loupée...

Merci de vos lumières








midnightblue
 Posté le 06/09/2019 à 19:51 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

EN 2005, j'avais fait un petit chat tout simple. Uniquement PHP et HTML en trois fichiers. Un fichier pour envoyer les messages, un fichier de lecture inclus dans le premier, et un fichier de données à plat au format .txt

En voila le codage schématique.

FICHIER 1

ecritureduchat.php

<?php

// Initialisation
if(empty($_POST["ok"]))$_POST["ok"]="";
if(empty($_POST["message"]))$_POST["message"]="";
//*********************************************

//Traitement
$_POST["message"]=strip_tags($_POST["message"]);
$_POST["message"]=str_replace("\n","<br>",$_POST["message"]);
//*********************************************

// Ecriture
$fp=fopen("chat.txt","a+");
fwrite($fp,$_POST["message"]."\n");
fclose($fp);
//*********************************************
?>

<iframe src="lectureduchat.php"></iframe>

<form method="post">
<textarea name="message"></textarea>
<input type="submit" name="ok" value="ENVOYER">
</form>

FICHIER 2

lectureduchat.php

<!doctype html>
<head>
<title>Chat</title>
<meta http-equiv="refresh" content="4;lectureduchat.php">
</head>
<body>

<?php
$fichier="chat.txt";
$f=file($fichier);
for($i=0;$i<count($f);$i++){
$f[$i]=str_replace("\n","<br>",$f[$i]);
echo $f[$i]."<hr>";
}
?>

</body>
</html>

FICHIER 3

chat.txt

Se crée au fur et à mesure de la progression du chat...

******

Miaou...moins de 40 lignes ! On peut of course améliorer.

*µ*

Jean-Pierre
 Posté le 06/09/2019 à 20:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

miaouuuuuu !

Merci midnightblue de ton idée.

Oui mais ça rafraichi TOUTE ta page non ?

De toute façon demain je vais tester la/ta bête

zoulouman
 Posté le 06/09/2019 à 20:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Le rafraîchissement n'est pas le problème. Avec une requête Ajax, c'est simple à obtenir.
C'est l'affichage d'un fichier .doc qui ne marchera pas !

Le web n'a pas été conçu pour la suite Microsoft Office et c'est tant mieux !

Jean-Pierre
 Posté le 06/09/2019 à 20:25 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Oui mais pourquoi le rafraichissement fonctionne nickel via le "button" de ces functions JS ?

Si je te crois, alors ça devrait fonctionner en automatique avec un fichier PHP en remplacement du .doc ?


Mais têtu comme je suis je vais concocter (si je ne réussi pas) à commander cela via un script cliquant à intervalles réguliers sur ce button.

Mais bon...ça ferait un peu bidouille.



Modifié par Jean-Pierre le 06/09/2019 20:29
zoulouman
 Posté le 06/09/2019 à 20:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Tu veux afficher du PHP(HTML au final) en remplacement du .doc ?!
Mais qu'est-ce que tu branles ?!

Tu veux quoi au juste ?
C'est ton histoire de chat ?

Jean-Pierre
 Posté le 06/09/2019 à 20:31 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Miaouuuuuuuuuuuuuuuuuuuu oui !

Je te file the link en MP et tu verras le .doc formaté

C'est impossible, mais pôô avec ma limace qui programme à ma place

Publicité
zoulouman
 Posté le 06/09/2019 à 20:47 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

J'ai pas encore regardé mes MP, j'ai faim, je vais bientôt couper.

Mais pourquoi un bouton pour actualiser ?
Tu sais que avec jQuery/Ajax, tu peux créer un timer dans une fonction qui actualisera le contenu que tu veux dans la page mais pas la page entière. Actualiser une DIV par exemple.

Regarde ici : https://stackoverflow.com/questions/25446628/ajax-jquery-refresh-div-every-5-seconds

Je te mettrais bien du code ici, mais avec PCA c'est impossible, à chaque fois c'est illisible et affreux comme tout !
Pourtant, c'est juste un javascript supplémentaire à charger, c'est tout.

Jean-Pierre
 Posté le 06/09/2019 à 23:10 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Le bouton pour actualiser est simplement une sorte de test et de ctrl en fait.

Puisque c'est possible avec ce bouton ; je ne vois pas pourquoi...

Oui des codes comme ton exemple sont bien sauf qu'ainsi qu'indiqué en haut, je ne souhaite aucunes références/appels GG :

src="http://ajax.googleapis.com/ajax/libs

Quand tu iras sur le lien MP, tu verras le résultat et tu pourras en déduire que c'est possible ; mais manque un petit quelque chose qui débloque la situation.

Bonne nuit et évite de coasser trop fort

Ma limace elle, ne produit aucun bruit (Hein ? oui elle bave et alors )

Jean-Pierre
 Posté le 07/09/2019 à 00:59 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Victoire!!!

Je savais biens que j'avais loupé un truc.

Il étais bien dit sur LA DERNIÈRE LIGNE. Et non l'avant dernière

setInterval("makeRequest('dodo.doc','id_test')",2000);
</script>

C'était impossible de rafraichir un div sous include en Ajax avec un appel en .doc, hein ? qui qui a dit ça ?

INPF

Double ration de laitue pour ma limace !

zoulouman
 Posté le 07/09/2019 à 15:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Ben oui, depuis j'ai vu.
Ton .doc n'est pas au format office mais au format text/plain, du coup ça pourrait être un .dtc que ce serait pareil.

Il faut juste déclarer le type/mime dans Apache pour éviter les soucis.
AddType text/plain .doc

Jean-Pierre
 Posté le 07/09/2019 à 18:01 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

En fait je n'ai pôôô et jamais réussi à rafraichir automatiquement le div en Ajax toutes les 4 secondes...

Un secret : c'est ma limace qui le fait toute seule et tapotant de toutes ses petites forces sur le pavé F5 à cette fréquence.

En plus grosse méchante, en cours des diverses épreuves sur mon apache, ma limace avait tellement peur de cette attaque, qu'elle est venue se réfugier tout contre moi.

Elle d'habitude fait la fiérottee, et est même du gente intrépide au possible.

Elle tremblait de ton son petit corps.

Bref, tu lui as flanqué une sacré frousse.

Si elle avait eu des dents ; elle les aurait claqués.

Grande méchante va !


Autre registre :

Je vais échanger l'extension .doc contre une .txt ; confirme-moi que tout sera mieux ainsi, sans aller bidouiller ailleurs.

zoulouman
 Posté le 07/09/2019 à 18:58 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

C'est pas la peine de changer en .txt, vu que c'est juste pour un usage interne. Le .doc surprend juste un peu, c'est pas le format utilisé habituellement.
Pour ce type de données texte, j'aime bien le .dat (comme data).

Par contre, il faut faire gaffe que le fichier ne soit pas accessible directement depuis le net, par exemple : example.com/mon_chat.dat
Il faut donner un CHMOD 660 au fichier au minimum.

Tu peux aussi en interdire l'accès avec un .htaccess : (je te donne un bonus avec )

RewriteCond %{REQUEST_URI} ^(.*\.(htaccess|htpasswd|bak|co?nf|crt|dat|dist|fla|in[ci]|key|log|pem|php~|psd|save|sh|sql|sw[op]))$ [NC]
RewriteRule .* - [F]

Jean-Pierre
 Posté le 07/09/2019 à 19:09 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Bon, et si je renomme en .dat, c'est mieux alors ?

Je vais voir en CHMOD 660 si c'est OK.

zoulouman
 Posté le 07/09/2019 à 19:34 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Mais pourquoi je reçois pas les notifications bon dieu de bon dieu ?!!!

Non, c'est pas mieux, c'est comme tu veux. Les extensions de fichiers, quand c'est utilisé en interne, c'est comme on veut. Par contre, vu que ça aparait dans ton code, sur le formulaire, le .dat fait un peu plus "sérieux".

Du coup, je pense à un truc, vu que ton fichier est sollicité par le formulaire, ne modifie pas son CHMOD. Sinon il ne sera plus accessible...
Avec un CHMOD en xx0, tu peux modifier les fichiers depuis PHP mais pas depuis HTML...

Publicité
Jean-Pierre
 Posté le 07/09/2019 à 19:42 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Ici les notifs suivants les moments, ça patine des fois...

Le CHMOD du .doc est en 666.

Tu mettrais quoi ?

Jean-Pierre
 Posté le 07/09/2019 à 20:17 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Oupssss j'avais lu en travers :

J'ai affecté 660 en CHMOD.

Remis en 666 car ça fichait le binz en requête !



Modifié par Jean-Pierre le 07/09/2019 20:21
zoulouman
 Posté le 07/09/2019 à 20:21 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

666, c'est bien.
Le minimum est 644 pour que le fichier reste lisible sur le net. Et encore, ça dépend des hébergeurs...
Avec certains, ça marchera très bien en 644 et avec d'autres tu seras emmerdé pour accéder au fichier, d'où le 666
Pourtant, le CHMOD répond à une règle simple. Trois chiffres : Propriétaire, Groupe, tout le monde. C'est pas sorcier quand même ! Et ben non, certains hébergeurs n'y arrivent pas...

Bon, eh, oh ! Je veux savoir pourquoi je ne reçois pas les notifs du sujet !!!
Avec les autres ça marche mais pas avec celui ci !
La limace !!! Attrape moi Clément et apporte moi le par la peau du cul avec tes dents bien affûtées !

Jean-Pierre
 Posté le 07/09/2019 à 21:13 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Ouuuuuuuuuhhhhhhhhhhh non moi pauvre petite limacette, zé pas de dents môâ


Si tu reviens en miaouuuuuuuu : faudra rafraichir ta page, sinon tu verras des messages d'erreurs de requêtes.

Le nombre de ces requêtes en fonctions des nouveaux chattages



Modifié par Jean-Pierre le 07/09/2019 21:25
zoulouman
 Posté le 07/09/2019 à 21:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Hein ?
J'ai rien compris. Le nombre des requêtes en fonction des chattages ?

Je régresse, je deviens fou.

Jean-Pierre
 Posté le 07/09/2019 à 21:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Tu verras bien si tu reviens au miaouuuuuuuuuuuu...

J'avais pensé une attaque en premier

zoulouman
 Posté le 08/09/2019 à 18:10 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Ca en est où ici ?

Jean-Pierre
 Posté le 08/09/2019 à 18:39 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Pour l'instant c'est comme la rentrée ; même le dimanche...

Ce matin j'avais commencé à me pencher sur l'anti-f****, mais été dérangé et demain sera chargé aussi.

Arffff et le temps passe trop vite.

Mais pour l'instant je m'amuse un peu au côté custom et nettoyage du code ; j'aime pas le bord**.

J'ai exporté les JS en fichier. J'ai ajouté une image tu peux voir le relooking.

Comme demain la journée sera chargée, faut pas que je me lance dans un truc à prise de citron sur des heures.

Nous butinons, moi et ma limace au fil de nos idées.

@ +

Oupsss, elle me dit de bisouiller sa grosse copine grenouille verte.

zoulouman
 Posté le 08/09/2019 à 19:56 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Prends ton temps, mais fait ça bien.

Grosse léchouille à la limace.

Publicité
Pages : [1] 2 ... Fin
Page 1 sur 2 [Fin]

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
79,99 €Kit 5.1 Logitech Z607 bluetooth à 79,99 €
Valable jusqu'au 26 Février

Amazon fait une promotion sur le kit d'enceintes 5.1 Logitech Z607 qui passe à 79,99 € livré gratuitement alors qu'on le trouve ailleurs autour de 125 €. Ce kit dispose d'un caisson de basses, d'une voie centrale et de 4 satellites offrant au total  une puissance de crête de 160 Watts et 80 Watts en puissance RMS. De quoi profiter pleinement de vos films et de vos jeux dans une pièce moyenne. D'autant que des câbles extra-longs (6,2 m) sont fournis pour les satellites arrières. Grâce à ses entrées 3.5mm et RCA, vous pourrez relier le kit à un PC, à une console de jeux, un lecteur DVD/Blu-Ray tandis que sa connexion bluetooth vous permettra de l'utiliser pour vos appareils sans fil. Vous pouvez même lui brancher directement une carte mémoire ou une clé USB et écouter la radio FM. Une télécommande (sans fil) vous permettra de contrôler tout cela. Une excellente affaire !


> Voir l'offre
116,60 €SSD WD Blue SN550 1 To (NMVe M.2, 2400 Mo/s) à 116,60 €
Valable jusqu'au 28 Février

Amazon fait une promotion sur le SSD WD Blue SN550 500 Go (NMVe M.2) qui passe à 116,60 € livré alors qu'on le trouve ailleurs à partir de 155 €. Ce SSD utilise une interface M.2 NVMe PCIe Gen3 x 4 pour une connexion simple et des performances exceptionnelles : jusqu’à 2 400 Mo/s en lecture séquentielle et jusqu’à 1 950 Mo/s en écriture séquentielle. Le SSD est doté de la technologie 3D TLC NAND haute densité offrant une endurance d’écriture durable et assorti d’une garantie de cinq ans.


> Voir l'offre
30,17 €SSD SanDisk Plus 240 Go à 30,17 €
Valable jusqu'au 26 Février

Amazon propose actuellement le SSD SanDisk Plus 240 Go à 30,17 € livré gratuitement. Une bonne affaire pour ce SSD très fiable et performant qui offre des débits de 530 Mo/s en lecture et 445 Mo/s en écriture. Il est garanti 3 ans. On le trouve ailleurs à partir de 42 €.


> Voir l'offre

Sujets relatifs
Rafraichir la page pour relancer une animation
Quel logiciel pour mettre en page une page web ?
meilleure méthode pour faire des calculs de disponibilité
créer un site ---- Aircus.com vous en pensez quoi pour une page WEB ?
Page htlm pour toutes résolutions d'écran
Page web pour entreprise
taille page pour iframe
mot de passe pour accéder une page html
Créer un code pour page fan Facebook
Largeur d'une page pour un site
Plus de sujets relatifs à Sur page PHP : méthode pour rafraîchir un div sous include en Ajax
 > Tous les forums > Forum Forum des Webmasters