Back to top

Autore Topic: Gestione database esterno a Joomla  (Letto 11215 volte)

Offline phcaze

  • Nuovo arrivato
  • *
  • Post: 10
    • Mostra profilo
Gestione database esterno a Joomla
« il: 11 Dic 2010, 19:55:24 »
Ciao a tutti, sono nuovo, avrei bisogno di aiuto per implementare in Joomla 1.5 un'idea che ho avuto.
Sono un Ingegnere delle Telecomunicazioni quindi tutto quello che so di programmazione si ferma al C e al C++ per ora :)

Praticamente sul mio pc ho un database generato da un software (vari file in formato dbf). Devo mettere a disposizione degli utenti registrati al mio sito alcune informazioni di questo database, ogni utente deve poter vedere solo le sue, e magari in futuro permettere anche agli utenti di modificare i propri parametri. Questo database si aggiorna giornalmente quindi dovrà essere uppato sul server ogni giorno immagino.

Il database funziona così grossomodo:
una tabella riporta i dati del cliente ed associa al nome del cliente un id univoco. Id che viene poi usato in un'altra tabella per indicare cosa questo cliente ha prenotato da me (prodotto con un suo codice univoco), poi c'è un ulteriore tabella che associa il codice prodotto a tutte le sue varianti, ognuna con un codice, ecc. Io vorrei poter far vedere al cliente cosa ha prenotato (sia solo prodotto che solo varianti. Per esempio il Corriere della Sera (prodotto) per tutte le sue uscite, o solo l'uscita del 11/12 (variante)) e se mi è arrivato in negozio e può passare a ritirarlo.

è una cosa che mi piacerebbe imparare a fare, posso metterci tutto il tempo che voglio.


Qualche consiglio per iniziare?

Molte grazie

Offline scarinciotto

  • Appassionato
  • ***
  • Post: 263
    • Mostra profilo
Re:Gestione database esterno a Joomla
« Risposta #1 il: 17 Dic 2010, 11:03:07 »
dovresti cercare se esiste una classe che interfaccia php ai database dbf.... in questi modo, una volta caricato il db direttamente sul sito, potresti scegliere di interrogarlo direttamente o fare un batch che mappa dbf a mysql e caricarlo quotidianamente.....
I miei viaggi: www.scarinciotto.com

Offline bigham

  • Global Moderator
  • Instancabile
  • ********
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Re:Gestione database esterno a Joomla
« Risposta #2 il: 17 Dic 2010, 11:54:21 »
Ciao scarinciotto.
Benvenuto nel forum di joomla :D

Partiamo da un presupposto: i dati che i clienti possono vedere devono risiedere sul database di Joomla.
Nel database di Joomla la struttura delle tabelle che conterrano i dati che i clienti potranno consultare deve essere simile a quella del database di origine.
In ogni caso dovrà essere presente una tabella in più che mappi gli utenti/clienti registrati sul sito (tabella jos_users) con quella dei clienti che hai sul database di origine.
Questo perchè gli id dei clienti sul database di origine non sono gli stessi id degli utenti registrati al sito.

Si tratta quindi di tenere allineate le tabelle del database del sito con le tabelle del database di origine e per farlo, in genere, si usa il linguaggio SQL e uno script php creato appositamente ed esterno a joomla (quindi php puro e semplice)

Se hai la possibilità di utilizzare il servizio cron di linux sul web server, puoi temporizzare l'esecuzione dello script in modo da tenere allineati i dati tra i due database.

E questo è solo l'inizio perchè poi bisognerà realizzare un componente per consentire agli utenti/clienti di consultare i dati secondo le modalità che tu desideri.
Io considererei però l'idea di utilizzare i componenti chronoforms e cronoconnectivity in abbinamento. C'è un articolo della community che recensisce questi due componenti.
Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

Offline scarinciotto

  • Appassionato
  • ***
  • Post: 263
    • Mostra profilo
Re:Gestione database esterno a Joomla
« Risposta #3 il: 17 Dic 2010, 12:03:36 »
beh in realtà se trovasse la classe per interrogare il bdf, ci sarebbe una strada più corta! Potrebbe interrogare direttamente il db e visualizzarlo attraverso il componente Jumi .....
I miei viaggi: www.scarinciotto.com

Offline phcaze

  • Nuovo arrivato
  • *
  • Post: 10
    • Mostra profilo
Re:Gestione database esterno a Joomla
« Risposta #4 il: 26 Dic 2010, 10:40:54 »
Grazie a tutti per le risposte e BUON NATALE! :)

Ho cercato un pò e ho trovato DBF reader per joomla (non funziona perchè manca la php_dbase.dll, devo vedere un pò come risolvere), però è un estensione che compare come menù sulla sinistra del sito, immagino serva per far visualizzare il database agli utenti collegati.

Volendo per iniziare, potrei convertirmi io in locale il database in formato mysql (avete qualche programma da consigliare?)

Grazie

Offline phcaze

  • Nuovo arrivato
  • *
  • Post: 10
    • Mostra profilo
Re:Gestione database esterno a Joomla
« Risposta #5 il: 10 Gen 2011, 22:17:35 »
Ciao, convertendo il database manualmente e uppandolo sul mio server sto riuscendo a fare quello che voglio.. Piano piano, imparando il php. Il problema viene nella creazione delle tabelle sql..
Alcuni campi del vecchio database dbf contengono nomi con apostrofo e qui viene il problema, sql non me li importa. Per esempio viene tradotto:

INSERT INTO titoli  values (        45,        203, '000000169',    1122807,          0,         36,         74,          0, 'TELEPIU'', '', '4', '');

INSERT INTO titoli  values (        45,        203, '000000169',    1122807,          0,         36,         74,          0, 'QUELL'APE'', '', '4', '');

Quelli apostrofi in più non mi permettono di generare le tabelle sql.

Come posso fare?
Molte grazie

Offline scarinciotto

  • Appassionato
  • ***
  • Post: 263
    • Mostra profilo
Re:Gestione database esterno a Joomla
« Risposta #6 il: 11 Gen 2011, 00:21:44 »
basta che ne aggiungi uno:

Sant'Angelo -> Sant''Angelo ....

I miei viaggi: www.scarinciotto.com

Offline phcaze

  • Nuovo arrivato
  • *
  • Post: 10
    • Mostra profilo
Re:Gestione database esterno a Joomla
« Risposta #7 il: 11 Gen 2011, 07:46:13 »
Grazie per la risposta, però come faccio ad aggiungerlo il '? SOno 5000 voci, non posso farlo a mano. Io ho questo file .sql, se gli dico di sostituire ' con '' viene fuori un casino perchè me li sostituisce tutti

Grazie

Offline scarinciotto

  • Appassionato
  • ***
  • Post: 263
    • Mostra profilo
Re:Gestione database esterno a Joomla
« Risposta #8 il: 11 Gen 2011, 08:30:47 »
capito....
allora ci sono varie strade, dipende da come generi il file, comunque io te ne scrivo un paio che mi vengono in mente al volo:

- se il file viene generato da codice (PHP per esempio):
  $var_ok = str_replace("'",""",$testo_che_contiene_apice);

- se devi sostituire il carattere con un editor, puoi fare così:
  1-trova/sostituisci (' con il testo apiceinizio (o come vuoi....)
  2-trova/sostituisci ') con il testo apicefine (o come vuoi....)
  3-trova/sostituisci ' con doppio apice
  4-trova/sostituisci apiceinizio con ('
  5-trova/sostituisci apicefine con ')
I miei viaggi: www.scarinciotto.com

mau_develop

  • Visitatore
Re:Gestione database esterno a Joomla
« Risposta #9 il: 11 Gen 2011, 10:07:25 »
addslashes();
http://php.net/manual/en/function.addslashes.php

magic quote com'è? ... disabilitato?

M.

Offline scarinciotto

  • Appassionato
  • ***
  • Post: 263
    • Mostra profilo
Re:Gestione database esterno a Joomla
« Risposta #10 il: 11 Gen 2011, 16:04:17 »
a volta con addslashes ho trovato qualche problemino...... ma magari erano casi particolari adesso non ricordo...
I miei viaggi: www.scarinciotto.com

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:Gestione database esterno a Joomla
« Risposta #11 il: 11 Gen 2011, 20:05:41 »
prova con mysql_real_escape_string()
Ciao
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline phcaze

  • Nuovo arrivato
  • *
  • Post: 10
    • Mostra profilo
Re:Gestione database esterno a Joomla
« Risposta #12 il: 12 Gen 2011, 10:16:07 »
- se devi sostituire il carattere con un editor, puoi fare così:
  1-trova/sostituisci (' con il testo apiceinizio (o come vuoi....)
  2-trova/sostituisci ') con il testo apicefine (o come vuoi....)
  3-trova/sostituisci ' con doppio apice
  4-trova/sostituisci apiceinizio con ('
  5-trova/sostituisci apicefine con ')

Così funziona , molte grazie. Perdo però le parole accentate, perchè nel database originale sono messe con l'apostrofo tipo CIVILTA'. Però non è un grosso problema potrebbe andare bene lo stesso.


prova con mysql_real_escape_string()
Ciao

Cosa fa questo comando?

Grazie

Offline scarinciotto

  • Appassionato
  • ***
  • Post: 263
    • Mostra profilo
Re:Gestione database esterno a Joomla
« Risposta #13 il: 12 Gen 2011, 10:47:12 »
Così funziona , molte grazie. Perdo però le parole accentate, perchè nel database originale sono messe con l'apostrofo tipo CIVILTA'. Però non è un grosso problema potrebbe andare bene lo stesso.

non è vero..... il terzo passaggio ti aggiunge il doppio apostrofo anche in quelle!!!!
All'editor non importa se la città si chiama SANT'ANTONIO o CIVILTA' .... lui con trova e sostituisci se ne trova 1 ne mette 2 se ne trova 2 ne mette 4 e così via.....
I miei viaggi: www.scarinciotto.com

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:Gestione database esterno a Joomla
« Risposta #14 il: 12 Gen 2011, 11:52:39 »

Cosa fa questo comando?


http://php.net/manual/en/function.mysql-real-escape-string.php

In parole povere formatta la stringa in modo tale che la query sia sicura, quindi se c'e un apostrofo gli aggiunge un escape, questa funzione è fondamentale per evitare l'sql injection ma si presta anche al tuo caso
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline phcaze

  • Nuovo arrivato
  • *
  • Post: 10
    • Mostra profilo
Re:Gestione database esterno a Joomla
« Risposta #15 il: 13 Gen 2011, 11:57:25 »
Grazie a tutti per le risposte. Con il metodo di sostituzione ho risolto e adesso ho pronte le tabelle nel database. Ho scritto qualche riga in php in modo da fare i collegamenti con i database per riportare i miei dati e funziona, però vorrei riportarli in una tabellina html, statica per ora, ma proprio non ci riesco :( Mi da errore. Utilizzo Jumi e nella articolo riporto semplicemente il nome del file php a cui connettermi.

Offline scarinciotto

  • Appassionato
  • ***
  • Post: 263
    • Mostra profilo
Re:Gestione database esterno a Joomla
« Risposta #16 il: 13 Gen 2011, 13:32:21 »
secondo me è un problema di path...... però sarebbe utile sapere l'errore....  :-\
I miei viaggi: www.scarinciotto.com

Offline phcaze

  • Nuovo arrivato
  • *
  • Post: 10
    • Mostra profilo
Re:Gestione database esterno a Joomla
« Risposta #17 il: 14 Gen 2011, 18:34:30 »
Dunque il codice php è il seguente:

Codice: [Seleziona]
<?php

global $my;

mysql_connect("IP""nome_utente""pass") or die(mysql_error());
mysql_select_db("nome_database") or die(mysql_error());

$result mysql_query("SELECT colonna2, colonna FROM associazione WHERE colonna2='$my->id'")
or die(
mysql_error()); 

$row mysql_fetch_array$result );

$result1 mysql_query("SELECT colonna, colonna1 FROM clienti WHERE colonna='$row[1]'")
or die(
mysql_error()); 

$row1 mysql_fetch_array$result1 );

echo 
"".$row['1'];
echo 
" ".$row1['1'];
echo 
" ".$row2['1'];

?>

E questo funziona, mi restituice quello che voglio. Adesso vorrei formattare un pò il modo in cui mi restituisce i risultati.
Vorrei creare una tabella html, e ci sono riuscito con il seguente codice d'esempio:

Codice: [Seleziona]
<table border="1">
    <tr>
       <td><? include("database.php") ?></td>
       <td>seconda cella</td>
   </tr>
</table>


Adesso vorrei fare un passo ulteriore. Praticamente cercare in una colonna di una tabella del database un certo valore, e visualizzare tutte le occorrenze che trova, una per riga di una tabella html. Non so se mi sono spiegato :)

Molte Grazie
« Ultima modifica: 14 Gen 2011, 18:51:12 da phcaze »

Offline phcaze

  • Nuovo arrivato
  • *
  • Post: 10
    • Mostra profilo
Re:Gestione database esterno a Joomla
« Risposta #18 il: 14 Gen 2011, 19:40:34 »
Sono riuscito a risolvere adattando una funzione che ho trovato su un forum :)

Codice: [Seleziona]
function SQLResultTable($Query)
{
    $link = mysql_connect(HOST, USER, PASS) or die('Could not connect: ' . mysql_error());      //build MySQL Link
    mysql_select_db(DB) or die('Could not select database');        //select database
    $Table = "";  //initialize table variable
   
    $Table.= "<table border='1' style=\"border-collapse: collapse;\">"; //Open HTML Table
   
    $Result = mysql_query($Query); //Execute the query
    if(mysql_error())
    {
        $Table.= "<tr><td>MySQL ERROR: " . mysql_error() . "</td></tr>";
    }
    else
    {
        //Header Row with Field Names
        $NumFields = mysql_num_fields($Result);
        $Table.= "<tr style=\"background-color: #000066; color: #FFFFFF;\">";
        for ($i=0; $i < $NumFields; $i++)
        {   
            $Table.= "<th>" . mysql_field_name($Result, $i) . "</th>";
        }
        $Table.= "</tr>";
   
        //Loop thru results
        $RowCt = 0; //Row Counter
        while($Row = mysql_fetch_assoc($Result))
        {
            //Alternate colors for rows
            if($RowCt++ % 2 == 0) $Style = "background-color: #00CCCC;";
            else $Style = "background-color: #0099CC;";
           
            $Table.= "<tr style=\"$Style\">";
            //Loop thru each field
            foreach($Row as $field => $value)
            {
                $Table.= "<td>$value</td>";
            }
            $Table.= "</tr>";
        }
        $Table.= "<tr style=\"background-color: #000066; color: #FFFFFF;\"><td colspan='$NumFields'>Query Returned " . mysql_num_rows($Result) . " records</td></tr>";
    }
    $Table.= "</table>";
   
    return $Table;
}

//Call the function like this:
echo SQLResultTable("SELECT * FROM TABLE");

Offline scarinciotto

  • Appassionato
  • ***
  • Post: 263
    • Mostra profilo
Re:Gestione database esterno a Joomla
« Risposta #19 il: 15 Gen 2011, 00:08:46 »
si dobrebbe funzionare.... anche se non scrivo mai il codice php in mezzo a quello html.... però vabbé.... tanto joomla è fatto tutto così...
I miei viaggi: www.scarinciotto.com

 



Web Design Bolzano Kreatif