J'ai une problématique en terme de performance au niveau de l'utilisation de mémoire (memory_get_peak_usage beaucoup trop élevé) car je passe par une variable temporaire pour trier une liste par ordre alpha sur deux champs, je sais pas si je peux faire autrement.
J'ai une table contenant des milliers de livres.
Un livre a un nom et un nom_secondaire , dans mon listing (choix lettre T = je liste les livres dont le nom OU le nom_secondaire commence par T).
Je fais donc :
$query = mysql_query("SELECT nom, nom_secondaire FROM livres WHERE nom LIKE 't%'");
$query1 = mysql_query("SELECT nom, nom_secondaire FROM livres WHERE nom_secondaire LIKE 't%'");
$tmp = array();
while(list($nom,$nom_secondaire) = mysql_fetch_row($query)) {
$tmp[strtolower($nom)] = array('nom'=>$nom,'nom_secondaire'=>$nom_secondaire);
}
while(list($nom,$nom_secondaire) = mysql_fetch_row($query1)) {
$tmp[strtolower($nom_secondaire)] = array('nom'=>$nom_secondaire,'nom_secondaire'=>$nom);
}
ksort($tmp); //Je tri le tableau pour ranger par ordre alpha par nom et nom secondaire
//(un livre peut pas avoir un nom secondaire qu'un autre livre aurait en titre principal)
echo '<ul>';
foreach($tmp as $k => $v) {
echo '<li><a href="/livres/'.urlencode($v['nom']).'.html">'.$v['nom'].' ('.$v['nom_secondaire'].')</a></li>';
}
echo '</ul>';
Et mon soucis c'est que $tmp est énorme mais je vois pas comment faire sans lui pour trier par ordre alpha mes livres sur 2 champs (titre et titre secondaire).Quelqu'un aurait une meilleure idée ?
Merci.