CHAT PHP/AJAX SIMPLE ET COMPACT

jantosze Messages postés 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 15 mai 2009 - 25 févr. 2008 à 10:13
philippe62770 Messages postés 1 Date d'inscription lundi 5 janvier 2015 Statut Membre Dernière intervention 5 janvier 2015 - 5 janv. 2015 à 19:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45840-chat-php-ajax-simple-et-compact

philippe62770 Messages postés 1 Date d'inscription lundi 5 janvier 2015 Statut Membre Dernière intervention 5 janvier 2015
5 janv. 2015 à 19:47
salut commen je pourrait changer limage de la chat an haud a gauche merci
cs_bonhommecrea Messages postés 44 Date d'inscription dimanche 14 mars 2010 Statut Membre Dernière intervention 13 mars 2011
8 janv. 2011 à 09:32
euh 243 pardon
cs_bonhommecrea Messages postés 44 Date d'inscription dimanche 14 mars 2010 Statut Membre Dernière intervention 13 mars 2011
7 janv. 2011 à 21:44
ligne 143, il y a un commentaire que tu as ouvert et que tu n'a pas refermé :)
rojbisami Messages postés 6 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 18 avril 2010
17 juil. 2009 à 20:31
Un bon script.
Vérifiez l'affichage de l'heure.
cs_SuperChouquette Messages postés 37 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 18 mai 2010
12 juil. 2009 à 22:44
Tu dois avoir du texte ou un esoace avant
<?php
session_start();

il ne faut pas qu'il y en ait.
cirkooo Messages postés 35 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 26 décembre 2012
11 juil. 2009 à 03:42
mince, ça ne marche pas? ça m'affiche:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\wamp\www\script.php:1) in C:\wamp\www\script.php on line 2
j'ai essayer de rajouter ?login=toto marche pas non plus?
de quoi ça peut venir?
MoulouD1993 Messages postés 28 Date d'inscription mardi 7 avril 2009 Statut Membre Dernière intervention 28 janvier 2012
2 juil. 2009 à 17:56
jolis script si il ya d'autres script n'hesite pas et encore mercis
Yukilas Messages postés 2 Date d'inscription mardi 6 janvier 2009 Statut Membre Dernière intervention 20 janvier 2009
20 janv. 2009 à 07:43
@Neigedhiver : Merci bcp, je vais regarder ça aujourd'hui
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
20 janv. 2009 à 01:08
Yukilas Messages postés 2 Date d'inscription mardi 6 janvier 2009 Statut Membre Dernière intervention 20 janvier 2009
19 janv. 2009 à 12:11
Quelqu'un pourrait m'expliquer ce que sont les lignes 47 et 49 ?

$chat='a:0:{}';
$enligne='a:0:{}';

Merci d'avance ;)
soundpanther Messages postés 68 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 31 janvier 2009
24 nov. 2008 à 13:05
très bon travail en fin presque
franzemmanuel Messages postés 1 Date d'inscription jeudi 8 décembre 2005 Statut Membre Dernière intervention 26 avril 2008
26 avril 2008 à 21:11
Super !
cs_SuperChouquette Messages postés 37 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 18 mai 2010
16 mars 2008 à 12:38
Désolé, je met à jour le code ! si il y a d'autre bug n'hésite surtout pas !
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
26 févr. 2008 à 20:54
Salut,

J'ai fait aussi un bench pour comparer un simple if elseif else avec un switch case default. On en trouve d'ailleurs plein sur le net...
Clairement, switch prend l'avantage sur if pour un petit nombre de possibilités. Pour ma part, j'ai tenté avec 26 plus une par défaut. Là, switch et if deviennent équivalents (c'est à dire que parfois l'un est plus rapide, parfois c'est l'autre.

Coucou747 (j'allais oublier le '747', mais trop peur de me faire taper sur les doigts), pour écrire pareil que ton switch avec un if, il suffit de sortir l'appel à la méthode de la boucle pour stocker le résultat dans une variable, et de tester sur cette variable.
$aTester = $maClasse -> maMethode();
if ($aTester == '...') {
// ...
}

Autrement dit, il semble que la structure switch demande plus de ressources quand elle est initialisée, mais en demande moins pour chaque possibilité supplémentaire.
Si on avait des valeurs, on pourrait résoudre un système de 2 équations à 2 inconnues, et on saurait quand il est préférable d'utiliser l'un plutôt que l'autre...
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
26 févr. 2008 à 18:55
mais justement, un switch fait comme le tien, c'est presque comparable a un if, mais un switch comme je l'ai fait plus haut,c'est different...
jantosze Messages postés 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 15 mai 2009
26 févr. 2008 à 18:49
Salut coucou747,

Il me semble que tu oublies un détail avec Switch:
switch( C ) {
case 1:
.....
break;
case 2:
....
break;
ect ..
default:
......
break;
}
Sinon évidemment tu auras tendance à cumuler

Cdt
JAN
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
26 févr. 2008 à 18:44
nan mais c'est surtout pas les memes structures :

switch (...){
case val1:
instructions executes pour la valeur 1
case val2:
instructions executes pour la valeur 1 ou 2
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
26 févr. 2008 à 18:39
Il est évident que le gain ne se mesure pas sur "Si i == 1" "Si i == 2" ...

C'est absurde :o

Il est beaucoup plus aisé d'écrire :

switch ( $class->ma_methode() ) {
case TRUC:
//
case MACHIN:
//
/// etc..
}

que :

$retour = $class->ma_methode();
if ( $retour == TRUC ) {
//
} elseif ( $retour == MACHIN ) {
//
} // etc...

:)
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
25 févr. 2008 à 20:36
en fait, parfois, on peut faire un if en O(log(nombre_elements)) alors qu'un switch est en O(nombre_elements)

voici le bench :

function compare1($i){
if ($i==1)return '1';if ($i==2)return '2';if ($i==3)return '3';
if ($i==4)return '4';if ($i==5)return '5';if ($i==6)return '6';
if ($i==7)return '7';if ($i==8)return '8';return '9';
}

function compare1_1($i){
if ($i<5){if ($i==1)return '1';if ($i==2)return '2';if ($i==3)return '3';return '4';}
if ($i==5)return '5';if ($i==6)return '6';if ($i==7)return '7';if ($i==8)return '8';
return '9';
}

function compare2($i){
switch ($i){
case 1:return '1';case 2:return '2';case 3:return '3';case 4:return '4';
case 5:return '5';case 6:return '6';case 7:return '7';case 8:return '8';
default:return '9';
}}
function compare3($i){$i='f'.$i;return $i();}
function f1(){return '1';}function f2(){return '2';}function f3(){return '3';}
function f4(){return '4';}function f5(){return '5';}function f6(){return '6';}
function f7(){return '7';}function f8(){return '8';}function f9(){return '9';}

c'est clairement compare1_1 la plus rapide
cs_SuperChouquette Messages postés 37 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 18 mai 2010
25 févr. 2008 à 18:55
merci pour vos conseil !
Sinon pour l'intégration dans un site, le webmaster peut mettre une frame, le but était que le script tienne dans un fichier, sans base de données, sans fichier texte qui se créé à coté.
Je vais aussi ajouté la gestion des utilisateur, j'ai finit le script ! en tous les cas merci pour vos conseils !
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
25 févr. 2008 à 17:57
Au temps pour moi...
jantosze Messages postés 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 15 mai 2009
25 févr. 2008 à 16:51
NEIGEDHIVER je ne partage pas ton avis sur le fonctionnement du switch:
" Dans une commande switch , une condition n'est évaluée qu'une fois, et le résultat est comparé à chaque case . Dans une structure elseif , les conditions sont évaluées à chaque comparaison. Si votre condition est plus compliquée qu'une simple comparaison, ou bien fait partie d'une boucle, switch sera plus rapide. "
lire http://www.manuelphp.com/php/control-structures.switch.php par exemple.

cdt
JAN
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
25 févr. 2008 à 16:08
Salut,

"partie PHP : sur la série des if(@$_GET['action']... J'aurai tendance à utiliser un switch / case avec une gestion du default, je trouve que cela apporte en lisibilité."

...mais fait perdre en performances. D'un autre côté, une série de blocs if, c'est pas optimisé. Mieux vaut utiliser un if ... elseif ... else en prenant soin de mettre en premier l'action qui a le plus de chances de se produire.
Une boucle switch doit parcourir tous les cas possibles avant de se décider. Une boucle if elseif else les parcourt les uns après les autres, et sort dès que le bon a été trouvé.
Et puis les @$_GET c'est moche, très moche.
Mieux vaut une boucle comme ça :

if (isset($_GET['action'])) {
if ($_GET['action'] == 'nouveau_message') {
// ...
}
elseif ($_GET['action'] == 'vider') {
// ...
}
elseif ($_GET['action'] == 'poster') {
// ...
}
}

Sinon, petite remarque : c'est
et non pas
Il y a un espace entre le `r` et le `/`

Maintenant, pour que ce chat puisse être plus facilement intégrable dans un site, il faut penser à séparer le code PHP du code HTML et faire en sorte qu'on puisse, justement, facilement intégrer ça où on veut.
jantosze Messages postés 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 15 mai 2009
25 févr. 2008 à 10:13
Salut,

En première lecture qq rems de forme:
- partie PHP : sur la série des if(@$_GET['action']... J’aurai tendance à utiliser un switch / case avec une gestion du default, je trouve que cela apporte en lisibilité.
-partie JS: bien les 2 try sur ActiveXObject j'en mettrai un aussi sur le if qui suit,
if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } par
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp = false;
}
}
return xmlhttp;
} Du fait de readyState 4 mettre une trace d'erreur pour if( mesage.status 200 ) { ... } else { "il y a un problem avec request err_num:"+message.status);Faire un test sur var XXXX httprequest(); car dans ton code tu peux avoir NULL; De même initialiser var xmlhttp false qui est réservé aux ops BOOL je préfère NULL.

Cdt
JAN
Rejoignez-nous