Joomla.it Forum
Non solo Joomla... => Sviluppo => : franklg 30 Jul 2006, 20:59:59
-
Ciao a tutti,
solo da poco sono entrato nel mondo joomla!!
sono riuscito a creare un semplice componente che visualizza alcuni campi e un logo, fin qui nessun problema (diciamo così).
Ho tentato poi di creare un componente che esegua una semplice query su un database con la visualizzazione dei risultati.Nel momento in cui clicco sulla voce del menu, in cui ho inserito questa componente, i risultati vengono visualizzati, ma la pagina principale di joomla viene quasi completamente stravolta, in poche parole, il risultato della query non viene visualizzato nella parte centrale della pagina, come per gli altri componenti, ma occupa anche altre zone del video.
SONO DISPERATO!!!
Esiste qualche componente (semplice) già sviluppato che esegua una query e visualizzi i risultati, in maniera tale da poter vedere come è stato realizzato?
Qualcuno mi sa dare una dritta su come realizzare questo tipo di componente?
Saluti Frank
-
Devi usare le classi di sistema fornite da Joomla, anche se il layout non è legato alla query.
Per preparare la query:
$database->setQuery($query, $offset, $limit);
Per ricavare i risultati, una delle 3:
$database->loadObjectList();
$database->query();
$database->loadAssocList();
Ad esempio:
$database->setQuery("SELECT * FROM ...");
$records = $database->loadObjectList();
if($records != null){
for each($records as $record){
echo $record->nomeCampo1;
echo $record->nomeCampo2;
...
}
}
-
Ciao Napo,
ti ringrazio per il suggerimento, faccio qualche prova.
Hai qualche suggerimento per adattare il layout del mio componente alla pagina principale di joomla?
grazie Frank
-
No, dipende molto dal template che stai usando e da come vuoi visualizzare le informazioni.
-
il template che sto usando è quello standard di joomla, la visualizzazione e una visualizzazione normalissima di righe formate da 3 o quattro campi testo al centro della pagina, come per gli altri componenti.
saluti
-
Ma hai usato qualche classe del foglio di stile?
-
Ragazzi, forse ho individuato qualè l'istruzione che provoca lo sfasamento della finestra; è la seguente: mysql_select_db ( $db, $connect)
se tolgo questa istruzione, e faccio visualizzare stringhe di testo o qualunque altra cosa, va tutto bene.
Da premettre che la visualizzazione dei dati della tabella del database viene effettuata correttamente, solo che i menù laterali e superiore spariscono.
La tabella da cui faccio l'interrogazione è una tabella di un database mysql, la tabella non è una tabella del database joomla.
Se a qualcuno viene un'idea si faccia sentire.
saluti Frank
-
Mi sembra un pò impossibile... ???
Come scritto nella documentazione(http://it.php.net/manual/it/function.mysql-select-db.php) la funzione restituisce un valore booleano e non fa output.
-
e pure è così. ho provato a togliere una la volta le istruzioni dello script php, quella che determina il problema è proprio questa.
-
E' possibile vedere il codice?
-
ecco il codice:
<?
1. defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
2. $db_host = "localhost";
3. $db_user = "root";
4. $db_pass = "";
5. $db = "azienda";
6. $tabella= "articoli";
7. $connect = @mysql_connect($db_host, $db_user, $db_pass) or die("Impossibile connettersi a MySQL.");
8. @mysql_select_db($db) or die("Impossibile selezionare il db " . "<strong>". $db . "</strong>.");
9. //seleziona i dati
10. $contatore = @mysql_query("SELECT COUNT(*) FROM $tabella") or die ("Errore nell'applicazione.");
11. $n_row = @mysql_fetch_array($contatore) or die ("Errore nell'applicazione.");
12. //il messaggio per l'assenza di dati può essere modificato
13. if ($n_row[0] == FALSE)
14. {
15. echo "Non sono stati ancora inseriti dati nel db " . "<strong>". $db . "</strong>.
";
16. }
17. */
18. $query = "SELECT codice_art, descrizione FROM $tabella";
19. $result = @mysql_query($query, $connect) or die ("Impossibile visualizzare i dati.");
20. ?> <table> <?
21. while ( $dati = mysql_fetch_array($result) ) {
22. echo $dati[descrizione]."</tr>";
23. echo "
"."\n";
24. }
25. ?></table><?
26. ?>
se tolgo le istruzioni dalla 8(compresa) alla fine (il programma non fa praticamente niente) va bene, se aggiungo solo l'istruzione 8 allora si presenta il problema.
grazie frank
-
Tutte le istruzioni "incriminate" hanno un die() in caso di errore, quindi fanno output.
Verifica se una di queste va in errore. Potresti non vederlo ma esserci.
-
Avevo già verificato, ma non ci sono errori, per maggior sicurezza avevo anche eliminato le istruzioni die().
Il problema è stato risolto riselezionando il db di joomla prima di chiudere la connessione con mio db. Il perchè di questo comportamento non me lo so spiegare, qualcuno sa dare una spiegazione?
Saluti Frank
-
a me dice Direct Access to this location is not allowed. come mai?
vorei fare una quesri su una tabella e mostrarla.
grazie