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
sensorario
(Sensorario)
January 13, 2012, 7:10am
2
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;
sensorario:
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
sensorario
(Sensorario)
January 13, 2012, 8:01am
4
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
mdomba
(Maurizio Domba Cerin)
January 13, 2012, 8:27am
6
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…
mdomba:
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…
Grazie credo che opterò per un Foreach a questo punto
sensorario
(Sensorario)
January 13, 2012, 9:22am
8
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