Evitare un pò di If

Buongiorno a tutti,

sto smanettando con wii, e ho creato un form che riempie una tabella database inerente a tale profilo.

i campi non sono obbligatori, posso riempire anche un solo campo, ma non voglio che quelli vuoti sostituiscano quelli pieni presenti nel db. per Esempio se ci sono due campi nome e cognome, e in precedenza avevo riempito entrambi, e in un secondo tempo cambio solo cognome lasciando nome in bianco, non voglio che nel DB il nome venga sostituito dal bianco.

io avevo scritto questo che però non vorrei usare :




if($_POST['TblProfilo']['nome']!= "")

$this->utente->nome=$_POST['TblProfilo']['nome'];

if($_POST['TblProfilo']['cognome']!= "")

$this->utente->cognome=$_POST['TblProfilo']['cognome'];



Sapete se c’e qualche via più veloce, ch emi eviti ad esempio di dover mettere un altro if se metto un altro campo?

grazie a tutti

Non so se sia più veloce ma a me piace da matti l’operatore ternario:




$this->utente->nome = $_POST['TblProfilo']['nome']!= "" ? $_POST['TblProfilo']['nome'] : $this->utente->nome

$this->utente->cognome = $_POST['TblProfilo']['cognome']!= "" ? $_POST['TblProfilo']['cognome'] : $this->utente->cognome;



sicuramente risparmi, ma sono sempre if per ogni campo

Potresti sempre fare un foreach di $_POST[‘TblProfilo’] e solo quando esiste un valore, andarlo a scrivere nel record.

Si ci avevo pensato anche io, ma visto che per tutto c’e una parola chiave pensavo… :)

grazie

Se vuoi testare soltanto una specifica lista di campi (nome e cognome) puoi usare


foreach(array('nome','cognome') as $campo)

	echo $_POST['model'][$campo];

Ho fatto soltanto un echo per darti l’idea… :D

Grazie credo che opterò per un Foreach a questo punto :)

Giusto … in genere quando ci sono codici ripetuti, individuo le variabili e poi creo un array:

Codice visibilmente ripetuto




if($_POST['TblProfilo']['nome']!= "")

$this->utente->nome=$_POST['TblProfilo']['nome'];

if($_POST['TblProfilo']['cognome']!= "")

$this->utente->cognome=$_POST['TblProfilo']['cognome'];



Parametrizzazione delle cose parametrizzabili




$campo = 'nome';

if($_POST['TblProfilo'][$campo]!= "")

$this->utente->$campo=$_POST['TblProfilo'][$campo];

$campo = 'cognome';

if($_POST['TblProfilo'][$campo]!= "")

$this->utente->$campo=$_POST['TblProfilo'][$campo];



i miei migliori amici (gli array ed il foreach) che giocani insieme




foreach(array('nome','cognome') as $campo)

       if($_POST['TblProfilo'][$campo]!= "")

               $this->utente->$campo=$_POST['TblProfilo'][$campo];



si infatti userò un foreach. grazie dell’aiuto