modifica di più record contemporaneamente

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
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:

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
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";
?>
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
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.
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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;
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
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:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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");
}
?>
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
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:

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
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
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
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
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Grazie borgo, come al solito tranquillissimo fallo se vuoi quando vuoi e se ti va xD:mexican:
 
Discussioni simili
Autore Titolo Forum Risposte Data
K [Visual Basic] Stampa e modifica record non funziona più Visual Basic 0
R Modifica codice per l'upload di più file PHP 1
Trapano [PHP] modifica simultanea di più campi nel db PHP 1
A Script che restituisce il file con data di modifica più recente di una directory PHP 15
D Jquery - modifica elemenento onlick jQuery 1
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
JeiMax Modifica codice php personalizzato PHP 2
P Pagina modifica record che non funziona PHP 0
L Modifica file upload in ASP Classic ASP 2
P modifica colore A Hover link website . WordPress 2
P Modifica con PHP di un node in una sitemap xml PHP 0
C Software modifica sitoweb in tempo reale WordPress 12
G Modifica immagine di sfondo attraverso un bottone PHP 18
L modifica dati. PHP 1
G modifica corretta funzione da eregi() a preg_match() PHP 3
G Modifica testo Photoshop 3
felino Excel: popolare una cella con la data di modifica della riga a cui appartiene Windows e Software 3
felino [Wordpress] Modifica main color del template WordPress 8
M [PHP] Modifica account PHP 3
S [OFFRO] Creazione di programmi per la modifica automatizzata di testi Offerte e Richieste di Lavoro e/o Collaborazione 0
S [OFFRO] Rimozione o aggiunta di Password ai file PDF e opzionalmente loro modifica Offerte e Richieste di Lavoro e/o Collaborazione 2
F [PHP] modifica del body email con checked PHP 8
G Modifica da sito statico HTML a dinamico in Wordpress SEO e Posizionamento 1
Cosina Modifica script textarea jQuery 0
M [PHP] Calcolare costi su modifica orari PHP 4
A [PHP] Modifica caratteri di una query Oracle SQL PHP 0
F modifica recensione google Discussioni Varie 2
C Photoshop CS 6 salvare una modifica Photoshop 0
L [PHP] Modifica in tabella ultimo id PHP 5
C Pagina fb notifica modifica post Social Media Marketing 1
Q Notice: Undefined index: codice in C:\xampp\htdocs\STAGE\calendario\modifica.php on line 10 PHP 8
C [Joomla] [HTML] Modifica codice per adattamento app Joomla 18
Daniele_Carrara [Javascript] Modifica input date Javascript 5
J modifica spooler di stampa per stampare in ordine di nome i files pdf Windows e Software 2
Emix [PHP] Ricerca e modifica su due tabelle PHP 26
M [PHP] Tabella datagrid con icona di modifica che cambia in base a parametro PHP 0
Andrea1981 [WordPress] [HTML] Help modifica credits nel footer.Tema Customizr. WordPress 5
K [ASP.Net] Problema stampa e modifica ms sql ASP.NET 0
K stampa e modifica tabella in php e ms sql PHP 2
Michaelweb93 [WordPress] [HTML] Modifica sezione - pagina sito web WordPress 1
A [PHP] [RISOLTO] Modifica record db da form PHP 11
T [PHP] piccola modifica a script (non mio...) PHP 8
P Cerco programmatore per modifica sito wordpress Offerte e Richieste di Lavoro e/o Collaborazione 4
Z Modifica ricorsiva file html HTML e CSS 3
K [CERCO] Programmatore per modifica tema wp Offerte e Richieste di Lavoro e/o Collaborazione 2
U modifica sender-receiver email Posta Elettronica 4
W modifica firma Supporto Mr.Webmaster 20
M Modifica parametro mysql_result($result, $i, 'id') Deprecato dal 5.5 PHP 10
X modifica contemporanea di record MS Access 6
J [WP] Chiarimenti modifica campo WordPress 0

Discussioni simili