Timer php

Résolu/Fermé
florire Messages postés 151 Date d'inscription lundi 15 juillet 2013 Statut Membre Dernière intervention 15 juillet 2022 - Modifié par florire le 2/04/2014 à 23:42
florire Messages postés 151 Date d'inscription lundi 15 juillet 2013 Statut Membre Dernière intervention 15 juillet 2022 - 3 avril 2014 à 16:15
Bonjour,
je voudrais exécuté du php à l'aide d'un timer js toute les 5secondes.

Mais comment faire pour que ma fonction soit "relié" à du php

Merci de votre aide !

var timerk=setInterval(kick,5000);

function kick(){
    $.post(url,{fonction:"kick"},function(data){
        if(data.erreur=="ok"){
            location.reload();
        }
        else{
        }
        },"json");
    return false;}


      if($_POST["fonction"]=="kick"){
          $sql17 = "SELECT pseudo FROM users WHERE kick = 1";
        $req17 = mysql_query($sql17) or die(mysql_error());
        $data17=mysql_fetch_assoc($req17);
        $pseudo17=$data17['pseudo'];
        if($_SESSION['Auth']['pseudo'] == $pseudo17){
$_SESSION=array();
session_destroy();
$d["erreur"] ="ok";
    }
      }
A voir également:

3 réponses

Salut,

c'est tout à fait impossible: javascript fonctionne dans le navigateur web et PHP sur le serveur web.
Donc PHP est toujours avant javascript.
Vous pouvez soit utiliser AJAX soit une tâche CRON selon ce que vous avez à faire.
Si c'est en rapport avec la base de données pourquoi ne faites vous pas ce timer côté serveur uniquement?
Un peu lourd de faire des requêtes constantes, AJAX semble ce prêter à ce que vous voulez faire(?quoi donc) et permettra de pas surcharger la BDD pour rien par un traitement des données uniquement lorsque nécessaire.
0
florire Messages postés 151 Date d'inscription lundi 15 juillet 2013 Statut Membre Dernière intervention 15 juillet 2022 6
3 avril 2014 à 08:18
Merci de votre réponse.
Je vais partir sur de l'ajax comme j'ai déjà des requêtes qui passe par la.
Mon code précédent est bien de l'ajax ?
Le timer fonctionne.
Mais le reste ne fonctionne pas :/
0
florire Messages postés 151 Date d'inscription lundi 15 juillet 2013 Statut Membre Dernière intervention 15 juillet 2022 6
3 avril 2014 à 16:15
En faite c'est un tchat en ajax/php.
Quand un utilisateur écrit "/kick membre", sa envoi une requete qui met "1" dans la colonne kick où pseudo=membre dans la table users de ma BDD.

Et je voudrais vérifier "en permanence" si un utilisateur à la valeur 1 pour kick.
Si c'est le cas je récupère son pseudo.
$sql17 = "SELECT pseudo FROM users WHERE kick = 1";

Et je le redirige vers la page "logout.php" ou je le déconnecte(session_destroy) et actualise la page.


Si je fais sa dans une autre "requete" ajax:
	/**
	* Action : getMessages
	* Permet l'affichage des dernier messages
	**/
        if($_POST["action"]=="getMessages"){
            $sql17 = "SELECT pseudo FROM users WHERE kick = 1";
	    $req17 = mysql_query($sql17) or die(mysql_error());
	    $data17=mysql_fetch_assoc($req17);
	    $pseudo17=$data17['pseudo'];
	    if($_SESSION['Auth']['pseudo'] == $pseudo17){
		$_SESSION=array();
		session_destroy();
            }
            $lastid =floor($lastid);
            $sql ="SELECT * FROM messages WHERE id>$lastid ORDER BY date ASC";
            $req=mysql_query($sql) or die(mysql_error());
            $d["result"]="";
            $d["lastid"]=$lastid;

//suite 

C'est pas très propre mais l'utilisateur est bien déconnecté, sauf qui faudrait le rediriger vers la page index ou actualisé la page.
Si je rajoute
 header('location: ../index.php');
l'utilisateur est bien déconnecté mais pas rediriger.

Le js de getMessage
var timer=setInterval(getMessages,2000);
function getMessages(){
    $.post(url,{action:"getMessages",lastid:lastid},function(data){
            if(data.erreur=="ok"){
                $("#tchat").append(data.result);
                lastid=data.lastid;
            }
            else{
                alert(data.erreur);
            }
        $('#tchat').manageScrollbar({timer: 2000, acceptDiff: 93});},"json");
        return false;
}
0