| Precedente :: Successivo | 
	
	
		| Autore | Messaggio | 
	
		| giulio3x Eroe
 
  
 
 Registrato: 09/08/08 12:35
 Messaggi: 52
 Residenza: Ovest provincia di Treviso
 
 | 
			
				|  Inviato: 23 Nov 2008 00:32    Oggetto: modificare file online.php |   |  
				| 
 |  
				| salve a tutti, vorrei che in questo file: 
 
  	  | Codice: |  	  | <html> <head>
 <title>Persone online</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <script language="javascript">
 function apri(nick_ut)
 {
 window.open("profilo.php?nick=" + nick_ut,nick_ut,"width=500, height=280, left=200");
 }
 </script>
 </head>
 
 <body bgcolor="#E7E9FA">
 <?
 include("config.php");
 
 $ar_online=file($file_online);
 $dim=count($ar_online);
 
 for ($i=0;$i<$dim;$i++)
 {
 $ut_online=chop($ar_online[$i]);
 $utente=explode("|",$ut_online);
 $nick_ut=$utente[0];
 $data=$utente[1];
 $orario=$utente[2];
 
 $parti_data=explode("/",$data);
 $giorno=$parti_data[0];
 $mese=$parti_data[1];
 $anno=$parti_data[2];
 
 $parti_orario=explode(":",$orario);
 $ora=$parti_orario[0];
 $minuti=$parti_orario[1];
 $secondi=$parti_orario[2];
 
 $ts=mktime($ora,$minuti,$secondi,$mese,$giorno,$anno);
 $diff=time()-$ts;
 $min_trascorsi=$diff/300;
 if ($min_trascorsi<$min_online)
 {
 $array_on[]=$nick_ut;
 }
 }
 $ar_unico=array_unique($array_on);
 $dim_unico=count($ar_unico);
 
 echo "<font face=\"Verdana\" size=\"1\">Online: ";
 for($i=0;$i<$dim_unico;$i++)
 {
 echo $ar_unico[$i]. ", ";
 }
 ?>
 
 </body>
 </html>
 | 
 
 questo pezzo di codice contenuto alla fine della pagina, eccolo...
 
 
  	  | Codice: |  	  | $min_trascorsi=$diff/300; if ($min_trascorsi<$min_online)
 {
 $array_on[]=$nick_ut;
 }
 }
 $ar_unico=array_unique($array_on);
 $dim_unico=count($ar_unico);
 
 echo "<font face=\"Verdana\" size=\"1\">Online: ";
 for($i=0;$i<$dim_unico;$i++)
 {
 echo $ar_unico[$i]. ", ";
 }
 ?>
 | 
 
 praticamente se ongi utente scrive 4 messaggi l'utente viene messo online scritto 4 volte come faccio a far si che venga scritto una volta sola?
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| freemind Supervisor sezione Programmazione
 
  
  
 Registrato: 04/04/07 21:28
 Messaggi: 4643
 Residenza: Internet
 
 | 
			
				|  Inviato: 25 Nov 2008 01:47    Oggetto: |   |  
				| 
 |  
				| Ciao, potresti esser più preciso?
 Inoltre per cortesia utilizza il tag "Code" per wrappare il codice.
 
 Saluti
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| giulio3x Eroe
 
  
 
 Registrato: 09/08/08 12:35
 Messaggi: 52
 Residenza: Ovest provincia di Treviso
 
 | 
			
				|  Inviato: 25 Nov 2008 20:44    Oggetto: |   |  
				| 
 |  
				|  	  | freemind ha scritto: |  	  | Ciao, potresti esser più preciso?
 Inoltre per cortesia utilizza il tag "Code" per wrappare il codice.
 
 Saluti
 | 
 
 ciao freemind ok adesso spiego meglio e scusa per il code:
 
 allora la mia richiesta è questa: con questo file di cui poi ho isolato il codice dove presumibilmente bisognerebbe agire, mette a video il nome degli utenti che negli ultimi 5 minuti hanno scritto almeno un messaggio, il problema nasce che il sistema fa si che se l'utente mi scrive più messaggi nell'arco di tempo di 5 minuti il suo nome non compare solo una volta ma ad esempio se ne scrive 10 di messaggi il nome compare 10 volte e non va bene come devo fare per avre solo una volta a video il suo nome piuttosto che 10?
 
 spero che così sia meglio
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| freemind Supervisor sezione Programmazione
 
  
  
 Registrato: 04/04/07 21:28
 Messaggi: 4643
 Residenza: Internet
 
 | 
			
				|  Inviato: 25 Nov 2008 21:44    Oggetto: |   |  
				| 
 |  
				| Ciao, ora il problema è chiaro. Se non ho capito male, dato il vettore $array_on che contiene TUTTI i nickname, anche duplicati, tu ottieni $ar_unico che è lo stesso vettore depurato dai doppioni tramite array_unique.
 
 Ora, non avendo provato il codice non saprei dirti perchè array_unique non ti filtra l'array.
 Per curiosità, hai provato a stampare con un bel:
 
  	  | Codice: |  	  | <?php
 ...
 print '<pre>';
 print_r($array_on);
 print_r($ar_unico);
 print '</pre>';
 ?>
 
 | 
 i due vettori, ovviamente dopo aver generato $ar_unico?
 
 Invece di usare array_unique, potresti riscrivere la if che usi per decidere se aggiungere l'utente a $array_on così:
 <?
 
  	  | Codice: |  	  | ...
 if ($min_trascorsi<$min_online && array_search($nick_ut,$array_on)===false)
 {
 $array_on[]=$nick_ut;
 }
 ...
 
 | 
 ?>
 array_search($a,$b) cerca $a nel vettore $b e ritorna l'indice della prima occorenza se c'è.
 Se non trova nulla ritorna false.
 In questo caso, se ritorna false significa che il nome non è stato ancora aggiunto percui va bene metterlo.
 
 In questo modo non devi più passare per array_unique.
 
 Ciao
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| giulio3x Eroe
 
  
 
 Registrato: 09/08/08 12:35
 Messaggi: 52
 Residenza: Ovest provincia di Treviso
 
 | 
			
				|  Inviato: 25 Nov 2008 23:23    Oggetto: |   |  
				| 
 |  
				| era proprio quello che cercavo di fare da molto tempo, ti ringrazio molto!  |  | 
	
		| Top |  | 
	
		|  | 
	
		| giulio3x Eroe
 
  
 
 Registrato: 09/08/08 12:35
 Messaggi: 52
 Residenza: Ovest provincia di Treviso
 
 | 
			
				|  Inviato: 26 Nov 2008 22:52    Oggetto: |   |  
				| 
 |  
				|  	  | giulio3x ha scritto: |  	  | era proprio quello che cercavo di fare da molto tempo, ti ringrazio molto!  | 
 
 stavo pensando sarebbe possibile fare in modo che un utente fatto il login venga immesso in un file .txt fino alla chiusura della pagina che farebbe da logout?
 |  | 
	
		| Top |  | 
	
		|  | 
	
		|  |