Back to top

Autore Topic: aggiornare un record  (Letto 2933 volte)

Offline tavvolley

  • Nuovo arrivato
  • *
  • Post: 12
    • Mostra profilo
aggiornare un record
« il: 20 Mar 2010, 20:47:07 »
Salve a tutti!! E' la mia prima applicazione di joomla e vorrei sapere come si deve fare ad aggiornare il record di una tabella!!
l'esempio che ho seguito è quello dello sviluppo di un componente utilizzando il MVC.
Ho creato nella cartella table tanti file quante sono le tabelle all'interno del mio database, ora nel model chiamo la tabella:
Codice: [Seleziona]
$row =& $this->getTable('user');
e faccio il bind() ($row->bind())lo store() e mi aggiunge sempre un record nuovo. come posso fare solo l'aggiornamento di un record?
devo crearmi un metodo che costruisca l'update e poi richiamarlo con _database->setQuery(). Oppure c'è qualche altro metodo che non conosco che mi fa in automatico l'aggiornamento del record modificato?
ringrazio anticipatamente!

Offline 56francesco

  • Fuori controllo
  • *
  • Post: 29585
  • Sesso: Maschio
    • Mostra profilo
Re:aggiornare un record
« Risposta #1 il: 20 Mar 2010, 20:48:08 »
ciao
è preferibile utilizzare la sezione sviluppo per questo tipo di domande..

ti sposto li, buona fortuna..
(uso XP perchè win98 non si installa) 
PS: non sono un dipendente dello sbonzor quindi è necessario un "per favore" alla richiesta e un "grazie" alla risposta, sempre! PPS: non scrivo mai per primo in MP, in caso contrario chiedimi una conferma, Grazie.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:aggiornare un record
« Risposta #2 il: 20 Mar 2010, 21:57:55 »
ciao tavvolley,
  il bind richiede che tu passi i valori dei fields in un array; verifica se l'id è valorizzato altrimenti non sarà possibile, appunto, il bind!!

btw: per gestire gli utenti è meglio usare JUser...

ciao,
marco
 
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline tavvolley

  • Nuovo arrivato
  • *
  • Post: 12
    • Mostra profilo
Re:aggiornare un record
« Risposta #3 il: 21 Mar 2010, 00:20:51 »
Ciao Marco ti ringrazio per la risposta!ok ora mi metto a vedere i valori contenuti nell'array prima del salvataggio. Non mi andava di fare il debug perchè non so se ho configurato bene l'ambiente di sviluppo!! Sto utilizzando eclipse con Xdebug. alcune volte si bloccava in fase di debug ora invece non mi fa vedere i valori delle variabili. Quando metto i break point si ferma sul codice ma i valori delle mie variabili sono <Uninitialized> non riesco a capire il perchè.Ora sono sono tornato al bel vecchio echo :-( e per vedere i valori devo mettere un break point al punto desiderato e poi stoppare il debug :-(, in questo modo non carica la pagina di joomla ma una pagina bianca con tutti gli echo inseriti fino a quel momento stampati.

Offline = odino =

  • Instancabile
  • ******
  • Post: 5696
  • Sesso: Maschio
  • "In realtà li trasforma in menomati" Danzel
    • Mostra profilo
Re:aggiornare un record
« Risposta #4 il: 21 Mar 2010, 10:35:35 »
 :o

ma un var_dump() no eh?

 :)

Offline tavvolley

  • Nuovo arrivato
  • *
  • Post: 12
    • Mostra profilo
Re:aggiornare un record
« Risposta #5 il: 22 Mar 2010, 12:13:15 »
ho risolto il problema in effetti non passavo l'id tra i campi dell'array a cui volevo fare il bind!!
Ora sto cercando di strutturare in classi il tutto ma ci sono alcune cose che non mi sono molto chiare
ecco l'indirizzo del tutorial seguito
http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_6_-_Adding_Backend_Actions
Stavo ricostruendo un bind() personalizzato in una classe esterna. Nel costruttore passo due parametri il nome della tabella (in modo da utilizzare
Codice: [Seleziona]
getTable($nomeTabella)) e i dati estratti dal form (
Codice: [Seleziona]
$data=JRequest::get('post');)per fare il bind() prima di opportuni cambiamenti.
Quando ho creato la classe tutto ok, poi sono arrivato al momento della creazione del mio metodo bind e mi sono accorto che in caso di errore del bind restituisce:
$this->setError($this->_db->getErrorMsg());
?? Secondo me (NON so se ho capito bene :D)io non ho più a che fare con _db, l'ho semplicemente utilizzato per estrarre i dati che devono andare a popolare la mia form. Ora con il bind() devo solo associare alla "struttura" della tabella (che viene trattata quasi come un array con tutti i campi vuoti) i valori estratti dalla form che andranno successivamente memorizzati con store().
forse posso capire che il database potrebbe creare dei problemi quando cerco di memorizzare al suo interno e quindi vedere il suo errore ma non capisco quale errore potrebbe generare in bind() e in check!!
Devo passare anche _db alla mia classe?
come faccio a catturare l'eventuale errore ? esiste il bel throw di java in php? funziona in joomla? si propapagano sempre in questo modo gli errori in joomla?
***
per odino ok!! posso anche utilizzare var_dump ma quando costruisci un'applicazione è sempre meglio avere un ambiente di sviluppo che ti aiuti nella compilazione. Ho girato un bel pò ma non ho visto nulla di interessante su come configurare eclipse o netbeans per sviluppare componenti per joomla tranne che un video tutorial molto interessante per lo sviluppo di joomla che mi ha fatto capire alcune cose!!

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:aggiornare un record
« Risposta #6 il: 23 Mar 2010, 12:52:13 »
mi sono un po' perso...  :(

... comunque dipende da che hai scritto dentro il tuo bind(), il throw esiste anche in php php.net/manual/en/internals2.opcodes.throw.php, ma è meglio appoggiarsi alla gestione errori di joomla, per prima cosa abilita il debug dalla configurazione del sito.

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

 



Web Design Bolzano Kreatif