continuare script dopo errore

loreberti10

Utente Attivo
22 Set 2012
43
0
0
ciao a tutti, ho un problema, io ho un form di inserimento immagini, quello che ho fatto è fare un controllo sulla grandezza delle immagini il codice è questo:
PHP:
if(isset($_REQUEST['invia'])){ 
   for($i = 0; $i<11; $i++){ 
   if((!isset($_FILES["foto$i"])) || ($_FILES["foto$i"]["error"] != UPLOAD_ERR_OK)){
     }else{ 
	 if ($_FILES["foto$i"]['size']>450000){
die("Errore: dimensioni del file $i troppo grandi!");
}
	  $ant = 0;
	  $principale = $_POST['principale'];
 if($i == $principale){ $ant = 1;}else{$ant = 0;}

	 $selezione = mysql_select_db($dbname, $conn);
	if ($selezione==FALSE) { echo "errore nel db";} 
	else{
	   $nome_file_temporaneo = $_FILES["foto$i"]["tmp_name"];
      $nome_file_vero = $_FILES["foto$i"]["name"];
      $tipo_file = $_FILES["foto$i"]["type"];
// con questa successiva riga di codice leggo il contenuto del file
$dati_file = mysql_real_escape_string(file_get_contents($nome_file_temporaneo));

$query = "INSERT INTO foto_immobile(idfoto_immobile , foto_immobile , nome_foto_immobile , tipo , dati, principale) VALUES ('' , '$id', '$nome_file_vero' , '$tipo_file' , '$dati_file', '$ant')"; 
              
$risultatofoto = mysql_query ($query , $conn );
				if ($risultatofoto==FALSE) {
					echo "Errore nella query : " . mysql_error();					
				}   else{  
				echo "Immagine $i Inserita<br/>";
			}
		}
	}
}
}

Ora il mio problema è che nello stesso form ho piu input di inserimento, e al primo errore che trova si ferma lo script, cioè se ad esempio la prima immagine è troppo grande lo script si ferma e non aggiunge le altre, io vorrei che se trovasse l'errore lo script continuasse a fare il controllo con l'immagine sotto;
So che il die() ferma lo script, ma anche se inserisco echo/print mi da l'errore :
Codice:
Warning: mysql_query() [function.mysql-query]: MySQL server has gone away in C:\xampp\htdocs\DNA\pubblica_img.php on line 145

Warning: mysql_query() [function.mysql-query]: Error reading result set's header in C:\xampp\htdocs\DNA\pubblica_img.php on line 145
Errore nella query : MySQL server has gone awayerrore nel db
e si ferma...come posso fare per far ripartire il ciclo dall'immagine sotto?
 
Ultima modifica di un moderatore:
Ti posso consigliare un metodo per la gestione degli errori che uso spesso io

Setta un array per gli errori all'inizio dello script
PHP:
$errori = array();

quando subentra un errore aggiungilo
PHP:
if(...errore...) $errori[] = 'errore 1';

e poi fai un controllo alla fine se non ci sono errori prosegui sennò li stampi
PHP:
if(count($errori)>0) echo 'Errori:<br>'.join('<br>',$errori);

else{
 //esegui la query e prosegui
}

Se non dovesse dipende ne da una gestione degli errori sbagliata o dall'utilizzo di die() prova ad aumentare il tempo di timeout di mysql per le query
 
Ti posso consigliare un metodo per la gestione degli errori che uso spesso io

Setta un array per gli errori all'inizio dello script
PHP:
$errori = array();

quando subentra un errore aggiungilo
PHP:
if(...errore...) $errori[] = 'errore 1';

e poi fai un controllo alla fine se non ci sono errori prosegui sennò li stampi
PHP:
if(count($errori)>0) echo 'Errori:<br>'.join('<br>',$errori);

else{
 //esegui la query e prosegui
}

Se non dovesse dipende ne da una gestione degli errori sbagliata o dall'utilizzo di die() prova ad aumentare il tempo di timeout di mysql per le query
Ciao si anche io in genere gestisco gli errori cosi, forse allora è per il timeout del server...ma se modifico il timeout dal file php.ini, andrò in contro ad alcuni problemi quando dovrò caricare sul server la pagina?
 
Ciao si anche io in genere gestisco gli errori cosi, forse allora è per il timeout del server...ma se modifico il timeout dal file php.ini, andrò in contro ad alcuni problemi quando dovrò caricare sul server la pagina?

Non devi modificare il timeout del php.ini ma nella configurazione di mysql, cioè nel my.ini aumenta gradualmente il wait_timeout e il connect_timeout
 
Non devi modificare il timeout del php.ini ma nella configurazione di mysql, cioè nel my.ini aumenta gradualmente il wait_timeout e il connect_timeout

Grazie, sono riuscito senza modificare niente nel file di configurazione, ho utilizzato il metodo che mi hai consigliato, ho fatto l'array e guardato se per particolar indice c'era un errore semplicemente non inserivo...Grazie risolto!
 

Discussioni simili