modifica di più record contemporaneamente

  • Creatore Discussione Creatore Discussione IImanuII
  • Data di inizio Data di inizio
Non funziona o meglio funziona in parte. Ho fatto così:

PHP:
function controllo($dati){ 
    $dati=array_map("trim", $dati); //elimini eventuali caratteri es spazio 
    foreach ($dati as $val) { 
        if ($val != ""){ 
            $error.= "errore $val </br>"; 
            if ($error !=""){ 
                return $error; 
            } 
        } 
    } 
} 
    echo controllo($titolo);  
    echo controllo($genere);  
    echo controllo($trama);  
    echo controllo($locandina);  
    echo controllo($stream);

Non so perchè prende in considerazione solo i primi valori dell'array.

Ho provato a fare in quest'altro modo e funziona. Tuttavia non so come terminare (die; o exit;) la pagina se trova i campi vuoti.

PHP:
	function controllo($dati){
	$dati=array_map("trim", $dati);
	$error="";
        foreach ($dati as $dato) {
			if (!count($dato)){
				$error.="Vuoto $dato <br/>";
			}
        }
	if($error !=""){
		echo $error;
	}	
    }
    
    echo controllo($titolo); 
    echo controllo($genere); 
    echo controllo($trama); 
    echo controllo($locandina); 
    echo controllo($stream);

Se inserisco exit; qui
PHP:
	if($error !=""){
		echo $error;
                exit;
	}
Non prosegue con la stampa di tutti i gli errori che trova ma si ferma solo al primo. Se metto tale if al di fuori della funzione, la variabile $error la vede sempre vuota.

Per meglio farti comprendere tutto sto casino ti posto una pagina di test provala in locale o dove ti pare e capirai ^_^:

PHP:
<?php
//creo l'array con i campi vuoti
	$OLD   = array();
	$OLD[] = "";
	$OLD[] = "";
	$OLD[] = "";
	$OLD[] = "";
	
	$OLD2   = array();
	$OLD2[] = "";
	$OLD2[] = "";
	$OLD2[] = "";
	$OLD2[] = "";

//da tale funzione vorrei che identificare quali sono i campi vuoti
//stampare TUTTI i campi che risultano vuoti
//e poi far morire la pagina evitando che si esegua altro codice.	
	function controllo($dati){
	$dati=array_map("trim", $dati);
	$error="";
        foreach ($dati as $dato) {
			if (count($dato)){
				$error.="Vuoto $dato <br/>";
			}
        }
	if($error !=""){
		echo $error;
		
	}	
    }
    
    echo controllo($OLD);
	echo controllo($OLD2);
	
	echo "Non devo essere visto dopo la stampa dei 4 array errati";
?>
 
Ultima modifica:
Borgo qui mi sono espresso male
PHP:
echo "Non devo essere visto dopo la stampa dei 4 array errati";

Doveva essere
PHP:
echo "Non devo essere visto dopo la stampa DI TUTTI gli array vuoti";

In definitiva la fattispecie che mi ritrovo ad affrontare è
PHP:
<?php
//creo l'array con i campi vuoti
    $OLD   = array();
    $OLD[] = "";
    $OLD[] = "";
    $OLD[] = "";
    $OLD[] = "";
    
    $OLD2   = array();
    $OLD2[] = "";
    $OLD2[] = "";
    $OLD2[] = "";
    $OLD2[] = "";

//da tale funzione vorrei che identificare quali sono i campi vuoti
//stampare TUTTI i campi che risultano vuoti
//e poi far morire la pagina evitando che si esegua altro codice.    
    function controllo($dati){
    $dati=array_map("trim", $dati);
    $error="";
        foreach ($dati as $dato) {
            if (count($dato)){
                $error.="Vuoto $dato <br/>";
            }
        }
    if($error !=""){
        echo $error;
        
    }    
    }
    
    echo controllo($OLD);
    echo controllo($OLD2);
    
	echo "Non devo essere visto dopo la stampa DI TUTTI gli array vuoti";
?>
 
Tranquillissimo Borgo, e ovviamente grazie ^_^ intanto passo la serata a leggermi la dieta Dukan che in 2 anni sono stato capace di prendere 20 kg :V
 
ciao
scusa vorrei capire meglio considerando l'esempio che hai fatto
$OLD = array();
$OLD[] = "";
$OLD[] = "";
$OLD[] = "";
$OLD[] = "";

$OLD2 = array();
$OLD2[] = "";
$OLD2[] = "";
$OLD2[] = "";
$OLD2[] = "";
se old e old2 sono tutti vuoti (immagino che rappresentino i valori $titolo, $genere, $trama, $locandina, $stream)
allora devo tornare sensa eseguire nulla al form, mentre se es
$OLD = array();
$OLD[] = "pinco";
$OLD[] = "";
$OLD[] = "";
$OLD[] = "";

$OLD2 = array();
$OLD2[] = "";
$OLD2[] = "";
$OLD2[] = "";
$OLD2[] = "";
devo uppare pinco e mostrare cosa è rimasto vuoto
è così?
se è così devo pensarci un attimo

p.s.
meglio prendere che lasciare
 
La mia idea era che solo i campi vuoti venissero mostrati: gli altri campi inseriti correttamente venissero lasciati perdere. Dopo tale script metterei la funzione che esegue la query, quindi il mio intento è bloccare questa funzione per il controllo cosicché dopo non venga eseguita la query altrimenti mi ritroverei ad avere campi vuoti all'interno del db.

Ho modificato ancora un pochino la function associando ad ogni array un nome cosicché so qual'è il campo vuoto:
PHP:
<?php
//creo l'array con i campi vuoti
    $OLD   = array();
    $OLD[] = "";
    $OLD[] = "";
    $OLD[] = "";
    $OLD[] = "";
    
    $OLD2   = array();
    $OLD2[] = "";
    $OLD2[] = "";
    $OLD2[] = "";
    $OLD2[] = "";

//da tale funzione vorrei che identificare quali sono i campi vuoti
//stampare TUTTI i campi che risultano vuoti
//e poi far morire la pagina evitando che si esegua altro codice.    
	function controllo($dati, $nome_campo){
		$dati=array_map("trim", $dati);
		$error="";
			foreach ($dati as $dato) {
				if (count($dato)){
					$error.="Vuoto $nome_campo <br/>";
				}
			}
		if($error !=""){
			echo $error;
		}
    }
    
    echo controllo($OLD, "Trama");  
    echo controllo($OLD2, "Link"); 	
    
	echo "Non devo essere visto dopo la stampa DI TUTTI gli array vuoti";
?>

A parte questo, per fare ciò che vorrei secondo me basterebbe valorizzare la variabile $error al di fuori della funzione. Solo che se vedo $error con un var_dump al di fuori della funzioneda sempre valore null.

In realtà una soluzione l'avrei ma è davvero poco elegante e "dispersiva": secondo me all'interno della funzione basterebbe scrivere gli errori all'interno di un file .txt. Dopo al di fuori della funzione si verifica se tale .txt è scritto o è vuoto: se è scritto ed esiste ne leggi il contenuto e con un bottone che ti porta indietro lo svuoti e lo elimini. Se non esiste oppure esiste ed è vuoto invece prosegui normalmente.

Tuttavia tale soluzione non la prediligo per nulla, infatti preferisco tenere il codice così com'è e bloccarlo con un exit dopo echo $error; In tal modo si ferma al primo vuoto che trova, ma come si dice, chi si accontenta gode così così XD

Tu hai soluzioni? E se si provasse a creare un array di error[]? Si potrebbe far scorrere e stampare tutto il ciclo all'interno della funzione e poi bloccarlo no? Non saprei come fare in tal caso U.u

Borgo non finirò mai di ringraziare te e tutti gli altri per il supporto che date qui xD
 
ciao
mi è venuta un'idea bislacca (e non so se funzi)
in questo modo se il valore è pieno uppa se è vuoto non uppa,
poi ti dice se tutti vuoti, se tutti uppati e eventualmente quali uppati e quali no
PHP:
<?php
function controllo($id, $dati, $nome_campo){
	$dati = array_map("trim", $dati);
	$dati = array_map('mysql_real_escape_string', $dati);
	$da_uppare = array_combine($id, $dati);//creo l'array per l'uppaggio
	$quanti=count($da_uppare);
	$si_upp=0;//metto a zero i contatori
	$no_upp=0;
	foreach($da_uppare as $chiave => $valore){
		if($valore !=""){//uppi solo se il valore non è vuoto
			$q="UPDATE Films SET $nome_campo = $valore WHERE id = $chiave";
			//mysql_query($q);
			/*qui ci potrebbe stare un al posto della quary diretta
			if(mysql_query($q){
			*/
			$uppato[]="aggiornato campo $nome_campo id $chiave a nuovo valore $valore";
			$si_upp++;
			/*
			e il suo else
			}else{
				$non_uppato[]="ERRORE: il valore con id $chiave campo $nome_campo, non aggiornato";
				$no_upp++;
			}
			*/
		}else{
			$non_uppato[]="il valore con id $chiave campo $nome_campo è vuoto, non aggiornato";
			$no_upp++;
		}
		if($si_upp == 0){//tutti i valori sono vuoti
			echo "tutti i $no_upp valori sono vuoti, i campi $nome_campo non sono stati aggiornati<br />";
			//se vuoi visualizzi quali con un foreach di $non_uppato[], ma secondo me non servirebbe
			
		}else{
			if($si_upp == $quanti){//tutti i campi sono stati aggiornati
				echo "tutti i $quanti campi $nome_campo sono stati aggiornati<br />";
			}else{//alcuni aggiornati altri no
				echo "$si_upp campi $nome_campo sono stati aggiornati, $no_upp non aggiornati<br />";
				//e qui fai vedere quali si e quali no
				for($k=0;$k < count($uppato);$k++){//mostri gli uppati
					echo $uppato[$k]."<br />";
				}
				for($k=0;$k < count($non_uppato);$k++){//mostri i non uppati
					echo $non_uppato[$k]."<br />";
				}
			}
		
		}
	}
}//fine function
//dati connessione
if(isset($_POST['mod_film'])){
	controllo($_POST['id'], $_POST['titolo'], "titolo");
	controllo($_POST['id'], $_POST['genere'], "genere");
	controllo($_POST['id'], $_POST['trama'], "descrizione");
	controllo($_POST['id'], $_POST['locandina'], "locandina");
	controllo($_POST['id'], $_POST['stream'], "link");
}
?>
if: se vuoi provala (a parte) considerando pero che forse va migliorata e corretta, l'ho buttata giu così di getto
else: cestina il tutto
 
ciao
mi è venuta un'idea bislacca (e non so se funzi)
in questo modo se il valore è pieno uppa se è vuoto non uppa,
poi ti dice se tutti vuoti, se tutti uppati e eventualmente quali uppati e quali no
PHP:
<?php
function controllo($id, $dati, $nome_campo){
	$dati = array_map("trim", $dati);
	$dati = array_map('mysql_real_escape_string', $dati);
	$da_uppare = array_combine($id, $dati);//creo l'array per l'uppaggio
	$quanti=count($da_uppare);
	$si_upp=0;//metto a zero i contatori
	$no_upp=0;
	foreach($da_uppare as $chiave => $valore){
		if($valore !=""){//uppi solo se il valore non è vuoto
			$q="UPDATE Films SET $nome_campo = $valore WHERE id = $chiave";
			//mysql_query($q);
			/*qui ci potrebbe stare un al posto della quary diretta
			if(mysql_query($q){
			*/
			$uppato[]="aggiornato campo $nome_campo id $chiave a nuovo valore $valore";
			$si_upp++;
			/*
			e il suo else
			}else{
				$non_uppato[]="ERRORE: il valore con id $chiave campo $nome_campo, non aggiornato";
				$no_upp++;
			}
			*/
		}else{
			$non_uppato[]="il valore con id $chiave campo $nome_campo è vuoto, non aggiornato";
			$no_upp++;
		}
		if($si_upp == 0){//tutti i valori sono vuoti
			echo "tutti i $no_upp valori sono vuoti, i campi $nome_campo non sono stati aggiornati<br />";
			//se vuoi visualizzi quali con un foreach di $non_uppato[], ma secondo me non servirebbe
			
		}else{
			if($si_upp == $quanti){//tutti i campi sono stati aggiornati
				echo "tutti i $quanti campi $nome_campo sono stati aggiornati<br />";
			}else{//alcuni aggiornati altri no
				echo "$si_upp campi $nome_campo sono stati aggiornati, $no_upp non aggiornati<br />";
				//e qui fai vedere quali si e quali no
				for($k=0;$k < count($uppato);$k++){//mostri gli uppati
					echo $uppato[$k]."<br />";
				}
				for($k=0;$k < count($non_uppato);$k++){//mostri i non uppati
					echo $non_uppato[$k]."<br />";
				}
			}
		
		}
	}
}//fine function
//dati connessione
if(isset($_POST['mod_film'])){
	controllo($_POST['id'], $_POST['titolo'], "titolo");
	controllo($_POST['id'], $_POST['genere'], "genere");
	controllo($_POST['id'], $_POST['trama'], "descrizione");
	controllo($_POST['id'], $_POST['locandina'], "locandina");
	controllo($_POST['id'], $_POST['stream'], "link");
}
?>
if: se vuoi provala (a parte) considerando pero che forse va migliorata e corretta, l'ho buttata giu così di getto
else: cestina il tutto

Da un primo occhio credo di aver capito cosa vuoi fare. Quando posso la provo la completo e ti faccio sapere.
 
Borgo credo funzioni ma non ne sono certo, l'ho testata su una pagina di test :P te la posto magari mi puoi dare una mano a comprendere i risultati, anche perché li vedo tutti scombinati... :quote:
PHP:
<?php
//creo l'array con i campi vuoti
    $titolo   = array();
    $titolo[] = "titolo 1 pieno";
    $titolo[] = "";
    $titolo[] = "titolo 3 pieno";
    $titolo[] = "";
    
    $trama   = array();
    $trama[] = "";
    $trama[] = "trama 2 pieno";
    $trama[] = "";
    $trama[] = "trama 4 pieno";
	
	$num   = array();
    $num[] = "1";
    $num[] = "2";
    $num[] = "3";
    $num[] = "4";
 
function controllo($id, $dati, $nome_campo){ 
    $dati = array_map("trim", $dati); 
    //$dati = array_map('mysql_real_escape_string', $dati); 
    $da_uppare = array_combine($id, $dati);//creo l'array per l'uppaggio 
    $quanti=count($da_uppare); 
    $si_upp=0;//metto a zero i contatori 
    $no_upp=0; 
    foreach($da_uppare as $chiave => $valore){ 
        if($valore !=""){//uppi solo se il valore non è vuoto 
            $q="UPDATE Films SET $nome_campo = $valore WHERE id = $chiave"; 
            //mysql_query($q); 
            /*qui ci potrebbe stare un al posto della quary diretta 
            if(mysql_query($q){ 
            */ 
            $uppato[]="aggiornato campo $nome_campo id $chiave a nuovo valore $valore"; 
            $si_upp++; 
            /* 
            e il suo else 
            }else{ 
                $non_uppato[]="ERRORE: il valore con id $chiave campo $nome_campo, non aggiornato"; 
                $no_upp++; 
            } 
            */ 
        }else{ 
            $non_uppato[]="il valore con id $chiave campo $nome_campo è vuoto, non aggiornato"; 
            $no_upp++; 
        } 
        if($si_upp == 0){//tutti i valori sono vuoti 
            echo "tutti i $no_upp valori sono vuoti, i campi $nome_campo non sono stati aggiornati<br />"; 
            //se vuoi visualizzi quali con un foreach di $non_uppato[], ma secondo me non servirebbe 
             
        }else{ 
            if($si_upp == $quanti){//tutti i campi sono stati aggiornati 
                echo "tutti i $quanti campi $nome_campo sono stati aggiornati<br />"; 
            }else{//alcuni aggiornati altri no 
                echo "$si_upp campi $nome_campo sono stati aggiornati, $no_upp non aggiornati<br />"; 
                //e qui fai vedere quali si e quali no 
                for($k=0;$k < count($uppato);$k++){//mostri gli uppati 
                    echo $uppato[$k]."<br />"; 
                } 
                for($k=0;$k < count($non_uppato);$k++){//mostri i non uppati 
                    echo $non_uppato[$k]."<br />"; 
                } 
            } 
         
        } 
    } 
}//fine function 
//dati connessione 

	echo controllo($num,$titolo,"titolo"); 
	echo controllo($num,$trama,"trama"); 

/*if(isset($_POST['mod_film'])){ 
    controllo($_POST['id'], $_POST['titolo'], "titolo"); 
    controllo($_POST['id'], $_POST['genere'], "genere"); 
    controllo($_POST['id'], $_POST['trama'], "descrizione"); 
    controllo($_POST['id'], $_POST['locandina'], "locandina"); 
    controllo($_POST['id'], $_POST['stream'], "link"); 
} */


?>

l'output a video è questo:

Codice:
1 campi titolo sono stati aggiornati, 0 non aggiornati
aggiornato campo titolo id 1 a nuovo valore titolo 1 pieno
1 campi titolo sono stati aggiornati, 1 non aggiornati
aggiornato campo titolo id 1 a nuovo valore titolo 1 pieno
il valore con id 2 campo titolo è vuoto, non aggiornato
2 campi titolo sono stati aggiornati, 1 non aggiornati
aggiornato campo titolo id 1 a nuovo valore titolo 1 pieno
aggiornato campo titolo id 3 a nuovo valore titolo 3 pieno
il valore con id 2 campo titolo è vuoto, non aggiornato
2 campi titolo sono stati aggiornati, 2 non aggiornati
aggiornato campo titolo id 1 a nuovo valore titolo 1 pieno
aggiornato campo titolo id 3 a nuovo valore titolo 3 pieno
il valore con id 2 campo titolo è vuoto, non aggiornato
il valore con id 4 campo titolo è vuoto, non aggiornato
tutti i 1 valori sono vuoti, i campi trama non sono stati aggiornati
1 campi trama sono stati aggiornati, 1 non aggiornati
aggiornato campo trama id 2 a nuovo valore trama 2 pieno
il valore con id 1 campo trama è vuoto, non aggiornato
1 campi trama sono stati aggiornati, 2 non aggiornati
aggiornato campo trama id 2 a nuovo valore trama 2 pieno
il valore con id 1 campo trama è vuoto, non aggiornato
il valore con id 3 campo trama è vuoto, non aggiornato
2 campi trama sono stati aggiornati, 2 non aggiornati
aggiornato campo trama id 2 a nuovo valore trama 2 pieno
aggiornato campo trama id 4 a nuovo valore trama 4 pieno
il valore con id 1 campo trama è vuoto, non aggiornato
il valore con id 3 campo trama è vuoto, non aggiornato
 
ciao
grosso modo direi di si (comunque dovresti provare a guardare il db), prova a farti una tabella di prova perche la parte più importante è che funzi come uppaggio.
se con la tabella di prova funziona poi cercare di mettere a posto la messaggistica è più semplice.
forse è da mettere a punto la visualizzazione dei messaggi in quanto ad ogni giro crea il messaggio, bisognerebbe che venisse fuori solo una sintesi.
poi dove c'è, nelle varie stringhe del messaggio, il carattere è sostituiscilo con &egrave;
 
ciao
grosso modo direi di si (comunque dovresti provare a guardare il db), prova a farti una tabella di prova perche la parte più importante è che funzi come uppaggio.
se con la tabella di prova funziona poi cercare di mettere a posto la messaggistica è più semplice.
forse è da mettere a punto la visualizzazione dei messaggi in quanto ad ogni giro crea il messaggio, bisognerebbe che venisse fuori solo una sintesi.
poi dove c'è, nelle varie stringhe del messaggio, il carattere è sostituiscilo con &egrave;

Con la tabella funziona, rimane solo la messaggistica. Della è grave poco me ne frega i messaggi rientrano in un pagina già dichiarata quindi la è si vede è XD :hammer:
 
ciao
ho spostato una graffa portando fuori i messaggi dal foreach, provalo con il db di prova e sappimi dire
vedi i due commenti con *****
PHP:
<?php
function controllo($id, $dati, $nome_campo){
    $dati = array_map("trim", $dati);
    $dati = array_map('mysql_real_escape_string', $dati);
    $da_uppare = array_combine($id, $dati);//creo l'array per l'uppaggio
    $quanti=count($da_uppare);
    $si_upp=0;//metto a zero i contatori
    $no_upp=0;
    foreach($da_uppare as $chiave => $valore){
        if($valore !=""){//uppi solo se il valore non è vuoto
            $q="UPDATE Films SET $nome_campo = $valore WHERE id = $chiave";
            //mysql_query($q);
            /*qui ci potrebbe stare un al posto della quary diretta
            if(mysql_query($q){
            */
            $uppato[]="aggiornato campo $nome_campo id $chiave a nuovo valore $valore";
            $si_upp++;
            /*
            e il suo else
            }else{
                $non_uppato[]="ERRORE: il valore con id $chiave campo $nome_campo, non aggiornato";
                $no_upp++;
            }
            */
        }else{
            $non_uppato[]="il valore con id $chiave campo $nome_campo è vuoto, non aggiornato";
            $no_upp++;
        }
	}//********prova a mettere qui il fine del foreach
	if($si_upp == 0){//tutti i valori sono vuoti
		echo "tutti i $no_upp valori sono vuoti, i campi $nome_campo non sono stati aggiornati<br />";
		//se vuoi visualizzi quali con un foreach di $non_uppato[], ma secondo me non servirebbe
	}else{
		if($si_upp == $quanti){//tutti i campi sono stati aggiornati
			echo "tutti i $quanti campi $nome_campo sono stati aggiornati<br />";
		}else{//alcuni aggiornati altri no
			echo "$si_upp campi $nome_campo sono stati aggiornati, $no_upp non aggiornati<br />";
			//e qui fai vedere quali si e quali no
			for($k=0;$k < count($uppato);$k++){//mostri gli uppati
				echo $uppato[$k]."<br />";
			}
			for($k=0;$k < count($non_uppato);$k++){//mostri i non uppati
				echo $non_uppato[$k]."<br />";
			}
		}
	}
    //}// *******e toglilo di qui anzi commetalo così è più facile tronare indietro
}//fine function
//dati connessione
if(isset($_POST['mod_film'])){
    controllo($_POST['id'], $_POST['titolo'], "titolo");
    controllo($_POST['id'], $_POST['genere'], "genere");
    controllo($_POST['id'], $_POST['trama'], "descrizione");
    controllo($_POST['id'], $_POST['locandina'], "locandina");
    controllo($_POST['id'], $_POST['stream'], "link");
}
?>
 
Perdona il ritardo con cui rispondo ma ho avuto poco tempo xD

C'è qualcosa che non va: se tolgo i commenti dall'if che controlla l'esecuzione della query non mi modifica i campi.... esce che i campi sono vuoti:

PHP:
function controllo($id, $dati, $nome_campo){ 
    $dati = array_map("trim", $dati); 
    $dati = array_map('mysql_real_escape_string', $dati); 
    $da_uppare = array_combine($id, $dati);//creo l'array per l'uppaggio 
    $quanti=count($da_uppare); 
    $si_upp=0;//metto a zero i contatori 
    $no_upp=0; 
    foreach($da_uppare as $chiave => $valore){ 
        if($valore !=""){//uppi solo se il valore non è vuoto 
            $q="UPDATE Films SET $nome_campo = $valore WHERE id = $chiave"; 
            mysql_query($q); 
            //qui ci potrebbe stare un al posto della quary diretta 
            if(mysql_query($q)){
            $uppato[]="aggiornato campo $nome_campo id $chiave a nuovo valore $valore"; 
            $si_upp++;  
            //e il suo else 
            }else{ 
                $non_uppato[]="ERRORE: il valore con id $chiave campo $nome_campo, non aggiornato"; 
                $no_upp++; 
            } 
        }else{ 
            $non_uppato[]="il valore con id $chiave campo $nome_campo è vuoto, non aggiornato"; 
            $no_upp++; 
        } 
    }//********prova a mettere qui il fine del foreach 
    if($si_upp == 0){//tutti i valori sono vuoti 
        echo "tutti i $no_upp valori sono vuoti, i campi $nome_campo non sono stati aggiornati<br />"; 
        //se vuoi visualizzi quali con un foreach di $non_uppato[], ma secondo me non servirebbe 
    }else{ 
        if($si_upp == $quanti){//tutti i campi sono stati aggiornati 
            echo "tutti i $quanti campi $nome_campo sono stati aggiornati<br />"; 
        }else{//alcuni aggiornati altri no 
            echo "$si_upp campi $nome_campo sono stati aggiornati, $no_upp non aggiornati<br />"; 
            //e qui fai vedere quali si e quali no 
            for($k=0;$k < count($uppato);$k++){//mostri gli uppati 
                echo $uppato[$k]."<br />"; 
            } 
            for($k=0;$k < count($non_uppato);$k++){//mostri i non uppati 
                echo $non_uppato[$k]."<br />"; 
            } 
        } 
    } 
    //}// *******e toglilo di qui anzi commetalo così è più facile tronare indietro 
}//fine function 


    controllo($_POST['id'], $_POST['titolo'], "titolo"); 
    controllo($_POST['id'], $_POST['genere'], "genere"); 
    controllo($_POST['id'], $_POST['trama'], "descrizione"); 
    controllo($_POST['id'], $_POST['locandina'], "locandina"); 
    controllo($_POST['id'], $_POST['stream'], "link");

Probabile che mi sia sfuggito qualcosa nella logica di questo script :S
 
Ultima modifica:
Purtroppo ancora nulla ho fatto così

PHP:
	function controllo($id, $dati, $nome_campo){ 
		$dati = array_map("trim", $dati); 
		$dati = array_map('mysql_real_escape_string', $dati); 
		$da_uppare = array_combine($id, $dati);//creo l'array per l'uppaggio 
		$quanti = count($da_uppare); 
		$si_upp = 0;//metto a zero i contatori 
		$no_upp = 0; 
		
		foreach($da_uppare as $chiave => $valore){ 
			if($valore !=""){//uppi solo se il valore non è vuoto 
				$q="UPDATE Films SET $nome_campo = $valore WHERE id = $chiave"; 
				$result = mysql_query($q); 
				if (!$result) {	/*qui ci potrebbe stare un al posto della quary diretta if(mysql_query($q){ */ 
					$non_uppato[]="ERRORE: il valore con id $chiave campo $nome_campo, non aggiornato"; 
					$no_upp++;
				}else{
					$uppato[]="aggiornato campo $nome_campo id $chiave a nuovo valore $valore"; 
					$si_upp++;
				}
			}else{ 
				$non_uppato[]="il valore con id $chiave campo $nome_campo è vuoto, non aggiornato"; 
				$no_upp++; 
			} 
			if($si_upp == 0){//tutti i valori sono vuoti 
				echo "tutti i $no_upp valori sono vuoti, i campi $nome_campo non sono stati aggiornati<br />"; 
				//se vuoi visualizzi quali con un foreach di $non_uppato[], ma secondo me non servirebbe 
			}else{ 
				if($si_upp == $quanti){//tutti i campi sono stati aggiornati 
					echo "tutti i $quanti campi $nome_campo sono stati aggiornati<br />"; 
				}else{//alcuni aggiornati altri no 
					echo "$si_upp campi $nome_campo sono stati aggiornati, $no_upp non aggiornati<br />"; 
					//e qui fai vedere quali si e quali no 
					for($k=0;$k < count($uppato);$k++){//mostri gli uppati 
						echo $uppato[$k]."<br />"; 
					} 
					for($k=0;$k < count($non_uppato);$k++){//mostri i non uppati 
						echo $non_uppato[$k]."<br />"; 
					} 
				} 
			} 
		} 
	}

    controllo($_POST['id'], $_POST['titolo'], "titolo"); 
    controllo($_POST['id'], $_POST['genere'], "genere"); 
    controllo($_POST['id'], $_POST['trama'], "descrizione"); 
    controllo($_POST['id'], $_POST['locandina'], "locandina"); 
    controllo($_POST['id'], $_POST['stream'], "link");

Ma non lancia proprio le query eppure con l'esempio funzionava
 
Per il momento ho ovviato così

PHP:
if(isset($_POST['mod_film'])){

	$titolo = array_map('mysql_real_escape_string', $_POST['titolo']);
	$genere = array_map('mysql_real_escape_string', $_POST['genere']);
	$trama = array_map('mysql_real_escape_string', $_POST['trama']);
	$locandina = array_map('mysql_real_escape_string', $_POST['locandina']);
	$stream = array_map('mysql_real_escape_string', $_POST['stream']);


    foreach ($_POST['id'] as $numero) { 
        $numero=(int)$numero;//forzo ad intero 
        if (!is_int($numero) || $numero <= 0) {//e se è un id DEVE essere maggiore di 0 
			echo "<font color='red'>Errore</font> - L'id \"" . $_POST['id'] . "\" non è valido: deve essere un numero intero non negativo e diverso da 0."; 
			echo "<meta http-equiv='Refresh' content='8; URL= itf.php'>"; 
			exit;
        } 
    }
	
	function controllo($dati, $nome_campo){ 
		$dati=array_map("trim", $dati); 
		foreach ($dati as $val) { 
			if ($val === ""){ 
				$error.= "<font color='red'>Errore</font> - Non è stato possibile aggiornare i campi. \"$nome_campo\" risulta essere vuoto. Compilarlo e riprovare.<br />"; 
				if ($error !=""){ 
					echo $error;
					echo "<br /><button type=\"button\" id=\"btn\" onclick=\"top.location.href = 'itf.php'\" ><img src=\"../../img/video.png\" align=\"absmiddle\" alt=\"Elenco Film\" /> Elenco Film</button>";
					exit;					
				} 
			} 
		} 
	} 
    echo controllo($titolo, "Titolo");  
    echo controllo($genere, "Genere"); 
    echo controllo($trama, "Trama"); 
    echo controllo($stream, "Link");  
	
	function uppa($il_post,$il_genere,$il_campo){
		$a = array_combine($il_post, $il_genere); 
		foreach ($a as $key => $value) { 
			$q = "UPDATE Films SET $il_campo='$value' WHERE id='$key'"; 
			$result = mysql_query($q); 
			if (!$result) { 
				$errore.="<font color='red'>Errore</font> - non è stato possibile eseguire la query \"$q\"<br />"; 
				$errore.="<p><font color='red'>MySQL Error:</font> " . mysql_error() . "</p>\n"; 
				return $errore;
			}else{ 
				echo "<font color='green'>Successo</font> - Il campo \"$il_campo\" che corrisponde all'id <font color='blue'>$key</font> è stato aggiornato correttamente.<br />"; 
			}
		}
	}
	
	echo uppa($_POST['id'],$titolo,"titolo"); 
	echo uppa($_POST['id'],$genere,"genere"); 
	echo uppa($_POST['id'],$trama,"descrizione"); 
	echo uppa($_POST['id'],$locandina,"locandina"); 
	echo uppa($_POST['id'],$stream,"link");
	
	echo "<br /><button type=\"button\" id=\"btn\" onclick=\"top.location.href = 'itf.php'\" ><img src=\"../../img/video.png\" align=\"absmiddle\" alt=\"Elenco Film\" /> Elenco Film</button>";
}

Il codice da te postato prima non riesco proprio a farlo andare, mi dice sempre che i campi sono vuoti :S
 
Grazie borgo, come al solito tranquillissimo fallo se vuoi quando vuoi e se ti va xD:mexican:
 

Discussioni simili