Back to top

Autore Topic: collegamento a tabella database [RISOLTO]  (Letto 5155 volte)

Offline ms91

  • Esploratore
  • **
  • Post: 109
    • Mostra profilo
collegamento a tabella database [RISOLTO]
« il: 22 Dic 2009, 13:00:23 »
Ciao a tutti!
Non riesco a stabilire una connessione tra uno script di un componente in  php e il proprio database, in modo che lo script possa estrarre il valore di un campo di una tabella e effettuare un controllo su di esso. come posso fare ?
grazie!
per il db uso easyphp
« Ultima modifica: 30 Dic 2009, 18:38:43 da ms91 »

Offline MarcoJ

  • Appassionato
  • ***
  • Post: 408
  • Sesso: Maschio
    • Mostra profilo
Re:collegamento a tabella database
« Risposta #1 il: 22 Dic 2009, 14:08:48 »
Ciao ms91,
se ho ben capito vuoi raggiungere un tuo db attraverso un tuo programma in php, integrando il tutto ovviamente in joomla.
E' questo ?
Prima di tutto il db e' lo stesso dell'applicazione joomla oppure hai un ulteriore db esterno a questa ?

Accedere ad un db non è un problema, ma occorre prima di tutto un componente che ti permetta di gestire il codice Php.
Io utilizzo sempre JUMI che mi è sempre andato bene.
Poi con questo scrivo il codice che voglio, compreso quindi la connessione al mio db e tutte le interrogazioni che voglio.
Estraggo quindi i dati con i quali personalizzo delle pagine.
Inutile dire che per fare questo occorre un minimo di conoscenza di Mysql e qualcosa di piu' di Php.

Se hai queste capacità il gioco è velocissimo.

Ciao
È più facile fare la cosa corretta, quando sappiamo qual’è la cosa corretta da fare.

Offline ms91

  • Esploratore
  • **
  • Post: 109
    • Mostra profilo
Re:collegamento a tabella database
« Risposta #2 il: 22 Dic 2009, 15:54:51 »
Allora, il programma in php è di un componente e lo vorrei modificare in modo che prima di effettuare l'operazione che deve svolgere effettui un controllo su un campo di una tabella, la tabella è nello stesso database del componente, ne so qualcosa di php e mysql ma sto imparando, io ho pensato di scrivere direttamente sul codice l'istruzione mysql_connect... ma non funziona. Non ho mai usato un componente, ma scrivendp il codice direttamente e provandolo sulla pagina non dovrebbe funzionare lo stesso?
Grazie per l'aiuto! ;)

Offline MarcoJ

  • Appassionato
  • ***
  • Post: 408
  • Sesso: Maschio
    • Mostra profilo
Re:collegamento a tabella database
« Risposta #3 il: 23 Dic 2009, 09:39:13 »
Ciao,
la possibilità che ti funzioni dipende da come è scritto il codice che vuoi modificare e quindi devi fare di questo un minimo di analisi.
Tipicamente quando ci si connette ad un db si scrive un codice del tipo:

<?PHP
// Esegue un accesso al database, restituendo nella variabile $database lo stato dell'operazione

          $hostname = "localhost";
          $dbName   = "tuo_db";
          $username = "tua_username";
          $password = "tua_password";
          $database = mysql_Connect($hostname,$username,$password);
          $db_selected=mysql_select_db ($dbName,$database);

if (!$db_selected) {
    die('Impossibile connettersi. Errore : ' . mysql_error());
}
?>

Questo per connettersi, ma se nel punto del codice dove vuoi fare l'inserimento del tuo codice personalizzato la connessione è già aperta, allora evidentemente non hai bisogno di fare nulla, ma puoi passare direttamente ad esegire le tue query, con istruzioni del tipo:

<?PHP
$query="SELECT * FROM tua_tabella WHERE tue_condizioni;                       
$valore=mysql_query($query,$database);
if (!$valore1)
   echo "Errore nell'esecuzione della query";
else
   $rows=mysql_Num_Rows($valore);  // legge il numero delle righe                 
?>

Peraltro se mi permetti vorrei consigliarti di non andare troppo a modificare componenti o moduli standard, perchè rischi di perdere in compatibilità con gli aggiornamenti di joola o del componente oppure rischi comportamenti inattesi.
Se quello che devi fare ti è assolutamente necessario, fallo ma con intelligenza.

Ciao e buon lavoro
È più facile fare la cosa corretta, quando sappiamo qual’è la cosa corretta da fare.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:collegamento a tabella database
« Risposta #4 il: 28 Dic 2009, 22:12:35 »
veramente se sei all'interno di un componente, dovresti conformarti alle regole di coding di Joomla!

Codice: [Seleziona]
$db =& JFactory::getDBO();
$db->setQuery( 'SELECT A_field FROM #__!table! WHERE A_condition' );
// per singolo record
$result = $db->loadResult();
// per un record set
$results = $db->loadObjectList();

ovvero usa il metodo getDBO() per ottenere una istanza della classe JDatabase [http://docs.joomla.org/JDatabase], setQuery() per passare la query e poi il metodo opportuno per recuperare i dati.

non ti preoccupare di connessione o selezione db poichè vi pensa il framework

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

Offline ms91

  • Esploratore
  • **
  • Post: 109
    • Mostra profilo
Re:collegamento a tabella database
« Risposta #5 il: 29 Dic 2009, 10:06:33 »
a ok grazie!
un'altra cosa, esiste in joomla o si puo creare uno script che identifica chi lo sta eseguendo?

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:collegamento a tabella database
« Risposta #6 il: 29 Dic 2009, 10:24:15 »
se intendi quale utente stia vedendo la pagina (con ciò che fa la pagina stessa: modifiche, inserimenti et cetera) allora
Codice: [Seleziona]
$user =& JFactory::getUser();
per i dettagli vedi http://docs.joomla.org/JFactory/getUser

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

Offline ms91

  • Esploratore
  • **
  • Post: 109
    • Mostra profilo
Re:collegamento a tabella database
« Risposta #7 il: 30 Dic 2009, 17:51:00 »
non mi funziona!
Codice: [Seleziona]
$user =& JFactory::getUser();
$db =& JFactory::getDBO();
$db->setQuery( 'SELECT A_field FROM jos_users WHERE username== $user' );
// per singolo record
$result = $db->loadResult();
echo $result;
// per un record set
$results = $db->loadObjectList();
echo $results [1];
:(

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:collegamento a tabella database
« Risposta #8 il: 30 Dic 2009, 18:06:29 »
$user è un oggetto, non uno scalare, la query era un esempio, non codice effettivo A_field non esiste, semmai usa *, l'operatore di confronto è =, una stringa in sql deve essere tra ', in php una stringa tra ' non può essere interpolata...

Codice: [Seleziona]
db->setQuery( "SELECT * FROM #__users WHERE username = '{$user}->username'" );
...
print_r(results[1]); // echo restituisce 'object'

scusa la domanda brutale, ma sei sicuro di saper programmare? ;)

ciao (e non scoraggiarti :) ),
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline ms91

  • Esploratore
  • **
  • Post: 109
    • Mostra profilo
Re:collegamento a tabella database
« Risposta #9 il: 30 Dic 2009, 18:37:47 »
ok risolto :)
sto iniziando ora con php!
comunque grazie infinite! ;)

Offline ms91

  • Esploratore
  • **
  • Post: 109
    • Mostra profilo
Re:collegamento a tabella database [RISOLTO]
« Risposta #10 il: 30 Dic 2009, 18:41:10 »
in effetti ero convinto che A_field fosse un istruzione! :-[ :-[

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:collegamento a tabella database [RISOLTO]
« Risposta #11 il: 30 Dic 2009, 18:58:40 »
visto che sei all'inizio ti faccio notare che la classe in $user contiene già tutte le informazioni fornite dalla query ;)

leggi quanto scritto al link http://docs.joomla.org/JFactory/getUser , è una buona guida.
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

 



Web Design Bolzano Kreatif