Richiamare pagine.php in modo dinamico

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
Buongiorno,
sto realizzando un sito in cui vi sono delle parti fisse (header, footer ) e delle parti che variano e che ho inserito in tabelle nel database come il menù e il contenuto centrale della pagina che varia a seconda della voce di menù cliccata. Per quanto riguarda il menù sono riuscita ad estrarlo dal database e a visualizzare le voci sul sito, mentre il dubbio che ho è sul contenuto, cioè le pagine.php : devo inserirle nel database? e se si come? (come testo?) e poi come far si che per es. al click del "menu home" mi compaia la pagina "home.php?"

Spero di essere stata chiara
Grazie
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Inserire le pagine in un database può essere utile se poi hai intenzione di creare un pannello attraverso cui amministrare tali pagine. In quel caso le salvi come formato testo (ti suggerisco di usare Markdown) e successivamente le recuperi tramite l'ID o lo slug (il nome SEO-friendly).
 

Bivio

Utente Attivo
19 Mag 2010
91
0
6
Ciao, io di solito faccio cosi:

Creo un file di nome tema.php dove inserisco le parti del tema che non cambiano mai nel sito, esempio:

PHP:
<?php
	function menu() {
?>
	<div id="menu">
		<ul>
			<li><a href="#">link1</a></li>
			<li><a href="#">link2</a></li>
			<li><a href="#">link3</a></li>
		</ul>
	</div>
<?php
}
?>
<?php 
<?php
	function footer() {
?>
  <div id="footer">
      CONTENUTO FOOTER 
  </div>
<?php
}
?>

Una volta preparato il file tema.php, ti basta solo richiamare la funzione nella pagina che ti serve esempio:

PHP:
<?php include_once("include/tema.php"); ?>
<html>
<head>
</head>
<body>
<div id="header">
<?php menu() ?>
</div>
<div id="wrapper">
	<!-- CONTENUTO PAGINA -->
</div>
<?php footer() ?>
</body>
</html>
Cosi, se devi modificare un link del menu ti basta aprire il file tema.php e fare la modifica, cosi tutti i cambiamenti saranno validi per tutte le pagine del sito.
 
Ultima modifica:

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Per inserire i contenuti direttamente nel database puoi seguire questo nostro tutorial, se non ti interessa la parte dei commenti puoi non inserirla.
 

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
Ciao, io di solito faccio cosi:

Creo un file di nome tema.php dove inserisco le parti del tema che non cambiano mai nel sito, esempio:

PHP:
<?php
	function menu() {
?>
	<div id="menu">
		<ul>
			<li><a href="#">link1</a></li>
			<li><a href="#">link2</a></li>
			<li><a href="#">link3</a></li>
		</ul>
	</div>
<?php
}
?>
<?php 
<?php
	function footer() {
?>
  <div id="footer">
      CONTENUTO FOOTER 
  </div>
<?php
}
?>

Una volta preparato il file tema.php, ti basta solo richiamare la funzione nella pagina che ti serve esempio:

PHP:
<?php include_once("include/tema.php"); ?>
<html>
<head>
</head>
<body>
<div id="header">
<?php menu() ?>
</div>
<div id="wrapper">
	<!-- CONTENUTO PAGINA -->
</div>
<?php footer() ?>
</body>
</html>
Cosi, se devi modificare un link del menu ti basta aprire il file tema.php e fare la modifica, cosi tutti i cambiamenti saranno validi per tutte le pagine del sito.

Grazie Bivio,
però anche il menù lo gestisco da database ed inoltre voglio caricare le pagine sulla stessa index.php modificando solo la parte centrale per questo non posso fare come dici tu. A meno che è propio il discorso di voler gestire tutto su una pagina caricando le altre pagine che è sbagliato...
 

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
Inserire le pagine in un database può essere utile se poi hai intenzione di creare un pannello attraverso cui amministrare tali pagine. In quel caso le salvi come formato testo (ti suggerisco di usare Markdown) e successivamente le recuperi tramite l'ID o lo slug (il nome SEO-friendly).

Ma se la inserisco come testo nel database qual è la query che mi consente di richiamarla in modo dinamico in base all'id? va fatto un include?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Supponiamo che memorizzi le pagine nella tabella pagine. Crei una pagina pagina.php (scusa i giochi di parole :D) e scrivi qualcosa simile a questo:
PHP:
<?php
mysql_connect('localhost', 'root', 'pass') or die(mysql_error());
mysql_select_db('database') or die(mysql_error());

$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;

$sql   = sprintf('SELECT * FROM pagine WHERE id = %d', $id);
$query = mysql_query($sql) or die(mysql_error());

if (mysql_num_rows($query) == 0) {
    header('HTTP/1.0 404 Not Found');
    die('Pagina non trovata!');
}

$row = mysql_fetch_assoc($query);

echo $row['contents'];
?>
 

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
Mi da questo errore:
Warning: Cannot modify header information - headers already sent by (output started at /Applications/XAMPP/xamppfiles/htdocs/vimer 2/index.php:1) in /Applications/XAMPP/xamppfiles/htdocs/vimer 2/index.php on line 101
Pagina non trovata!

e comunque non riesco a capire il nesso tra il contenuto inserito nella tabella e la pagina da includere nel contenitore..
Ma se pensassi ad un include dinamico pensi sia possibile?
cmq ti metto il codice magari puoi consigliarmi meglio :D

PHP:
<?php
	if (!isset($_GET["menuid"]))
	{
		$IdMenu = "";
		$Nome_Menu = "Homepage";
	}
	else
	{
		$IdMenu = $_GET["menuid"];	
	}
<?php include('include/Connetti.php'); ?>
<body>
 <img class="bg" src="immagini/image1.jpg" width="1680" height="1050" />
 
 <div id="contenitore_sito">

<?php include('include/header.php'); ?>

	<div id="corpo_centrale">
		<div id="col_sin">
    
	<?php
                $Risultato=mysql_query("select * from tblmenu order by Posizione", $conn);
                if (!$Risultato)
                {
                    die("La tabella selezionata non esiste " . mysql_error());
                }
                
                while ($riga=mysql_fetch_array($Risultato))
                {
            	   if ($IdMenu <> $riga[ID])
				   {
				   echo "<ul id='menu'><li><a href='index.php?menuid=" . $riga[ID]. "'>" . $riga[Nome_menu] . "</li></a></ul>";
				   }
				   else
				   {
				   $Nome_Menu = $riga[Nome_menu];
				   echo "<ul id='menu'><li>" . $riga[Nome_menu] . "</li></ul>";
				   }
			    }
            ?> 
          
 
        
       <?php include('include/info.php'); ?> 
   </div> 
    <div id="centro">
     <?php
                $Query = "SELECT * FROM tblcontenuti ";
				$Query .= "WHERE ID_MENU = " . $IdMenu;
				$Risultato=mysql_query($Query, $conn);
                if (!$Risultato)
                {
                   die("La pagina selezionata non contiene alcun valore e/o testo ");
                }
                
                while ($riga=mysql_fetch_array($Risultato))
                {
				   echo "<p>" . $riga[Contenuto] . "</p>";// questa è il contenuto della tabella ma me lo aggiunge come testo non come pagina.php...come fare?
			    }
            ?> 
	   
	  

    </div>

               
 </div>


<?php include('include/footer.php'); ?>


</div>
</div>
<?php include('include/Chiudi.php'); ?>

</body>
</html>
?>
 

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
Allora spaero di essere piu' chiara.
Quello che voglio e' che al posto della riga commentata ( guarda sopra) anziche il testo mi compaia (dinamicamente in base alla voce di menu cliccata) la pagina corrispondente. Es: se clicco Home mi compare Home.php e non come ora il testo home
Per quello chiedevo se e' possibile fare un include dinamico
Se non hai capito dimmelo pure... Cerchero' di spiegarmi meglio :D
 

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
Da quello che ho capito io tu vuoi inserire le tue pagine in un database e poi, tramite l'URL, visualizzarle. Giusto?
Con il sistema attuale, digitando http://www.example.com/index.php?menuid=1, visualizzi la pagina con ID 1.
Tu invece cosa vuoi fare?

Esatto esatto :D
adesso digitando come dici tu http://www.example.com/index.php?menuid=1 visualizzo la pagina index con il menu ma senza contenuto. Il menuid è usato per estrarre il menu e non le pagine io vorrei anche utilizzare un parametro che mi faccia visualizzare anche le pagine
Praticamente menuid=1 mi estrae la voce menu Finestre
menuid=2 mi estrae la voce menu Serramentisti
menuid=3 mi estrae la voce menu Notizie
menuid=3 mi estrae la voce menu Contatti

adesso vorrei che pero'al click della voce mi inserisca nel contenitore centrale le pagine e non so come fare mannaggia....:(
Ho provato ad inserire un altro valore da passare tramite il get ( tipo pagina) ma non riesco
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Allora hai sbagliato a chiamare la tabella contenente i menù tblcontenuti. Piuttosto, chiama main_menu quella contenente il menù di navigazione principale, e page_menu quella contenente i menù di navigazione delle singole pagine. Adesso, crea una nuova tabella pages che conterrà i contenuti delle pagine. Per identificarle puoi usare lo stesso ID che usi in page_menu, così non hai bisogno di inserire un altro parametro GET nell'URL.
 

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
ma perche' devo creare 3 tabelle. io ho due tabelle TblMenu per le voci menu con campi Id, Menu e Posizione e la tabella TblContenuti ( che posso correggere in TblPagine) con 3 campi: Id, ID_Menu, e Pagine. ID_Menu collega le due tabelle e nel campo Pagine e' inserito il campo testo della pagina che voglio visualizzare.. fin qui dici che va bene il ragionamento?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusate se mi intrometto.
una curiosità, potresti postare un esempio del contenuto di

$riga['Contenuto']

p.s.
le chiavi dellgli array andrebbero scritti con gli apici
 

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
ciao
scusate se mi intrometto.
una curiosità, potresti postare un esempio del contenuto di

$riga['Contenuto']

p.s.
le chiavi dellgli array andrebbero scritti con gli apici

Ciao,
figurati...anzi ...ogni input è benvenuto :D
adesso è diventata $riga['Pagine']

Un esempio del contenuto $riga['Pagine'] é contatti.php

P.s. ma si possono passare due parametri contemporaneamente ad una pagina? es: menuid e pagina con il get ?
e se si come?
 

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
Adesso il codice è questo:

PHP:
<?php
                $Risultato=mysql_query("select * from tblmenu order by Posizione", $conn);
                if (!$Risultato)
                {
                    die("La tabella selezionata non esiste " . mysql_error());
                }
                
                while ($riga=mysql_fetch_array($Risultato))
                {
            	   if ($IdMenu <> $riga[ID])
				   {
				   echo "<ul id='menu'><li><a href='index.php?menuid=" . $riga[ID]. "'>" . $riga['Nome_menu'] . "</a></li></ul>";//qui mi estrae il menù ed è ok
				   }
				   else
				   {
				   $Nome_Menu = $riga[Nome_menu];
				   echo "<ul id='menu'><li>" . $riga['Nome_menu'] . "</li></ul>";
				   }
			    }
            ?> 
          
 
        
       <?php include('include/info.php'); ?> 
   </div> 
    <div id="centro">
     <?php
                $Query = "SELECT * FROM TblPagine ";
				$Query .= "WHERE ID_MENU = " . $IdMenu;
				$Risultato=mysql_query($Query, $conn);
                if (!$Risultato)
                {
                   die("La pagina selezionata non contiene alcun valore e/o testo ");
                }
                
                while ($riga=mysql_fetch_array($Risultato))
				 if ($IdPagina <> $riga['ID_Menu'])
                {
				    
					 
					  echo "<a href='index.php?pagina=" . $riga['ID_Menu']. "'>" . $riga['Pagine'].  "</a>";// qui dovrebbe estrarmi la pagina.php ma mi estrae il link e non mi trova la pagina.... QUESTA RIGA è IL MIO GRANDE PROBLEMA
			    }
				 else
				   {
				  
				   include ('home.php');
				   }
			    
            ?>
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Credo che questo sia semi-funzionante:
PHP:
<?php
$pagina = isset($_GET['pagina']) ? (int)$_GET['pagina'] : 1;

require_once __DIR__ . '/include/Connetti.php';

echo <<<EOF
<body> 
    <img class="bg" src="immagini/image1.jpg" width="1680" height="1050" /> 
    <div id="contenitore_sito"> 
EOF;

require_once __DIR__ . '/include/header.php';

echo <<<EOF
        <div id="corpo_centrale"> 
            <div id="col_sin">
EOF;

$sql = 'SELECT * FROM tblmenu ORDER BY posizione';
$query = mysql_query($sql) or die(mysql_error());

echo <<<EOF
                <ul id="menu">
EOF;
                
while ($row = mysql_fetch_assoc($query)) {
    if ($pagina != $row['id']) {
        echo "<li><a href=\"{$_SERVER['PHP_SELF']}?pagina={$row['id']}\">{$row['nome_menu']}</a></li>";
    } else {
        echo "<li>{$row['nome_menu']}</li>";
    }
}

require_once __DIR__ 'include/info.php';

echo <<<EOF
            </div>
            
            <div id="centro">
EOF;

$sql = sprintf('SELECT * FROM tblpagine WHERE id = %d', (int)$pagina);
$query = mysql_query($sql) or die(mysql_error());

if (mysql_num_rows($query) == 0) {
    require_once 'home.php';
} else {
    $row = mysql_fetch_assoc($query);
    require_once __DIR__ . "/{$row['pagine']}.php";
}
?>
Il tuo problema comunque è l'intera struttura del database... Perché hai due tabelle separate per le pagine ed i menù?
 
Discussioni simili
Autore Titolo Forum Risposte Data
minatore Richiamare pagine PHP da variabile PHP 14
Shyson Richiamare funzione in altre pagine PHP 14
G Richiamare pagine ASP da HTML HTML e CSS 3
M Richiamare una singola funziona da file php PHP 2
M Richiamare funziona da file esterno jQuery 0
psicomia Gestione funzione in javascript in tabella richiamare"textarea" valori preimpostati in "select" Javascript 2
V [Visual Basic] Richiamare funzione su modulo per restituire list Visual Basic 0
T [Javascript] Richiamare un file.js (iframe) in html Javascript 1
A Richiamare funzioni esterne JS da PHP PHP 9
C richiamare una funzione in un altro script php PHP 1
A [Flash] richiamare JS da AS3 Flash 0
G [PHP] RICHIAMARE TABELLA I CUI VALORI SONO STAMPATI A VIDEO E MODIFICARLI PHP 6
Shyson [WordPress] Richiamare nel mio sito numero iscritti da gruppo Facebook WordPress 0
S [PHP] Aiuto! Non riesco a richiamare una variabile PHP 2
A [Javascript] richiamare lo pseudo elemento after Javascript 1
B [Javascript] Richiamare un attributo DATA Javascript 0
gandalf1959 richiamare una funzione da un'altra funzione PHP 1
gandalf1959 richiamare una funzione: funziona solo la seconda volta... PHP 7
E Richiamare funzione Jquery dopo aggiornamento parziale di pagina tramite ajax jQuery 0
Z richiamare codice html in file php PHP 2
T Richiamare il click su un input type="image" alla pressione del tasto invio su una text area. PHP 0
B richiamare variabile javascript su pagina php Javascript 4
elpirata Richiamare un campo input in una form Javascript 2
M [Datetimepicker]Richiamare funzione per più id uguali jQuery 4
G Richiamare funzioni esterne PHP 0
K richiamare 2 volte stessa funzione Javascript 1
Shyson Richiamare funzione esterna jQuery 4
P 2 hosting da richiamare con dominio e sottodominio Hosting 0
scatenato richiamare id PHP 28
P Problema per richiamare una variabile... PHP 3
gandalf1959 Richiamare un javascript da php. Non funziona? PHP 2
I richiamare dati da menu a tendina mysql PHP 2
L problema nel richiamare gli id HTML e CSS 2
P come richiamare una variabile PHP 3
A richiamare funzione javascript dopo login in popup. Javascript 0
I richiamare dati da database in due variabili differenti PHP 2
L Non riesco a far funzionare un plugin (probabilmente ho sbagliato qualcosa nel richiamare lo script) jQuery 10
G Richiamare una classe Sviluppo app per iOS 0
I Richiamare funzione jquery all'invio del form php Javascript 6
M Richiamare una foto dal database PHP 3
M Richiamare una data inserita nel database tramite php. PHP 4
P creare e richiamare una stored procedure in sqlserver .NET Framework 1
R [Vb.net] richiamare funzione javascirpt .NET Framework 0
I richiamare id PHP 15
Shyson richiamare contatore PHP 5
Shyson Richiamare pagina personalizzata PHP 10
G Richiamare URL in Background (Nascosto) come se fosse eseguito da browser PHP 3
B Richiamare un array in una classe PHP 7
P Richiamare id e class HTML e CSS 3
Shyson Richiamare 2 getElementById uguali Javascript 0

Discussioni simili