Back to top

Autore Topic: Come scrivere sul DB  (Letto 8614 volte)

Offline Arkimede360

  • Appassionato
  • ***
  • Post: 592
  • Sesso: Maschio
  • www.arkimede360.it
    • Mostra profilo
Come scrivere sul DB
« il: 12 Feb 2010, 16:43:13 »
Ciao a tutti, scrivo qui perchè questa volta mi occorre il consiglio di un esperto.

Ho la necessità di andare a sovrascrivere un dato nel DB di joomla. Vi spiego il progetto:

Ho uno script che fa una certa equazione aritmetica, che equivale alla spesa (o costo) dell'utente. Es: 2€.

Ho aggiunto un campo al com_users e l'ho chiamato credito. Es. 10€

Quello che mi occore è sottrarre il costo (2€) al credito (10€) e il risultato andarlo a sovrascrivere nella tabella "credito" dell'utente.

Un'altra cosa che vorrei fare, ma non so quanto sia possibile, è far disabilitare l'occount utente quando la tabella "credito" è uguale a 0.

Spero di essere stato chiaro nell'esposizione e di travare qualuno che mi aiuti.

Grazie, F.
fabio@arkimede360.it
www.arkimede360.it
p.iva 02532850597

mau_develop

  • Visitatore
Re:Come scrivere sul DB
« Risposta #1 il: 12 Feb 2010, 18:16:36 »
Ho aggiunto un campo al com_users
---------------------------------

perchè?

M.

Offline Arkimede360

  • Appassionato
  • ***
  • Post: 592
  • Sesso: Maschio
  • www.arkimede360.it
    • Mostra profilo
Re:Come scrivere sul DB
« Risposta #2 il: 12 Feb 2010, 18:24:18 »
Mi serviva un nuovo campo da poter gestire dal pannelo di amministrazione.

Ho fatto male?
fabio@arkimede360.it
www.arkimede360.it
p.iva 02532850597

mau_develop

  • Visitatore
Re:Come scrivere sul DB
« Risposta #3 il: 12 Feb 2010, 18:56:42 »
non so se tu abbia fatto bene o male, volevo sapere se c'era un ragionamento.

solo che mo che fai?
sottrarre il costo (2€)

Devi modificare o aggiungere metodi e script al com_component...
... sei in grado?

soprattutto, come fai se devi aggiornare joomla?

M.

Offline Arkimede360

  • Appassionato
  • ***
  • Post: 592
  • Sesso: Maschio
  • www.arkimede360.it
    • Mostra profilo
Re:Come scrivere sul DB
« Risposta #4 il: 12 Feb 2010, 19:39:10 »
Ho omesso di dire che uso chronoforms!!

Non è un problema l'aggiornamento...

Quello che mi occorre è sapere come faccio ad andare a mettere il risultato nel DB.
fabio@arkimede360.it
www.arkimede360.it
p.iva 02532850597

mau_develop

  • Visitatore
Re:Come scrivere sul DB
« Risposta #5 il: 12 Feb 2010, 20:17:37 »
Devi modificare o aggiungere metodi e script al com_component

come? ... così

http://www.pilloledijoomla.it/livello-intermedio/accesso-al-database-di-joomla.html

M.

Offline Arkimede360

  • Appassionato
  • ***
  • Post: 592
  • Sesso: Maschio
  • www.arkimede360.it
    • Mostra profilo
Re:Come scrivere sul DB
« Risposta #6 il: 12 Feb 2010, 20:46:44 »
il seguente script mi richiama i dati inseriti in DB:

Codice: [Seleziona]
// qualora non fosse globalizzato, recupero il mainframe
global $mainframe;

// istanzio un oggetto di accesso al DB
$db    =& JFactory::getDBO();

// Voglio le email di tutti gli utenti, notate #__
$query = 'SELECT email FROM #__users';

// effettuo la query
$db->setQuery( $query );

// recupero il resultset
$rows = $db->loadObjectList();

// stampo a schermo l'elenco
foreach($rows as $row) {
echo $row->email.'<br/>';

}

ma come faccio ad andare a scrivere (e non leggere) i dati nel DB?

fabio@arkimede360.it
www.arkimede360.it
p.iva 02532850597

mau_develop

  • Visitatore
Re:Come scrivere sul DB
« Risposta #7 il: 12 Feb 2010, 20:56:50 »
...quello non è un problema di joomla, ma di mysql...

invece di select usi la insert

M.

Offline Arkimede360

  • Appassionato
  • ***
  • Post: 592
  • Sesso: Maschio
  • www.arkimede360.it
    • Mostra profilo
Re:Come scrivere sul DB
« Risposta #8 il: 12 Feb 2010, 21:02:43 »
Ok, penso di potercela fare...cerco qualche guida per crearmi lo script che mi occorre.

Solo una cosa. Con questo script:

Codice: [Seleziona]
<?php
// qualora non fosse globalizzato, recupero il mainframe
global $mainframe;

// istanzio un oggetto di accesso al DB
$db    =& JFactory::getDBO();

// Voglio le email di tutti gli utenti, notate #__
$query 'SELECT credito, name FROM #__users';

// effettuo la query
$db->setQuery$query );

// recupero il resultset
$rows $db->loadObjectList();

// stampo a schermo l'elenco
foreach($rows as $row) {
echo 
$row->name'<br/>' ;
echo 
$row->credito.'<br/>';
}
?>

visualizzo i dati a schermo. Ho provato ad aggiungere

Codice: [Seleziona]
<?php echo $row->name?>
<?php echo $row->credito?>

ma mi visualizza solamente i fati dell'ultimo utente. Come faccio per avere l'elenco completo....


fabio@arkimede360.it
www.arkimede360.it
p.iva 02532850597

mau_develop

  • Visitatore
Re:Come scrivere sul DB
« Risposta #9 il: 12 Feb 2010, 21:13:20 »
aiutati che il ciel ti aiuta :)

qui trovi tutto e di più

http://docs.joomla.org/How_to_use_the_database_classes_in_your_script

ps quando vuoi verificare qualcosa non usare echo usa print_r($variabile); oppure var_dump($variabile);

il risultato spesso in joomla è un'array e con l'echo non vedresti nulla

M.

Offline Arkimede360

  • Appassionato
  • ***
  • Post: 592
  • Sesso: Maschio
  • www.arkimede360.it
    • Mostra profilo
Re:Come scrivere sul DB
« Risposta #10 il: 12 Feb 2010, 21:31:50 »
giuro che mi sto applicando :)

quindi se voglio inserire il nuovo credito nella tabella prova a fare così:

Codice: [Seleziona]
<?php

$db 
=& JFactory::getDBO();
$query 'INSERT credito FROM #__users';
$db->setQuery($insertObject);
$result $db->query();

?>


adesso devo collegare questo

Codice: [Seleziona]
Credito
 <input type="text" value=""  id="credito" name="credito" maxlength="4" size="4" />

allo script su

Ecco....mi manca questo passaggio (sperando che il resto è giusto :-[ )
fabio@arkimede360.it
www.arkimede360.it
p.iva 02532850597

mau_develop

  • Visitatore
Re:Come scrivere sul DB
« Risposta #11 il: 12 Feb 2010, 21:49:51 »
INSERT credito FROM #__users';
-------------------------------

no, una insert non si fa così

http://www.tizag.com/mysqlTutorial/mysqlinsert.php

M.

Offline Arkimede360

  • Appassionato
  • ***
  • Post: 592
  • Sesso: Maschio
  • www.arkimede360.it
    • Mostra profilo
Re:Come scrivere sul DB
« Risposta #12 il: 12 Feb 2010, 21:53:11 »
Vediamo se ho capito

Codice: [Seleziona]
// Insert a row of information into the table "example"
mysql_query("INSERT INTO #__users
(credito) VALUES('credito') ")
or die(mysql_error());
fabio@arkimede360.it
www.arkimede360.it
p.iva 02532850597

Offline Arkimede360

  • Appassionato
  • ***
  • Post: 592
  • Sesso: Maschio
  • www.arkimede360.it
    • Mostra profilo
Re:Come scrivere sul DB
« Risposta #13 il: 12 Feb 2010, 22:03:31 »
Allora questa dovrebbe essere giusta:

<?php

$db = JFactory::getDBO();
$query = "insert into #__users values('credito')";
$db->setQuery($query);
?>

chiedo conferma :)

Passo successivo

ho una casella di testo dove andrà a finire un numero

Credito
 <input type="text" value=""  id="credito" name="credito" maxlength="4" size="4" />

È sufficiente inserire "credito" nell' ID e nel NAME oppure devo fare qualcos'altro??


Carneade!!
fabio@arkimede360.it
www.arkimede360.it
p.iva 02532850597

mau_develop

  • Visitatore
Re:Come scrivere sul DB
« Risposta #14 il: 12 Feb 2010, 22:35:12 »
values('credito')"; -> no

values $credito"; -> si


È sufficiente inserire "credito" nell' ID e nel NAME oppure devo fare qualcos'altro??
----------------------------------------------------------
non vuol dir nulla qs domanda, provo a risponderti dicendo che nel form passerà il value di name=credito, ovvero una variabile GET/POST credito col valore inserito nel form.




Offline Arkimede360

  • Appassionato
  • ***
  • Post: 592
  • Sesso: Maschio
  • www.arkimede360.it
    • Mostra profilo
Re:Come scrivere sul DB
« Risposta #15 il: 12 Feb 2010, 22:40:51 »
Qui non funziona niente.

Grazie comunque. Provo a fare da solo.
fabio@arkimede360.it
www.arkimede360.it
p.iva 02532850597

mau_develop

  • Visitatore
Re:Come scrivere sul DB
« Risposta #16 il: 12 Feb 2010, 22:45:41 »
Qui non funziona niente.
--------------------------

 credo sia normale... mica ho capito cosa stai facendo... quello che ti ho suggerito è il codice e ti assicuro che è corretto...

come e dove lo usi tu nn lo posso sapere, Joomla solitamente ha un suo mvc e non conosco altro modo di implementare o modificare codice.

M.

Offline Arkimede360

  • Appassionato
  • ***
  • Post: 592
  • Sesso: Maschio
  • www.arkimede360.it
    • Mostra profilo
Re:Come scrivere sul DB
« Risposta #17 il: 12 Feb 2010, 22:54:52 »
Quello che devo fare è semplice, solo che io non so farlo...


...ed è scrivere un "numero" in una tabella del DB quando l'utente loggato invia il form.

fabio@arkimede360.it
www.arkimede360.it
p.iva 02532850597

mau_develop

  • Visitatore
Re:Come scrivere sul DB
« Risposta #18 il: 12 Feb 2010, 23:13:12 »
devi seguire il processo di quel form ci sarà un punto dove vengono restituiti i dati per l'inserimento nel db preposto da chronoform, poi ci sarà la query che li inserisce, li aggiungi la tua...

occhio ai nomi standard che vanno in conflitto

Offline Arkimede360

  • Appassionato
  • ***
  • Post: 592
  • Sesso: Maschio
  • www.arkimede360.it
    • Mostra profilo
Re:Come scrivere sul DB
« Risposta #19 il: 12 Feb 2010, 23:22:37 »
questo è il codice che dici:

Codice: [Seleziona]
<?php
$MyForm =& CFChronoForm::getInstance("inviofile");
if($MyForm->formparams("dbconnection") == "Yes"){
$user JFactory::getUser();
$row =& JTable::getInstance("chronoforms_inviofile""Table");
srand((double)microtime()*10000);
$inum = "I" substr(base64_encode(md5(rand())), 016).md5(uniqid(mt_rand(), true));
JRequest::setVar"recordtime"JRequest::getVar"recordtime"date("Y-m-d")." - ".date("H:i:s"), "post""string""" ));
JRequest::setVar"ipaddress"JRequest::getVar"ipaddress"$_SERVER["REMOTE_ADDR"], "post""string""" ));
JRequest::setVar"uid"JRequest::getVar"uid"$inum"post""string""" ));
JRequest::setVar"cf_user_id"JRequest::getVar"cf_user_id"$user->id"post""int""" ));
$post JRequest::get"post" JREQUEST_ALLOWRAW );
if (!$row->bind$post )) {
JError::raiseWarning(100$row->getError());
}
if (!$row->store()) {
JError::raiseWarning(100$row->getError());
}
$MyForm->tablerow["stampa_chronoforms_inviofile"] = $row;
}
?>

se io volessi che ognni utente registrato che si logga possa cambiare ad esempio il proprio Username direttamente dal mio form....cosa devo fare?

ti prego aiutami sono in alto mare...  :-\
fabio@arkimede360.it
www.arkimede360.it
p.iva 02532850597

 



Web Design Bolzano Kreatif