?engine dinamico

Salve ho trovato questa topic del 2005 dove Gianni ha dato diverse possibilità per gestire un menu tramite delle variabili GET, volevo sapere se nel caso di queste var risiedano su un db come tirarle fuori e se si necessità di un ciclo for/while; sperando con poche righe di codice?

Hai diverse possibilità:

Con degli if - elseif - else:

<?php
if($_GET['page']  == 'pagina1')
{
   include("menu1.php");
}
elseif($_GET['page']  == 'pagina2')
{
   include("menu2.php");
}
elseif($_GET['page']  == 'pagina3')
{
   include("menu3.php");
}
else
{
   include("menu.php");
}
?> 



oppure con uno switch:
Codice:

<?php
switch ($_GET['page']) {
    case 'pagina1':
    include("menu1.php");
    break;

    case 'pagina2':
    include("menu2.php");
    break;

    case 'pagina3':
    include("menu3.php");
    break;

    default:
    include("menu.php");
    break;
}
?> 



oppure con un array:
Codice:

<?php
$pagine = array('pagina1' => 'menu1.php', 'pagina2' => 'menu2.php', 'pagina3' => 'menu3.php');
if(array_key_exists($_GET['page'], $pagine)
{
    include($pagine[$_GET['page']]);
}
else
{
    include("menu.php");
}
?>[/quote]


 bye[/quote]

Annoto anche i campi si trovano nella tabela Menu e sono "Sezione varchar(6) NULL e

  Pagina varchar(6) NULL e la stringa get da comporre è:

engine.php?$_GET['sezione']=$sezione&$_GET['pagina']=$pagina

 O0 :bye:

inviato 8 anni fa
EKELON77
modificato 8 anni fa
X 0 X

Nell'ultimo esempio di Gianni puoi facilmente popolare l'array con i dati del tuo database.

Attento perché una get diretta senza nemmeno un filtro sul valore inserito ti crea il caos e rischi sia tu che il server.

Personalmente in un sistema simile che avevo sviluppato a partire da un esempio preso su una rivista, usavo (ed uso per www.stilisticamente.com) un solo valore sull'url che confronto sempre (è un numero intero) per una verifica sul dato inserito, se il numero è sbagliato si viene reindirizzati ad una pagina di comodo.

Oggi ho abbandonato il sistema perché farraginoso nella modifica.

Una cosa anche sul metodo implementato da Gianni, invece di richiamare delle pagine di menù differenti per ogni chiamata, è meglio richiamare direttamente il link (come faccio oggi) così devi creare un solo file menu.php magari incluso direttamente nelle pagine del sito.

Per esempio in un sito ho fatto così:

$paginaCorrente = basename($_SERVER['PHP_SELF']);  // Preleva la pagina corrente per i confronti.

if ($paginaCorrente == 'index.php') echo '<li class="active">'; else echo '<li>';
echo '<a href="./" title="La pagina principale del sito">Home page</a></li>';
if ($paginaCorrente == 'lavoro.php') echo '<li class="active">'; else echo '<li>';
echo '<a href="lavoro.php" title="Cos\'è la genealogia, ovvero, come lavoro">Genealogia</a></li>';
if ($paginaCorrente == 'about.php') echo '<li class="active">'; else echo '<li>';
echo '<a href="about.php" title="Chi c\'è dietro Genealogia italiana">Chi sono</a></li>';
if ($paginaCorrente == 'contatti.php') echo '<li class="active">'; else echo '<li>';
echo '<a href="contatti.php" title="Come contattare Genealogia italiana">Contatti</a></li>';
if ($paginaCorrente == 'glossario.php') echo '<li class="active">'; else echo '<li>';
echo '<a href="glossario.php" title="Spiegazione di alcuni termini che si usano in genealogia">Glossario</a></li>';

Il tutto è in un solo file chiamato appunto: menu.php a sua volta incluso nella pagina web con i soliti metodi:

<div id="menu"><?= include_once('menu.php'); ?></div>

In questo modo quando si richiama una pagina il gestore del menù (oggi sono pomposo sì sì) controlla la pagina in uso e fai i dovuti confronti, appena riesce scrive la classe che evidenzia il link della pagina visualizzata, altrimenti scrive l'elemento di lista con il link a seguire, ma senza il richiamo alla classe che evidenzia la pagina.

Semplice ed efficace, su piccoli siti con pochi link o che al limite non variano mai, ma se hai un blog che aggiorni spesso il sistema non funzionerebbe perché finiresti oltre al blog ad aggiornare continuamente anche il file menu.php ecco perché sto cercando anche io di renderlo con un sistema di database.

Piano piano ci si arriva :)

risposto 8 anni fa
Marco Grazia
modificato 8 anni fa
X 0 X

Si è vero non è bello aggiornare il menu staticamente, infatti io penso che sia pobbile utilizzando la funzione MYSQL_FETCH_ARRAY() di PHP, eseguendo la query per la tabella dei menu e restituirti i valori di una sezione e della pagina; ma la domanda che mi pongo adesso è come faccio a sapere dove sono sono costretto a fare come ha fatto gianni con l'aggiunta di un ciclo for?

risposto 8 anni fa
EKELON77
X 0 X

Penso che basterebbe un ciclo sulla linea del menù.

Estrai i dati dal database dentro che so un ciclo foreach e metti il valore dentro il link.

ciclo che prende i dati

echo "<li><a href='$valoreLink' title='$valoreTitle'>$valoreMenu</a></li>";

fine ciclo

e ti costruisci la lista con tutti i link.

risposto 8 anni fa
Marco Grazia
modificato 8 anni fa
X 0 X

Scusa se hai detto che dovrebbe funzionare perchè non lo fai anche tu? O0

risposto 8 anni fa
EKELON77
X 0 X
Scusa se hai detto che dovrebbe funzionare perchè non lo fai anche tu? O0

Perché poi dovrei passartelo  ;)

A parte gli scherzi perché ora sto facendo altro e anche perché il tutto dev'essere legato ad un progetto molto più grande che ora ho accantonato.

In pratica ora come ora faccio a mano, tanto i lavori ch mi capitano non vanno mai oltre le 10 pagine e quei lavori li faccio a mano che ci metto meno.

Se lo faccio lo metto qui come [cerotto].

risposto 8 anni fa
Marco Grazia
X 0 X

Sai gran parte della logica che utilizzo è derivata dalla programmazione j2ee e sui progetti su cui lavoro, non ho lavori su cui applicare e raffinare tecniche di sviluppo PHP e non lo faccio per lucro ma solo per HOBBY...!!! ;) :bye:

risposto 8 anni fa
EKELON77
X 0 X

Guarda che scherzavo sul fatto di passare i compiti :)

risposto 8 anni fa
Marco Grazia
X 0 X

 O0 nn ti preoccupare se mi trovo fare i compiti dopo te li passo  :bye:

risposto 8 anni fa
EKELON77
X 0 X

Salve ho trovato questa topic del 2005 dove Gianni ha dato diverse possibilità per gestire un menu tramite delle variabili GET, volevo sapere se nel caso di queste var risiedano su un db come tirarle fuori e se si necessità di un ciclo for/while; sperando con poche righe di codice?

Hai diverse possibilità:

Con degli if - elseif - else:

Citazione

<?php
if($_GET['page']  == 'pagina1')
{
   include("menu1.php");
}
elseif($_GET['page']  == 'pagina2')
{
   include("menu2.php");
}
elseif($_GET['page']  == 'pagina3')
{
   include("menu3.php");
}
else
{
   include("menu.php");
}
?>

oppure con uno switch:

Codice:

<?php
switch ($_GET['page']) {
    case 'pagina1':
    include("menu1.php");
    break;

    case 'pagina2':
    include("menu2.php");
    break;

    case 'pagina3':
    include("menu3.php");
    break;

    default:
    include("menu.php");
    break;
}
?>

oppure con un array:

Codice:

<?php
$pagine = array('pagina1' => 'menu1.php', 'pagina2' => 'menu2.php', 'pagina3' => 'menu3.php');
if(array_key_exists($_GET['page'], $pagine)
{
    include($pagine[$_GET['page']]);
}
else
{
    include("menu.php");
}
?>

Salve sto approntato il file che ha citato Gianni, il problema  è che tutto valido ma non vorrei renderlo statico, mi spiego meglio il menu lo realizzato tramite il record presenti nel db e tramite un file che genera un stringa che rappresenta le voci del menu; posso fare lo stesso con li if - elseif - else o swith, generando le if o i switch a sencodo delle voci caricate sul db?   :angel: O0

risposto 8 anni fa
EKELON77
X 0 X

Se usi una tabella del database non hai bisogno di mettere degli IF o uno switch, ti basta fare una SELECT per cercare il nome del file da includere in base al parametro passato via URL. Sto ipotizzando ovviamente che la tabella del database contiene per ogni elemento del menu sia il relativo parametro dell'URL (pagina1, pagina2, pagina3), sia il nome del file da includere (menu1.php, menu2.php, ecc.)

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

quindi io nella tabella ho il campo PAGINA e il file navigation.php  avrà questa stringa

get "navigation.php?pagina=$pagina&principale=$princlivmenu&primo=$primolivmenu", di cui pagina mi serve per chiamare il file da includere e principale e primolivello;  uno serve per dire quale è il menu di partenza deve stampare altro per aprire il primo livello stampando html.

risposto 8 anni fa
EKELON77
X 0 X

riesco così ad aprire ad albero il menu e lnkando cambio la pagina centrale?  :buck:

risposto 8 anni fa
EKELON77
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda

Domande simili