Twitter Bootstrap già ci mette a disposizione gli strumenti per creare dei menu dropdown.

Di default non abbiamo strumenti per il menu multi dropdown.

Ma possiamo ovviare con un pò di CSS.

Prima di tutto vediamo la struttura HTML:

<ul class="nav navbar-nav">
    <li><a href="">Home</a></li>
    <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">
            MULTI<b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="">VOCE 1</a></li>
            <li><a href="">VOCE 2</a></li>
            <li class="dropdown-submenu">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown">voce 3</a>
                <ul class="dropdown-menu">
                    <li><a href="">VOCE 4</a></li>
                    <li><a href="">VOCE 5</a></li>
                </ul>
            </li>
        </ul>
    </li>
    <li><a href="">Logout</a></li>
</ul>

Qualche giorno fa abbiamo visto come connetterci a un db SQLite con Python.

Oggi vediamo la stessa con PHP.

Anche qua, se l'applicazione non è grande, potrebbe non servire un db come MySQL, e quindi potremmo usare un semplice SQLite e semplificarci un pò la vita.

Anche per PHP non c'è bisgno di nessun componente aggiuntivo; ha già tutte le funzioni per connessione e quant'altro.

Ma noi useremo anche PDO, e questo perchè così facendo, possiamo portarci dietro già le nostre funzioni!

Inoltre su Aruba sono stato costretto a farlo, in quanto le funzioni sqlite3 sono disabilitate per default.

In questo caso specifico, poi, vedremo come codificare il tutto in JSON.

Twitter Bottstrap offre di default sia una Navbar che il classico Dropdown.

Se guardate qua vedrete che è anche possibile combinare le due cose.

Il comportamento di default, però, prevede il click per aprire la lista, mentre io voglio aprirla passandoci sopra.

Vediamo come fare.

Partiamo dal codice HTML:

<div class="navbar navbar-inverse navbar-fixed-top">
                <div class="navbar-inner">
                    <a class="brand" href="#"></a>
                    <ul id="tab" class="nav">
                        <li class="active"><a href="home.php">Home</a></li>
                        <li class="dropdown">
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown">DD<b class="caret"></b></a>
                            <ul class="dropdown-menu">
                                <li><a href="">Voce 1</a></li>
                                <li><a href="">Voce 2</a></li>
                                <li><a href="">Voce 3</a></li>
                                <li><a href="">Voce 4</a></li>
                            </ul>
                        </li>
                        <li><a href="">Logout</a></li>
                    </ul>
                </div>
            </div>

Come vedete abbiamo una prima voce normale, poi una voce con class="dropdown" che al suo interno ha una seconda lista e prima un link che servirà per aprire la lista (è fondamentale).

Infine un'altra voce normale.

Lo scenario è questo.

Inserisco i dati in una tabella e subito dopo devo fare un inserimento in un'altra tabella collegata alla prima.

Per fare questo mi serve ovviamente l'id (inteso come campo di raccordo tra le tue tabelle) in modo da passarlo alla seconda tabella.

Per fare questo PDO ci mette a disposizione la funzione lastInsertId().

Quindi, supponendo di aver creato una classe per la connessione, possiamo iniziare da questo:

$objConn = Connessione::getInstance();

$lastRist = $objAdminConn->addSomething($par1, $par2, $par3);

$objAdminConn->addSomething2($par1, $par2, $lastRist);

Alla prima riga istanziamo la classe (che è Singleton, ma non cambia).

Articolo aggiornato il 31-05-2015

Il problema dei duplicato c'è sempre, soprattutto quando i db sono belli pieni di record e stanno li da anni.

Grazie a semplici operazioni però possiamo trovari i recod duplicati e cancellarli.

Ovviamente prima di cancellare dei record solo perchè doppi/tripli/ecc fate accertatevi che sia giusto e fate un bel backup.

Prima di tutto vediamo come trovare i record duplicati.

Collegatevi al vostro db ed eseguite una query del genere:

SELECT author_name, COUNT(*) as Num FROM book GROUP BY author_name HAVING Num > 1 ORDER BY Num DESC;
+-------------------------------+-----+
| author_name                   | Num |
+-------------------------------+-----+
| stephen king                  |  15 |
| christian jacq                |  13 |
| clive cussler                 |  10 |
| deitel - deitel               |   3 |
| clive cussler, paul kemprecos |   3 |
| tolkien                       |   3 |
| arthur c. clarke              |   2 |
| no autore                     |   2 |
| arthur schopenauer            |   2 |
| pirandello                    |   2 |
+-------------------------------+-----+

Questo è un esempio reale preso da un mio db.

Ho cercato quante volte lun autore fosse ripetuto (che in questo caso vuol anche dire quanti libri un autore ha scritto).

Come vedete ho usato la clausola HAVING, con la quale prendiamo solo quei valori che hanno un conteggio superiore a 1.