Newsgroup: it.comp.www.php
Titolo: problema conteggio download file

Salve a tutti,
Sto creando un piccolo script per il conteggio del numero di download di un 
file.
ecco:
****** INIZIO CODICE *******
$db_host = "xxxxxxx";
$db_user = "xxxxxxxx";
$db_password = "xxxxxxx";
$db_name = "xxxxxxxx";
$db = mysql_connect($db_host, $db_user, $db_password);
mysql_select_db($db_name, $db);
$query = "SELECT numero_download FROM tts_counter WHERE 
nome_programma='xprivacy'";
$result = mysql_query($query, $db);
$row = mysql_fetch_array($result);
// prende l' attuale numero di download e poi lo incrementa di uno
$download = $row[numero_download];
$download++;
// aggiornamento conteggio download
$query2 = "UPDATE `tts_filecounter` SET `numero_download` = '$download' 
WHERE `ID` =1;";
$result2 = mysql_query($query2, $db);
mysql_close($db);
// fa partire il download effettivo
header("Location: 
http://www.thetotalsite.it/Sct/Informatica/programmazione/prg/xprivacy/betas/XPrivacyNitrogenBeta2b_Setup.exe
");
***** FINE CODICE *****
Mi da questi due errori:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result 
resource in 
/home/
thetotalsite.it/Sct/Informatica/programmazione/prg/xprivacy/download.php
 
on line 24
Warning: Cannot modify header information - headers already sent by (output 
started at 
/home/
thetotalsite.it/Sct/Informatica/programmazione/prg/xprivacy/download.php:10
) 
in 
/home/
thetotalsite.it/Sct/Informatica/programmazione/prg/xprivacy/download.php
 
on line 38
Cosa sbaglio?
Bye,
-- 
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
Webmaster di The Total Site 4 : 
http://www.thetotalsite.it
My Blog: 
http://blog.thetotalsite.it
MariokartDS Codice Amico: 532639027909 - CarmineC in MarioKartDS
Se un circuito funziona al primo tentativo è perchè il problema è molto più 
nascosto
e subdolo di quanto tu possa pensare...
E apparirà nel momento in cui farà il massimo danno 

Dopo dura riflessione, Carmine [
www.thetotalsite.it
] ha scritto :

Intanto il secondo errore e' una conseguenza del primo.
Gli apici che hai usato mi paiono quelli presi da phpMyAdmin, a volte 
danno problemi.
In ogni caso, non hai bisogno di fare due query, ll'update puoi farlo 
direttamente cosi':
$query2 = "UPDATE tts_filecounter SET numero_download=numero_download+1 
WHERE ID=1;";
-- 
Lello Vitello
cantautore alla bona
www.lellovitello.it

 numero_download=numero_download+1 WHERE ID=1;";
Ok, ho fatto così, ora il primo errore è scomparso.
Ma il secondo c'è ancora!!!
Come mai???


 Come mai???
"Cannot modify header information": vuol dire che cerchi di fare un 
redirect (header:Location...) dopo che hai gia' fatto eseguire un 
output al browser. Per eseguire un redirect, non puoi fare scrivere 
niente prima!


 niente prima!
O_O!
E come faccio allora???
Come faccio a far scaricare il file dopo aver fatto il conteggio???


 Come faccio a far scaricare il file dopo aver fatto il conteggio???
Beh, ristruttura un po', cambia la logica, dividi lo script in piu' 
pagine...


 pagine...
???
E se lo divido in più pagine, a che servirebbe?
Che logica dovrei usare?
Bye.


 Che logica dovrei usare?
Premetto che il codice non lo ho visto con tanta concentrazione (saranno 
pure 40 gradi qua!).
Ma andiamo avanti:
Ma che versione di PHP usi?
Comunque, controlla che in nessun caso invii una sola riga di output prima 
dell'header location. Poi, dopo l'header location, inserisci la chiamata a 
exit (o "die" se il nome fa più scena :-) ).
Per "nessuna riga di output" intendo proprio NESSUNA NESSUNA, nemmeno un a 
capo, esempio:
-----------qui inizia il file
<?php
header("Location: ...");
exit;
?>
Questo ti darà errore, perché prima del tag "<?php" c'è una riga vuota. Idem 
devi fare attenzione a non usare alcun "echo" o simili prima dell'header. 
Inoltre potresti mettere a tacere gli eventuali errori con il simbolo @ 
(leggi il manuale per info).
Altra strada percorribile in genere, è ob_start()/ob_end()/ob_flush(), ma 
leggi il manuale (come sempre :-) ) per dettagli circa il loro uso.
Facci sapere poi come va.
rob4you
www.outofmind.eu
 

Risolto!
Mi ero dimenticato i tag <html> <head> ecc... in cima alla pagina!
Ora funziona!
Bye,
