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 |
|
 |
|