Back to top

Autore Topic: Inserire nuovo record da form in tabella di phocadownload.  (Letto 2276 volte)

Offline elleoerre

  • Appassionato
  • ***
  • Post: 218
  • Sesso: Maschio
    • Mostra profilo
Buona sera, ho creato un form in cui dovrei inserire dei dati che andranno poi salvati in una tabella del componente di phocadownload.
La tabella in questione è "#_phocadownload".
Vi illustro il codice php inserito in custom code nell'evento on submit:
Codice: [Seleziona]
<?php
$sql
="INSERT INTO cdkyh_phocadownload (catid, title, alias, filename) VALUES ('".$form->data['categoria']."',
'"
.$form->data['nomemodulo']."',
'alias_"
.$form->data['nomemodulo']."',
'"
.$form->data['filemodulo']."'";

$result mysql_query($sql);
if (!
$result) {
    die(
"Errore nella query $sql: " mysql_error());
}
mysql_close();
?>


Credo ci sia però qualche problema di accesso perchè mi restituisce il seguente messaggio di errore:

Warning:  mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\portale\administrator\components\com_chronoforms\form_actions\custom_code\custom_code.php(19) : eval()'d code on line 12
 
 Warning:  mysql_query() [function.mysql-query]: A link to the server could not be established in C:\xampp\htdocs\portale\administrator\components\com_chronoforms\form_actions\custom_code\custom_code.php(19) : eval()'d code on line 12
 Errore nella query INSERT INTO cdkyh_phocadownload (catid, title, alias, filename) VALUES ('1', 'Bianco Segno', 'alias_Bianco Segno', '20131109173559_bianco segno.pdf': Access denied for user 'ODBC'@'localhost' (using password: NO)

In cosa manco?
Grazie a chi mi potrà aiutare...

Offline elleoerre

  • Appassionato
  • ***
  • Post: 218
  • Sesso: Maschio
    • Mostra profilo
Re:Inserire nuovo record da form in tabella di phocadownload.
« Risposta #1 il: 09 Nov 2013, 18:19:25 »
Non capisco perchè se devo inserire un nuovo record in una tabella di chronoforms non ho problemi di accesso e inserisco i record normalmente, invece se devo inserire i record in un'altra tabella che si trova nello stesso database (in questo caso una tabella di phocadownload), ho problemi di questo tipo.
Qualcuno mi sa dire perchè e come posso risolvere?


Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Inserire nuovo record da form in tabella di phocadownload.
« Risposta #2 il: 10 Nov 2013, 18:48:58 »
ciao,
 il codice non funziona di sicuro dato che manca la connessione al server (con login e password) e la selezione del db. solo allora puoi eseguire la query.

per far funzionare l'insert devi usare le classi di gestione  db del framework di joomla.

ciao,
marco

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

Offline elleoerre

  • Appassionato
  • ***
  • Post: 218
  • Sesso: Maschio
    • Mostra profilo
Re:Inserire nuovo record da form in tabella di phocadownload.
« Risposta #3 il: 12 Nov 2013, 15:46:23 »
Non sono molto pratico di php e perciò posso aver commesso qualche errore, però io ho sempre usato questo codice per accedere alle tabelle che creavo con chronoforms e non ho mai avuto problemi di questo genere. Mi sapresti spiegare perchè se accedo invece alla tabella di phocadownload il codice non funziona pur essendo il fatto che la tabella appartiene sempre allo stesso db? Perchè dovrei fornire la connessione al server in questo caso? E soprattutto, come si fa? Grazie a chi mi potrà aiutare..

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Inserire nuovo record da form in tabella di phocadownload.
« Risposta #4 il: 12 Nov 2013, 16:37:45 »
mi sembra molto strano che il codice potesse funzionare, probabilmente c'era una connessione aperta nella pagina al cui handler  mysql_query si agganciava, ma in realtà è più un caso che altro.

per il resto per salvare i dati nelle tabelle di chronoform non hai bisogno di codice, dato che il salvataggio lo fa il componente stesso in maniera automatica e trasparente all'utente. basta indicargli la tabella da usare.

ti segnalo altri due punti nel tuo codice
  • stai usando il prefisso della tabella in maniera hard coded, se un domani dovesse essere cambiato non funzionerà il codice e sarà difficile trovare dove è il problema
  • stai passando dei dati al db senza nessun cast o escape. il codice è vulnerabile ad attacchi sqli
per usare le funzioni del framework usa

Codice: [Seleziona]
$db = JFactory::getDBO();
$db è un oggetto di tipo JDatabase, per l'uso vedi:
http://docs.joomla.org/Accessing_the_database_using_JDatabase

ma soprattutto ricordati i cast per interi e virgola mobile e gli escape per le stringhe.

ciao,
marco
 


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

 



Web Design Bolzano Kreatif