neorf
(Neorf3k)
July 5, 2012, 11:02am
1
Innanzi tutto ciao a tutti… vi leggo da un po’ tra qua e la versione in inglese del forum…
adesso mi servirebbe un aiutino…
Ho creato un form con un upload di immagine che salva in un db mysql in formato blob… solo che al momento dell’update, vorrei che non fosse cancellata l’immagine, se l’utente non ne seleziona una nuova.
Come posso fare?
Grazie
neorf
mdomba
(Maurizio Domba Cerin)
July 5, 2012, 11:17am
2
Invece di fare semplicemente $model->save()… dagli la lista dei campi che vuoi salvare, rimovendo quello dell’imagine
per essempio
if(empty($model->imagine))
$model->save('true', array('nome', 'cognome'));
else
$model->save();
paskuale
(Pellicanipasquale)
July 5, 2012, 12:01pm
3
Ciao neorf è interessante il discorso del campo tipo blob, mostreresti il codice che usi x ottenerlo, in futuro ho intenzione di utilizzarla come funzionalità. grazie
neorf
(Neorf3k)
July 5, 2012, 12:10pm
4
mdomba:
Invece di fare semplicemente $model->save()… dagli la lista dei campi che vuoi salvare, rimovendo quello dell’imagine
per essempio
if(empty($model->imagine))
$model->save('true', array('nome', 'cognome'));
else
$model->save();
Non va… ovvero, se implemento quel if per il salvataggio, non solo mi elimina la foto blob, ma non mi salva i campi nome e cognome…
vi posto la parte del controller che riguarda l’upload, con commentata la parte del semplice salvataggio ma che funziona
if(isset($_FILES['Autori']['size']['foto']) && $_FILES['Autori']['size']['foto'] > 0)
{
$file = CUploadedFile::getInstance($model,'foto');
$model->fotoName = $file->name;
$model->fotoType = $file->type;
$fp = fopen($file->tempName, 'r');
$content = fread($fp, filesize($file->tempName));
fclose($fp);
$model->foto = $content;
}
if(isset($_POST['fotoDelete']) && $_POST['fotoDelete']==1) {
$model->fotoName = '';
$model->fotoType = '';
$model->foto = '';
}
if($model->fotoName) {
if($model->save('true', array('nome', 'cognome','biografia'))) $this->redirect(array('shop/admin'));
}
else {
if($model->save())
$this->redirect(array('shop/admin')); }
/*if($model->save())
$this->redirect(array('shop/admin'));*/
ps. poi posto l’esempio del blog, che cmq l’ho trovato online in inglese.
mdomba
(Maurizio Domba Cerin)
July 5, 2012, 12:15pm
5
Dai un occhiata ai errori della validazione
mdomba
(Maurizio Domba Cerin)
July 5, 2012, 5:07pm
7
ci sono tanti modi da fare… il piu facille per vedere di cosa si tratta e:
if($model->save('true', array('nome', 'cognome','biografia')))
$this->redirect(array('shop/admin'));
else
echo $model->getErrors();
neorf
(Neorf3k)
July 6, 2012, 10:39am
8
Allora, risolto…
nel modello per tra le rules non avevo dichiarato il record biografia, ora così funziona tutto:
public function rules() {
...
array('nome,cognome,biografia', 'required'),
array('autori_id, nome, cognome,biografia', 'safe', 'on'=>'search'),