Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
modificare file online.php
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet
Precedente :: Successivo  
Autore Messaggio
giulio3x
Eroe
Eroe


Registrato: 09/08/08 12:35
Messaggi: 52
Residenza: Ovest provincia di Treviso

MessaggioInviato: 23 Nov 2008 00:32    Oggetto: modificare file online.php Rispondi citando

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
Profilo Invia messaggio privato HomePage
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 21:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 25 Nov 2008 01:47    Oggetto: Rispondi citando

Ciao,
potresti esser più preciso?
Inoltre per cortesia utilizza il tag "Code" per wrappare il codice.

Saluti
Top
Profilo Invia messaggio privato
giulio3x
Eroe
Eroe


Registrato: 09/08/08 12:35
Messaggi: 52
Residenza: Ovest provincia di Treviso

MessaggioInviato: 25 Nov 2008 20:44    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato HomePage
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 21:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 25 Nov 2008 21:44    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
giulio3x
Eroe
Eroe


Registrato: 09/08/08 12:35
Messaggi: 52
Residenza: Ovest provincia di Treviso

MessaggioInviato: 25 Nov 2008 23:23    Oggetto: Rispondi citando

era proprio quello che cercavo di fare da molto tempo, ti ringrazio molto! Very Happy
Top
Profilo Invia messaggio privato HomePage
giulio3x
Eroe
Eroe


Registrato: 09/08/08 12:35
Messaggi: 52
Residenza: Ovest provincia di Treviso

MessaggioInviato: 26 Nov 2008 22:52    Oggetto: Rispondi

giulio3x ha scritto:
era proprio quello che cercavo di fare da molto tempo, ti ringrazio molto! Very Happy


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
Profilo Invia messaggio privato HomePage
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi