aide fonction membre online sur tout le site

Eléphant du PHP | 257 Messages

06 janv. 2017, 12:12

merci moogli super sympa

Eléphant du PHP | 257 Messages

06 janv. 2017, 15:51

Bonjour il y une petite erreur $params = [];
$requete = 'SELECT pseudo_site as pseudo ,type,(select count(1) from online_site os where os.pseudo = u.pseudo) as connected FROM online_site os ';
$params = [];
if (!empty($_POST['type'])) {
    // si on a reçu un type, on filtre dessus
    $requete = $requete.' WHERE type=:type';
    // on ajoute la valeur de type aux paramètres d'exécution de la requête
    $params['type']  = $_POST['type'];
}

Mammouth du PHP | 1967 Messages

07 janv. 2017, 12:20

$params = array();
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 257 Messages

08 janv. 2017, 17:37

une erreur

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Champ 'os.pseudo' inconnu dans where clause' in C:\Program Files\EasyPHP-5.3.8.1\www\source\online_site.php:34 Stack trace: #0 C:\Program Files\EasyPHP-5.3.8.1\www\source\online_site.php(34): PDOStatement->execute(Array) #1 C:\Program Files\EasyPHP-5.3.8.1\www\source\header.php(99): require('C:\Program File...') #2 C:\Program Files\EasyPHP-5.3.8.1\www\source\m_profil.php(2): require('C:\Program File...') #3 {main} thrown in C:\Program Files\EasyPHP-5.3.8.1\www\source\online_site.php on line 34

Mammouth du PHP | 1967 Messages

08 janv. 2017, 17:41

Tu a lu le message d'erreur ??
il est en français en partie
Champ 'os.pseudo' inconnu dans where clause

Je le trouve très complet
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 257 Messages

09 janv. 2017, 23:36

j'ai pas de champs os.pseudo juste le pseudo

Mammouth du PHP | 1967 Messages

10 janv. 2017, 09:21

c'est bien ce que te dit PDO

vérifie ta structure pour faire appel au bon champ (attention aux typos). Nous on ne la connait pas .
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 25 Messages

14 janv. 2017, 12:56

Bonjour,

Il y a un truc qui me chagrine: Ton modèle de données n'est pas approprié pour ta demande qui est (je la reformule) : afficher une pastille rouge pour chaque utilisateur non connecté, et une pastille verte pour chaque utilisateur connecté. Je m'explique:
- Outre le fait qu'il va y avoir le problème d'affichage de cette information de manière accessible et aisée dans un contexte où il peut y avoir un grand nombre d'utilisateurs (connectés ou non), tu as modélisé une table pour renseigner les utilisateurs connectés. Par conséquent ceux qui ne le sont pas sont absent de cette table. C'est bien sauf que tu es sur MySQL et que dans un tel contexte il te faudrait utiliser des instruction EXCEPT ou INTERSECT dans ta requête pour lister les utilisateurs non connectés, et MySQL ne sait pas le faire.
Maintenant si tu veux déduire les non connectés de la table membre et de la table des connectés par itération en PHP à la façon d'un CMS, je te souhaite bien du courage pour les ressources que cette fonctionnalité va te consommer et le temps qu'elle va prendre.

++
Architecte de données & applications web
MCSE Data Management & Analytics

Eléphant du PHP | 257 Messages

16 janv. 2017, 22:23

je pensais jouer une alter on et off dans un update dans la table membres mais je ne sais pas comment faire cela

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

17 janv. 2017, 09:59

@Jc71 :
avec un subselect cela ne pose pas de problème. Un select sur la table des membre et un (select count(1) from lesconnecté where id = id) as connected et tu auras 1 ou zéro sans problème.
c'est la solution que j'ai proposé qu'il n'arrive pas a adapter à son modèle (que nous n'avons pas :/)
$requete = 'SELECT pseudo_site as pseudo ,type,(select count(1) from online_site os where os.pseudo = u.pseudo) as connected FROM online_site os ';
Pour ce qui est du volume de donnée effectivement une pagination me semble appropriée :)

@pacphil
pour avancer se serait pas mal d'avoir les create tables des tables en question.
il faut que tu comprennes ce que fait la requête pour pouvoir l'adapter a ton modèle.

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 257 Messages

25 janv. 2017, 19:14

et utiliser une fonction ajax et ajouter bouton vert ou rouge je pense que je suis pas loin de la solutions

<script>
     function updateOnlineStatus(msg) {
       var status = document.getElementById("status");
       var condition = navigator.onLine ? "ONLINE" : "OFFLINE";
       status.setAttribute("class", condition);
       var state = document.getElementById("state");
       state.innerHTML = condition;
       var log = document.getElementById("log");
       log.appendChild(document.createTextNode("Évènement : " + msg + " ; état=" + condition + "\n"));
     }
     function loaded() {
       updateOnlineStatus("load");
       document.body.addEventListener("offline", function () {
         updateOnlineStatus("offline")
       }, false);
       document.body.addEventListener("online", function () {
         updateOnlineStatus("online")
       }, false);
     }
   </script>
<?PHP
session_start();
require_once("function.php");
$connection = connexion_db ();
header('Content-type: text/html; charset=UTF-8');

	 $reponse=('SELECT pseudo_site FROM online_site');
     $res = $connection->query($reponse);
     while ($result = $res->fetch()) {
		 
     setcookie('pseudo', ''.$result['pseudo_site'].'', time() + 60*60*2, null, null, false, true); // On écrit un cookie
	 }
if(isset($_COOKIE["pseudo"]) == true){
echo'<img src="imdesign/bille_verte.png" width="15" height="15">';
}else{
echo'<img src="imdesign/bille_verte.png" width="15" height="15">';	
}

?>