Home

JiFile for Joomla!

JIFile
JiFile is a component for Joomla! that allows you to index file contents (PDF, DOC, etc..) to perform searches in them.

Learn more...  Demo

JoomPhoto Mobile

JPhotoMobile
JoomPhoto Mobile is a component for Joomla! that allows you to share the photos from your Android device to your site Joomla.

Learn more...  Demo

iFile Framework

IFile
IFile is an open source framework written entirely in PHP, allows the indexing of textual content of a document (DOC, PDF, EXCEL, etc.) and a quick search within them.

Learn more...  Demo

Easy Language

EasyLanguage
Easy Language is a plugin for easy and immediate management of multilingual texts in every possible area of joomla, articles, components, modules, metadata, template, other components(example K2) etc.

Learn more...

Article Book Effect

Article Book Effect
View Joomla articles with the effect turns the page of a book. This plugin will display the contents of an article in Joomla as a real book or magazine, using all the benefits of HTML5

Learn more...  Demo

 

Passport photo

Passport photo
The most popular Android app that allows you to print photos cards for your documents with your Android smartphone, in a simple and intuitive way.

Learn more...

 

Crazy Shadow

Crazy Shadow
Crazy Shadow is the 3D fast-paced and fun puzzle Android game! Try to rotate and drag shapes in the position of their shadows without fail! Solve in succession all combinations of levels of the game.

Learn more...

 

Admin Countdown

Admin Countdown
Module for Joomla! 2.5 and 3.x displays in the administration part of the site, a timer with countdown of the time remaining in your session.

Learn more...  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

Last comments

Forum Login