Newsgroup: it.comp.www.php
Titolo: Gestione degli errori e mysql_connect - riprovo

Salve a tutti,
go gia' postato questo messaggio, ma, non avendo avuto risposte,
ritento :)
Ho una pagina error.php che visualizza un messaggio d'errore e che
richiamo in quest modo:
header("location:error.php");
quando si verifica un errore, ad es.
if ($results = @mysql_query("$sql_statm", $conn))
	.............................
else
	error_handler();
In questo caso se l'esecuzione della query non va a buon fine richiamo
la funzione error_handler(), che contiene solamente l'istruzione:
header("location:error.php");
Se pero' provo a fare lo stesso quando mi connetto al server MySQL la
cosa non funziona:
$conn = @mysql_connect($server, $user);
if ($conn > 0) // se la connessione va a buon fine $conn e' > di 0
	..................
else
	error_handler();
se infatti il server MySQL non e' attivo il browser:
continua a caricare senza visualizzare output e senza richiamare
error.php (questo e' il comportamento di IE)
oppure visualizza error.php nella barra degli indirizzi ma come output
Apache  scrive:
The document has moved here.
Dove here e' un link a error.php (questo e' il comportamento di NS)
Il tutto sotto Win95+Apache+MySQL+PHP
Avete una soluzione? :)
Grazie.
Lupin
-------------------------
http://www.antiloco.com/
<la directory del Web developing>
----------------------------------
Rimuovere XXX per rispondere via e-mail

header("location:error.php");
Diciamo:
	ob_comesichiama_clean();	// Perche', senza buffering...
	Header("Location: error.php");
...provato ora e funzionante con IE, NS ed Opera.
Leonardo
-- 
".signature": bad command or file name


wrote:

Niente da fare, con me non funziona, ecco le funzione (la uso per
generalizzare la connessione ai DB):
function connect_db($server, $user, $password){
	$conn = @mysql_connect($server, $user, $password);
		if ($conn > 0)
			return $conn;
	else
		error_handler();
	}
Se provo a buttar giu' il server MySQL il browser va in stallo......
Questa e' error_handler:
function error_handler(){
	ob_end_clean();
	header("Location: error.php");
	}
Mentre con questa funzione:
function execute_db($sql_statm, $conn){
	if ($results = @mysql_query("$sql_statm", $conn))
		return $results;
	else
		error_handler();
	}
Il tutto funziona, ovvero se una query non va a buon fine viene
caricata la pagina error.php
Come mai?


		if ($conn > 0)
Sei sicuro che $conn sia un numero e che sia maggiore di zero? Non
potrebbe essere qualcos'altro?
Eventualmente togli tutti i bufferings e gli @ e riprova... e vedi
se cosi' compare un errore comprensibile.


se cosi' compare un errore comprensibile.
Si' se tolgo @ da mysql_connect mi da' questo Warning:
Warning: MySQL Connection Failed: Can't connect to MySQL server on
'localhost'......
Non ho capito bene pero' perche' mi hai consigliato di usare
ob_end_clean(); prima di header("Location: error.php");, perche' va
cancellato il buffer?
Grazie.


cancellato il buffer?
Per essere sicuri che L'UNICA cosa che viene spedita al browser
sia il Location.


	}
E' stranissimo, l'errore non e' nel controllo di $conn, infatti ho
provato a fare cosi':
function connect_db($server, $user, $password){
error_handler();
	/*$conn = @mysql_connect($server, $user, $password);
	if ($conn != NULL)
		return $conn;
	else
		error_handler();*/
	}
praticamente la funzione connect_db richiama solo error_handler()
function error_handler(){
	ob_end_clean();
	header("Location: error.php");
	}
e il browser va in stallo ugualmente!!
Invece se chiamo error_handler() non dall'interno di una funzione ma
dalla pagina PHP corrente funziona.
Da notare che (se puo' influire) le due funzioni sopra sono contenute
in un file incluso e la porzione di codice che richiama
connect_db($server, $user, $password) e' in un'altro file, anch'esso
incluso; poi (sempre se puo' influire) uso la classe FastTemplate per
"costruire" le pagine.


e il browser va in stallo ugualmente!!
Prova a connetterti al server usando TELNET:
	telnet server 80
	GET /path/del/file.php3 HTTP/1.0<invio><invio>
e guarda cosa arriva. In realta' sarebbe meglio usare WebLog o
direttamente NetCat, ma una prova brutale si puo' fare cosi'.


On Thu, 22 Feb 2001 21:58:30 GMT, 
euge...@libero.it
 (Lupin) wrote:

Sulla console mi visualizza il sorgente del file e, alla fine,
<HTML>
<HEAD><TITLE>An Error Occurred</TITLE></HEAD>
<BODY>
<H1>An Error Occurred</h1>
404 Object Not Found
</BODY>
</HTML>
ma questo non solo con error.php, ho provato anche con altri file e il
risultato e' lo stesso.
