PHP

JiFile per Joomla!

JIFile
JiFile è una componente per Joomla! che permette di indicizzare il contenuto dei file(PDF, DOC, ecc.) per poter effettuare delle ricerche al loro interno.

Scopri di più...  Demo

JoomPhoto Mobile

JPhotoMobile
JoomPhoto Mobile è una componente per Joomla! che ti permette di condividere le foto dal tuo dispositivo Android sul tuo portale Joomla!.

Scopri di più...  Demo

iFile Framework

IFile
IFile è un framework open source scritto interamente in PHP, permette l'indicizzazione dei contenuti testuali di un documento (DOC, PDF, EXCEL, etc) e una rapida ricerca all'interno degli stessi.

Scopri di più...  Demo

Easy Language

EasyLanguage
Easy Language è un plugin per la gestione semplice ed immediata di testi multilingua in ogni parte possibile di joomla, articoli, componenti, moduli, metadata, template, altri componenti(esempio K2) ecc.

Scopri di più...

Article Book Effect

Article Book Effect
Visualizza gli articoli di Joomla con l'effetto volta pagina di un libro. Questo plugin consente di visualizzare il contenuto di un articolo Joomla come un vero e proprio libro o una rivista, utilizzando tutti i vantaggi di HTML5

Scopri di più...  Demo

 

Fototessera

Article Book Effect
La più famosa Android App che ti permette di stampare le foto tessere per i tuoi documenti con il tuo smartphone Android, in modo semplice ed intuitivo.

Scopri di più...

 

Ombra pazza 3D

Ombra pazza 3D
Ombra Pazza è il puzzle game 3D frenetico e divertente per Android! Prova a ruotare le forme portandole nella posizione delle proprie ombre senza mai fallire! Risolvi una dopo l'altra tutte le combinazioni dei livelli di gioco.

Scopri di più...

 

Admin Countdown

Admin Countdown
Modulo per Joomla! 2.5 e 3.x visualizza nella parte di amministrazione del sito, un timer con il conto alla rovescia del tempo rimanente della tua sessione.

Scopri di più...  Demo

 

Velocizzare il codice, senza sprechi!

Quando si deve leggere da un database un insieme di righe, e poi visualizzarle a video,
una pratica comune di implementazione si realizza nei seguenti passi:

1) connessione al DB
1b) costruzione della query
1c) esecuzione della query
1d) salvataggio dei dati in un array
2) costruzione del layout grafico
2b) visualizzazione dei dati dall'array suddetto all'interno del layout


Cosicché, una possibile implementazione potrebbe essere quella del codice riportato di seguito:
e alzi la mano chi non l'ha pensata così, almeno una volta!
(si noti che, per comodità di esposizione, si sono utilizzate le primitive di mysql per realizzare
i suddetti passi; ma anche se volessimo considerare classi o wrapper "ad hoc" per collegarci al DB,  
il succo del discorso non cambierebbe)
<?php
$db_hostname = 'localhost';
$db_username = 'root';
$db_password = 'root';
$db_name     = 'magazzino';
$db_tabella  = 'utenti';
 
// 1) connessione al DB
$link = mysql_connect($db_hostname ,$db_username, $db_password);
$db_selected = mysql_select_db($db_name, $link);
// 1b) costruzione della query
$statement = "select id_utente, nome_utente, cognome_utente  from ".$db_tabella;
// 1c) esecuzione della query 
$result=mysql_query($statement,$link);
// 1d) salvataggio dei dati in un array
while ( $row = mysql_fetch_array($result, MYSQL_ASSOC) )    $list[]=$row;
?>
<!-- 2) costruzione del layout grafico -->
<html>
<body>
   <table border="1">
       <tr>
           <td>id</td>
           <td>nome</td>
           <td>cognome</td>
       </tr>
       
       <?  
       // 2b) visualizzazione dei dati dall'array suddetto all'interno del layout
       $cnt = count($list);
       for($t=0; $t<$cnt; $t++) { ?> 
           <tr>
           <td><?=$list[$t]['id_utente']?></td>
           <td><?=$list[$t]['nome_utente']?></td>
           <td><?=$list[$t]['cognome_utente']?></td>
           </tr>
       <? }  ?>
   </table> 
    
</body>    
    
</html>


A ben vedere però, potremmo chiederci se il punto 1d) sia davvero necessario.
Difatti i dati che ci interessano vengono ora elaborati due volte; la prima volta con l'estrazione dal DB
(e salvataggio in area di memoria), e la seconda volta con il "ripescaggio" da questa area di memoria:
questo doppio passaggio ha come conseguenza un aumento dei tempi di esecuzione dello script.

Quindi, si può procedere ad una revisione come segue:

1) connessione al DB
1b) costruzione della query
1c) esecuzione della query
2) costruzione del layout grafico
2b) contestuale estrazione dei dati e loro visualizzazione all'interno del layout

e il codice cambierebbe di conseguenza, nel modo seguente:

<?php
$db_hostname = 'localhost';
$db_username = 'root';
$db_password = 'root';
$db_name     = 'magazzino';
$db_tabella  = 'utenti';
 
// 1) connessione al DB
$link = mysql_connect($db_hostname ,$db_username, $db_password);
$db_selected = mysql_select_db($db_name, $link);
// 1b) costruzione della query
$statement = "select id_utente, nome_utente, cognome_utente  from ".$db_tabella;
// 1c) esecuzione della query 
$result=mysql_query($statement,$link);
?>
<!-- 2) costruzione del layout grafico -->
<html>
<body>
   <table border="1">
       <tr>
           <td>id</td>
           <td>nome</td>
           <td>cognome</td>
       </tr>
       
       <?   
	// 2b) contestuale estrazione dei dati e loro visualizzazione all'interno del layout
	while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { ?>
           
           <tr>
           <td><?=$row['id_utente']?></td>
           <td><?=$row['nome_utente']?></td>
           <td><?=$row['cognome_utente']?></td>
           </tr>
       <? }  ?>
   </table> 
    
</body>    
    
</html>


Naturalmente, ogni proposta di ulteriori miglioramenti e ottimizzazioni é la benvenuta!

...e buon 2014!

You have no rights to post comments

PHP Classes

IFile
by isApp.it

nominee
November 2013