Salve a tutti,
ho creato un piccolo glossario che potete ranggiungere alla seguente pagina:
http://atuttascienza.altervista.org/blog/glossary/
l'idea è quella di far comparire l'intero alfabeto con le lettere attive per permettere all'utente di raggiungere la lettera desiderata. questo alfabeto lo voglio sopra ogni lettera del gloassario e non solo in alto.
ho creato il codice e sembra funzionare a dovere. per fare quello che volevo io però devo interrogare il database due volte. mi sembra uno spreco :-)
Codice PHP:
<?
global $wpdb;
$lettere= range('A','Z');
foreach ($lettere as $lett){
//SELEZIONO I TERMINI DEL GLOSSARIO
$vociglossario = $wpdb->get_results(
"
SELECT *
FROM avwp_posts
WHERE post_type= 'glossario'
AND post_title LIKE '$lett%'
ORDER BY post_title
"
);
//CONTEGGIO I TERMINI DEL GLOSSARIO
$conteggio = $wpdb->get_var(
"
SELECT COUNT(*)
FROM avwp_posts
WHERE post_type= 'glossario'
AND post_title LIKE '$lett%'
ORDER BY post_title
"
);
//COSTRUZIONE ALFABETO
if($conteggio !=0){
$links[] = "<a href=\"http://www.atuttascienza.altervista.org/blog/glossary#$lett\">$lett</a>";
}
else{
$links[]= "<span class=\"alfabeto_letter_inactive\">$lett</span>";
}
}
$link_alfabeto = implode(' - ', $links);
$alfabeto= "<div class=\"alfabeto\">$link_alfabeto</div>";
foreach ($lettere as $lett){
//SELEZIONO I TERMINI DEL GLOSSARIO
$vociglossario = $wpdb->get_results(
"
SELECT *
FROM avwp_posts
WHERE post_type= 'glossario'
AND post_title LIKE '$lett%'
ORDER BY post_title
"
);
//CONTEGGIO I TERMINI DEL GLOSSARIO
$conteggio = $wpdb->get_var(
"
SELECT COUNT(*)
FROM avwp_posts
WHERE post_type= 'glossario'
AND post_title LIKE '$lett%'
ORDER BY post_title
"
);
//SVILUPPO I TERMINI PER LETTERA
if($conteggio !=0){
echo $alfabeto;
<a name="<?echo $lett;?>"></a>
<?
echo <strong>$lett</strong></div>";
foreach($vociglossario as $voci){
$titolo = $voci->post_title;
$descrizione= $voci->post_content;
echo "<div>$titolo</div>";
echo "<div>$descrizione</div>";
echo "<br>";
}
}
}
?>
domanda come posso scriverlo in modo da interrogarlo solo una volta e avere lo stesso risultato visivo? si può fare?