Manuali.it
Ciao e Benvenuto/a nel Forum di Manuali.it !
Non sei registrato? Registrati subito cliccando QUI! E utilizza tutte le funzionalita' del sito!
Ci vediamo sul Forum !
Lo Staff di Manuali.it
Oggi è mar mag 22, 2012 8:24 pm

Tutti gli orari sono UTC +2 ore




Apri un nuovo argomento Rispondi all’argomento  [ 5 messaggi ] 
Autore Messaggio
 Oggetto del messaggio: Menu multilivello tramite CSS, PHP, MYSQL
MessaggioInviato: mar ott 19, 2010 4:54 pm 
Non connesso
Utente
Utente

Iscritto il: mar giu 06, 2006 11:24 pm
Messaggi: 41
Salve ragazzi,
mi sono recentemente imbattuto in un semplice problema : come poter realizzare un menu con categorie e sottocategorie in maniera dinamica.

Navigando nella rete, ho trovato molte soluzioni, alcune da scartare, altre molto complesse.
Ne ho trovata tuttavia una, che mi è parsa molto semplice e allo stesso tempo funzionale.
Di conseguenza, me la sono studiata e apportando alcune modifiche , sono riuscito a sistemarla in un modo quasi standard per cio che riguarda la realizzazione di un menu multilevel.
Allora, andiamo a cominciare.Il test viene effettuato in locale tramite l'utilizzo di wamp server.
Se preferite, potete utilizzare easyphp.Io personalmente preferisco wamp.

1 . Creazione database
Attiviamo wamp server ed accediamo alla pagina :
http://localhost/phpmyadmin/;
Creiamo il nostro database : menu_categorie1 ;
Clicchiamo sulla linguetta : SQL ;
Copiamo il seguente codice e lo incolliamo nella text area dove inserire la query :

Codice:
-- --------------------------------------------------------

--
-- Struttura della tabella `categories`
--

CREATE TABLE IF NOT EXISTS `categories` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `parent` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=17 ;

--
-- Dump dei dati per la tabella `categories`
--


2 . Inserimento dati nel database
Una volta eseguita la creazione della tabella categories, procediamo all'inserimento di alcuni dati, che ci serviranno come esempio concreto nella visualizzazione finale del risultato.

Sempre da phpmyadmin, riandate sulla linguetta SQL.
Copiate ed incollate il codice qui di seguito.
Codice:
--
-- Dump dei dati per la tabella `categories`
--

INSERT INTO `categories` (`id`, `name`, `parent`) VALUES
(1, 'Web development', 0),
(2, 'Application development', 0),
(3, 'Linux', 0),
(4, 'Misc', 0),
(5, 'Php', 1),
(6, 'Mysql', 1),
(7, 'Javascript', 1),
(8, 'CSS', 1),
(9, 'C plus plus', 2),
(10, 'wxWidgets', 2),
(11, 'Tutorials', 3),
(12, 'My scripts', 4),
(13, 'semplici scripts', 9),
(14, 'ciclo if', 13),
(16, 'ajax', 0);

Per quanto riguarda il database, abbiamo finito.
L'esempio è molto semplice.Andiamo avanti.

3 . Creazione file config.inc.php
Nella cartella WWW di wampserver, creaiamo questa altra directory : menu_categorie1.
Al suo interno, creiamo un nuovo file : config.inc.php.
Copiate ed incollate il seguente codice :
Codice:
<?php
$db_host = "localhost";
$db_user = "root";
$db_password = "";
$db_database ="menu_categorie1";
$db_tabella ="menu";

$connessione = mysql_connect($db_host, $db_user,$db_password);

if(!$connessione)
{
echo"Impossibile connettersi al database:".mysql_error();
exit;
}

if(!mysql_select_db($db_database))
{
  echo"Impossibile accedere al database selezionato $db_database:".mysql_error();
  exit;
}
?>

Salvate e chiudete il file.

4 . Creazione file function.inc.php
Adesso andiamo a creare un secondo file : funcition.inc.php, nella stessa cartella : menu_cateogire1.
Copiate ed incollate il seguente codice :
Codice:
<?php

function generate_menu($parent)
{
    global $menu_array;

    if($parent == 0)
        {
        $ul_value ='<ul class="root_menu">';
        $ul_value .="\n";
     }
     else
     {
       $ul_value='<ul class="testulnested">';
       $ul_value.="\n";
     }
        $has_childs = false;
        foreach($menu_array as $key => $value)

        {
                if ($value['parent'] == $parent)

                {
                        if ($has_childs == false)

                        {
                         $has_childs = true;
                          echo $ul_value;
                        }

                        $valore = check_child($key);
                        if($valore >=1)
                        {
                        echo '<li><a class="image" href="#'.$value['name'] . '/">' . $value['name'].'</a>';

                        echo"\n\n";
                        }

                        else
                        {
                        echo '<li class="no_image"><a href="#'.$value['name'] . '/">' . $value['name'].'</a>';

                        echo"\n\n";
                        }
                        generate_menu($key);

                        //call function again to generate nested list for subcategories belonging to this category

                        echo '</li>';
                        echo"\n";


                }


        }

        if ($has_childs == true)
        {


          echo'</ul>';
          }


}
function check_child($index){
$query = mysql_query("SELECT count(id) as quanti FROM categories where  parent='$index'");
$data = mysql_fetch_array($query);
$valore = $data['quanti'];
return $valore;
}
?>

Salviamo il file e chiudiamo.
Abbiamo quasi finito.....
5 . Creazione file style.css
Sempre nella cartella menu_categorie1, creiamo il foglio di stile.
Copiare ed incollare il seguente codice :
Codice:
ul.root_menu ul.testulnested{
border:0px solid #990000;
list-style: none;
position:absolute;
left: 170px;
top: 0;
display: none;
width: 180px;
margin-top: 0px;
padding:0px 2px 2px 0px;
}
ul.testulnested li ul.testulnested
{
list-style: none;
position:absolute;
left: 170px;
top: 0;
display: none;
width: 170px;
margin-top: 0px;
padding:0px 2px 2px 0px;
}
ul.root_menu li:hover>ul{display:block}
ul.root_menu ul{position: absolute;left:-1px;top:98%;}
ul.root_menu ul ul{position: absolute;left:98%;top:-2px;}
ul.root_menu,ul.root_menu ul {
   margin:0px;
   list-style:none;
   padding:0px 0px 0px 0px;
   background: #369;
   background-repeat:repeat;
   border:0px solid #000000;
   }
ul.root_menu {
   display:block;
   zoom:1;
   width:180px;
   margin: 20px 0 0 8px;
}
ul.root_menu ul{
   width:180px;
}
ul.root_menu li{
   display:block;
   margin:0px 0px 0px 0px;
width:170px;
   font-size:0px;
}

ul.root_menu li a.image {

background-image:url(images/freccia.gif);
   background-position:right center;
   background-repeat: no-repeat;
}

ul.root_menu li a.image:hover {
background-image:url(images/freccia.gif);
   background-position:right center;
   background-repeat: no-repeat;
}

ul.root_menu a{
   display:block;
   vertical-align:middle;
      margin:0;
      background: #369;
   border:0px solid #6655ff;
   text-align:left;
   text-decoration:none;
   padding-left:8px;
      height:15px;
   font:normal 11px Verdana;
   color: #ffffff;
   text-decoration:none;
      padding-top: 8px;
padding-bottom: 8px;
border-bottom: 1px solid #467bbe;
}
ul.root_menu ul a {
   text-align:left;
   white-space:nowrap;
}
ul.root_menu li:hover{
   position:relative;
}

ul.root_menu li a:hover{
   position:relative;
   background-color:#4792E6;
   border:0px solid #665500
   font:normal 11px Verdana;
   color: #000000;
   text-decoration:none;
}



6 . Creazione file index.php
Creiamo adesso il nostro file index.php.
Copiare ed incollare il seguente codice:
Codice:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <title>Menu multilivello dinamico con css, php e mysql</title>
     <link href="style.css" rel="stylesheet" type="text/css" />

</head>
<body>


<?php

include "config.inc.php";
include "function.inc.php";

$query = mysql_query('SELECT * FROM categories');

while ( $row = mysql_fetch_assoc($query) )
{
  $menu_array[$row['id']] = array('name' => $row['name'],'parent' => $row['parent']);
}
generate_menu(0);

?>
</body>
</html>

Salviamo e chiudiamo il file.

A questo punto non rimane che andare su
http://localhost/menu_categorie1/index.php
e guardare il risultato.
NOTA: Sempre nella cartella menu_categorie1, va inserita una directory: images che contiene una gif nominata freccia.gif. Se cercate nella rete o ne avete gia una, le dimensioni sono 11x11.

Questo è il risultato finale:
Immagine





Un saluto a tutto lo staff ed agli utenti di questo forum.
A presto.

_________________
spero di esserti stato di aiuto.
Per qualsiasi cosa mi puoi contattare o tramite MP, email, msn o , ancora meglio, qui.
buona vita



Condividi: Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Technorati Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a OKNOtizie Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Segnalo Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Digg Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Boomark.it Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Furl Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a de.li.cious Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Yahoo Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Stumbleupon Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Google Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a BlogLines Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a SocialDust.com Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Live.com Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Wikip.it
Top
 Profilo  
 
 Oggetto del messaggio: Re: Menu multilivello tramite CSS, PHP, MYSQL
MessaggioInviato: dom gen 16, 2011 9:54 pm 
Non connesso
Novizio
Novizio

Iscritto il: dom gen 16, 2011 9:44 pm
Messaggi: 3
ciao.
il tuo articolo, oltre che essere interssante, e' la risposta alle mie ricerche, ovvero creare un menu prendendo i dati da un db.
la mia domanda e'; sarebbe possibile avre un css che mi dia una configurazione ad albero del menu stesso?
ciao e grazie

milter



Condividi: Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Technorati Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a OKNOtizie Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Segnalo Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Digg Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Boomark.it Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Furl Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a de.li.cious Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Yahoo Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Stumbleupon Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Google Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a BlogLines Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a SocialDust.com Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Live.com Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Wikip.it
Top
 Profilo E-mail  
 
 Oggetto del messaggio: Re: Menu multilivello tramite CSS, PHP, MYSQL
MessaggioInviato: dom gen 16, 2011 11:52 pm 
Non connesso
Utente
Utente

Iscritto il: mar giu 06, 2006 11:24 pm
Messaggi: 41
milter ha scritto:
ciao.
il tuo articolo, oltre che essere interssante, e' la risposta alle mie ricerche, ovvero creare un menu prendendo i dati da un db.
la mia domanda e'; sarebbe possibile avre un css che mi dia una configurazione ad albero del menu stesso?
ciao e grazie

milter

Ciao,ad albero intendi come la visualizzazione delle cartelle in Esplora risorse di windows?
Se è cosi, vedo cosa posso fare....non è una cosa proprio semplicissima ;)

_________________
spero di esserti stato di aiuto.
Per qualsiasi cosa mi puoi contattare o tramite MP, email, msn o , ancora meglio, qui.
buona vita



Condividi: Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Technorati Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a OKNOtizie Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Segnalo Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Digg Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Boomark.it Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Furl Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a de.li.cious Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Yahoo Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Stumbleupon Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Google Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a BlogLines Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a SocialDust.com Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Live.com Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Wikip.it
Top
 Profilo  
 
 Oggetto del messaggio: Re: Menu multilivello tramite CSS, PHP, MYSQL
MessaggioInviato: lun gen 17, 2011 10:59 am 
Non connesso
Amministratore
Amministratore
Avatar utente

Iscritto il: mer set 07, 2005 10:24 am
Messaggi: 6508
Località: Parma
milter ha scritto:
ciao.
il tuo articolo, oltre che essere interssante, e' la risposta alle mie ricerche, ovvero creare un menu prendendo i dati da un db.
la mia domanda e'; sarebbe possibile avre un css che mi dia una configurazione ad albero del menu stesso?
ciao e grazie

milter


Immagine

Ciao e Benvenuto/a nel Forum di Manuali.it !
Ti ringraziamo per esserti iscritto/a ed essere entrato/a a far parte della nostra comunità.

Ti invitiamo a leggere con attenzione il Regolamento del Forum che trovi QUI e a personalizzare il tuo profilo utente inserendo una firma e sopratutto un avatar. Per entrare nel tuo profilo ti basterà cliccare sulla scritta "Profilo" nella parte alta di qualsiasi pagina del Forum.

Per qualsiasi problema, dubbio o richiesta non esitare a contattarci nella sezione Contatti con la Redazione o a contattare un membro dello staff via e-mail o Messaggio Privato.

Ci vediamo sul Forum !
Un saluto.
Lo Staff

_________________
Riccardo

-Corsair 550W 80plus
-SEAGATE Barracuda 1TB
-Windows 7 Home Premium 64bit
-G.SKILL DDR3 4GB CL7
-GIGABYTE P55-USB3
-Intel CORE i5 760/2.8HGz
-Inter-Tech CK-35 Observer Rubber Black Coated ATX-Tower
-Gigabyte nVidia 460 1GB DDR5


Immagine



Condividi: Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Technorati Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a OKNOtizie Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Segnalo Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Digg Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Boomark.it Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Furl Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a de.li.cious Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Yahoo Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Stumbleupon Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Google Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a BlogLines Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a SocialDust.com Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Live.com Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Wikip.it
Top
 Profilo E-mail  
 
 Oggetto del messaggio: Re: Menu multilivello tramite CSS, PHP, MYSQL
MessaggioInviato: lun gen 17, 2011 9:29 pm 
Non connesso
Novizio
Novizio

Iscritto il: dom gen 16, 2011 9:44 pm
Messaggi: 3
armadillo ha scritto:
Ciao,ad albero intendi come la visualizzazione delle cartelle in Esplora risorse di windows?.................


...si..bravo, proprio quella..in rete se ne trovano molti, ma non attingono i dati da un db...
..ne ho trovato uno solo.. ma nn sono riuscito a farlo funzionare...
..ti do il link casomai ti servisse come spunto.. http://www.codeassembly.com/How-to-display-infinite-depth-expandable-categories-using-php-and-javascript/
..grazie per l'aiuto...
:)



Condividi: Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Technorati Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a OKNOtizie Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Segnalo Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Digg Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Boomark.it Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Furl Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a de.li.cious Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Yahoo Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Stumbleupon Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Google Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a BlogLines Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a SocialDust.com Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Live.com Aggiungi: Menu multilivello tramite CSS, PHP, MYSQL a Wikip.it
Top
 Profilo E-mail  
 
Visualizza ultimi messaggi:  Ordina per  
Apri un nuovo argomento Rispondi all’argomento  [ 5 messaggi ] 

Tutti gli orari sono UTC +2 ore


Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi

Cerca per:
Vai a:  
2000 - 2011 Manuali.it © - P.IVA 00992330670 - Tutti i diritti riservati - Note Legali - Condizioni di utilizzo del sito - Privacy - E' vietata qualsiasi riproduzione parziale o completa se non autorizzata - # Powered by Cykel Software
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzione Italiana phpBB.it
phpBB SEO