Newsgroup: it.comp.www.php
Titolo: incremento variabile

Sono nuovo al PHP, quindi mi scuserete.       :-)
Proprio qui, qualche giorno fa parlavamo di questo script:
<?
if(getenv("HTTP_X_FORWARDED_FOR")){ 
$ip=getenv("HTTP_X_FORWARDED_FOR"); 
}else{ 
$ip=getenv("REMOTE_ADDR"); 
} 
$nomefile = "sinisreport.txt";
$oggi = (date("l dS of F Y ( h:i:s A )", time()));
$fp = fopen($nomefile, "a+");
$contenuto = "\n".$oggi."\n".$ip."\n";
fwrite($fp, $contenuto);
fclose($fp);
?>
In sostanza scrive in un file di testo l'indirizzo IP di provenienza e la data.
Ora vorrei aggiungere a ciò che viene scritto (nella variabile $contenuto) un numero progressivo.
Ho provato con:
$contatore++;
$contenitore=$contatore;
posto nello spazio che vedete in bianco al centro dello script
e aggiungendo poi a $contenuto anche la variabile $contenitore che nelle mie intenzioni doveva fare da contatore
(--> $contenuto = $contenitore."\n".$oggi."\n".$ip."\n";)
Cosa che non succede, perché ottengo sempre 1... il che significa che viene contato solo l'incremento dato da $contatore++, nulla più...
Come fare perché il conteggio avvenga davvero progressivamente e non solo una volta per sessione?
Grazie,
Mauro nb

dovevi mettere all'inizio
$contatore=0
ecc ecc ecc
$contatore++
In questo modo li hai in numero progressivo
-- 
Se qualcosa va male non preoccuparti. Domani andrà peggio

 wrote in message
bhok5j$36i$1...@newsreader.mailgate.org...


ho appena provato come dici e purtroppo non va:
da zero l'incremento è sempre di uno, poi si riazzera tutte le volte.
Devo dire che ho provato anche con un if in precedenza ma senza risultati.
Sto utilizzando, per maggiore informazione, PHP4
Ciao, grazie,
Mauro nb

 ;-)
Non è che quel $contatore devi renderlo variabile globale?
Sennò il php mica se lo ricorda e tutte le volte che esegui lo script
riparte da 0...
Poi io sono ignorante e sicuramente sbaglio, ma magari è un'ovvietà a cui
non hai pensato :D
Almeno, così a occhio.... :D

 una volta per sessione?
Se il file su cui salvi queste informazioni ancora non esiste, allora
significa che chi si è collegato è il primo utente ed allore gli salvi
come numero progressivo 1. Se il file esiste, allora lo script deve
prelevare il numero progressivo dell'ultimo utente memorizzato nel file,
aggiungervi 1 e poi memorizzare le nuove righe nel solito file. E così
via...
Più o meno così:
$filename = 'sinisreport.txt';
if (file_exists($filename)) {
	# leggi il file e recuperi il numero progressivo dell'ultimo utente
	# e lo metti, per esempio, in $last_count.
	$contatore = $last_count + 1;
	# e poi salvi tutti i dati che vuoi nel file come hai già fatto.
} else {
	$contatore = 1;
	# e poi salvi tutti i dati che vuoi nel file come hai già fatto.
}
Non so, probabilmente, ti è necessario ed allora lascia perdere, ma se
così non fosse per separare i dati di ciascun utente utilizzerei non il
newline \n, ma per esempio il ; in questo modo i dati di ogni utente li
hai su una sola riga e sono, a mio parere, un po' più facilmente
gestibili.
Ciao.
-- 
Federico R.

Grazie Federico,
ho provato in questa maniera ma non sembra funzionare,
nel senso che ottengo sempre 1:
<?
if(getenv("HTTP_X_FORWARDED_FOR")){ 
$ip=getenv("HTTP_X_FORWARDED_FOR"); 
}else{ 
$ip=getenv("REMOTE_ADDR"); 
} 
$nomefile = "sinisreport.txt";
if(file_exists($nomefile)) {
$contatore = $last_count + 1;}
else {$contatore = 1;}
$oggi = (date("l dS of F Y ( h:i:s A )", time()));
$fp = fopen($nomefile, "a+");
$contenuto = $contatore."\n".$oggi."\n".$ip."\n";
fwrite($fp, $contenuto);
fclose($fp);
?>
Ciao,
Mauro nb

 $contatore = $last_count + 1;}
Ma dentro $last_count hai memorizzato il numero progressivo dell'ultimo
utente che si č collegato alla pagina? Perchč se cosě non fosse
$last_count sarebbe pari a 0 e quindi $contatore = 1 in ogni caso.
Prova cosě:
if (file_exists($filename)) {
	$rows = file($filename);
	$contenuto = $rows[count($rows)-3] + 1;
} else {
	$contenuto = 1;
}
E poi salvi come sempre.
Ciao.
-- 
Federico R.

 	$contenuto = 1;
Ops... ho usato $contenuto al posto di $contatore.
Doveva essere cosě:
if (file_exists($filename)) {
	$rows = file($filename);
	$contatore = $rows[count($rows)-3] + 1;
} else {
	$contatore = 1;
}
-- 
Federico R.

 }
adesso lo provo, scusami per il tempo che ti faccio perdere
Mauro nb

Grazie Federico,
ha funzionato con il seguente codice:
<?
if(getenv("HTTP_X_FORWARDED_FOR")){ 
$ip=getenv("HTTP_X_FORWARDED_FOR"); 
}else{ 
$ip=getenv("REMOTE_ADDR"); 
} 
$nomefile = "sinisreport.txt";
if (file_exists($nomefile)) {
$rows = file($nomefile);
$contatore = $rows[count($rows)-3] + 1;
} else {
$contatore = 1;
}
$oggi = (date("l dS of F Y ( h:i:s A )", time()));
$fp = fopen($nomefile, "a+");
$contenuto = $contatore."\n".$oggi."\n".$ip."\n";
fwrite($fp, $contenuto);
fclose($fp);
?>
Non sono certo di aver capito cosa fai qui:
if (file_exists($nomefile)) {
$rows = file($nomefile);
$contatore = $rows[count($rows)-3] + 1;
} else {
$contatore = 1;
}
ma, visto che sono in fase di studio,
non c'č niente di meglio (credo) che apprendere da quello che si sta facendo
Molte grazie,
Mauro nb

 non c'č niente di meglio (credo) che apprendere da quello che si sta facendo
Cerca nel manuale le funzioni file() e count(). E poi prova ad usarle.
Ciao.
-- 
Federico R.

lo dicevo anche perché credo che si generi una qualche forma di conflitto.
Il mio file deve per forza cominciare con &vardiflash= (scritta manualmente
prima dell'upload), poiché i dati devono essere recuperati dall'oggetto
loadVars di FlashMX.
Alla prova pratica, se cerco di ottenere i dati in questo modo, la variabile
$contatore non si incrementa più, e torna ad essere 1 per tutti gli
ingressi. Forse ci sarebbe bisogno di un sistema per far sì che php non
leggesse &vardiflash=.
Grazie di tutto,
Mauro nb


 $contatore non si incrementa piů
Quale modo? Non puoi prima aggiornare i dati in php e poi farli
prelevare dall'oggetto loadVars?
Mi spiace, ma di piů non so dirti. Flash non lo conosco granchč.
Ciao.
-- 
Federico R.

 wrote in message
pszwrkz9fylq.e...@40tude.net...
