francescosartori

Pagine Dinamiche Sullo Stesso File Inpex.php

14 messaggi in questa discussione

Ciao a tutti! molti siti, tra cui lo stesso WinInizio.it non hanno vari file PHP come index.php, profile.php, results.php o comunque nulla di simile. Tutto gira attorno alla stessa pagina index.php che però nel URL viene completata da act= (in altri siti può esserci action=).

Qualcuno mi sa spiegare come si implementa tale funzione e come si usa?

Premetto che io so creare pagine dinamiche, ma per passare dalla home all'account di un utente loggato i file PHP sono 2 (index.php e profile.php)

Ho provato a fare delle ricerche su google su tale funzione ma non ho trovato nulla, forse non ho messo le parole chiave corrette. Da quello che credo serve per poter gestire siti di grosse dimensioni, con tanti link e collegamenti vari.

Infatti attualmente se volgio aggiungere una sezione nel mio sito divento matto: devo aggiungere i collegamenti su tutte le pagine e in più devo aggiungere parecchio codice!!! Proprio un lavoro da matti...

Se queste action semplificano questo lavoro... mi spiegate come si fa?

Grazie mille...ciao!

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Qualcuno mi sa spiegare come si implementa tale funzione e come si usa?

Intendi usare una stessa pagina per tutte le funzioni?

Generalmente chi usa questo tipo di sistema (e lo stesso Wi) hanno una pagina principale, che si autocompone, andando a richiamare altre piccole paginette, dinamicamente in base alla scelta fatta dall'utente.

Semplicemente potresti, definita la struttura principale del file index.php, andarti a creare le altre paginette (options.php, etx.php) contenenti esclusivamente il codice PHP che serve per far comporre e funzionare quella sezione.

Nella pagina index, quindi, puoi usare un case (una selezione multipla - alla stregua di if -- then -- else) per andare ad includere (con la funzione 'include (file.php);' di volta in volta quanto ti serve.

Per decidere quale file andare a richiamare... qui già il sistema diventa più articolato, perchè dovrai avere una parte che viene richiamata per default e per la scelta delle altre devi crearti dei moduli che richiamano la pagina index stessa mandandole delle variabili.

Spero di esser stato chiaro.

esempio:

ho le pagine: index.php, generale.php, option.php

dalla pagina index.php, faccio includere, per default la pagina generale.php. Quando l'utente andrà a selezionare la voce Opzioni, la funzione andrà a richiamare la pagina index stessa con una variabile, che interpretata farà includere alla pagina 'option.php' invece che generale.php

Da quello che credo serve per poter gestire siti di grosse dimensioni, con tanti link e collegamenti vari.

...

Infatti attualmente se volgio aggiungere una sezione nel mio sito divento matto: devo aggiungere i collegamenti su tutte le pagine e in più devo aggiungere parecchio codice!!! Proprio un lavoro da matti...

Se queste action semplificano questo lavoro... mi spiegate come si fa?

con lo stesso metodo spiegato sopra potresti crearti un unico file ex. menu.php che contiene tutti i link alle pagine, e poi lo vai ad integrare nella tua pagina di index, o in tutte le altre, semplicemente come riferimento (include (menu.php):P

Ti modifichi una volta sola i vari link e ce li hai ovunque.

Studiare un sistema simile, è molto complesso.. devi studiare a tavolino i vari processi di navigazione prima di buttarti a pieno nel codice :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Un altro metodo è tramite l'uso della funzione switch():

switch($_GET['action'])
{
case 'contatti':
	echo 'contatti';
break;
case 'chi-siamo':
	echo 'chi siamo';
break;
case 'news':
	echo 'elenco articoli';
break;
default:
	echo 'homepage';
}

Da richiamare con link simili a questi:

- http://localhost/?action=contatti

- http://localhost/?action=chi-siamo

- http://localhost/?action=news

- http://localhost/

L'ultimo link richiama semplicemente l'homepage, perché in assenza di argomenti, si fa riferimento all'opzione default. Con mod_rewrite e .htaccess poi i link possono essere ulteriormente trasformati in:

- http://localhost/contatti

- http://localhost/chi-siamo

- http://localhost/news

- http://localhost/

Il nostro .htaccess dovrà contenere un'istruzione di questo genere:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^([^/\.]+)/?$ index.php?action=$1 [L]
RedirectMatch ^/$ /index
</IfModule>

Ovviamente nello switch() al posto degli echo si possono mettere query ai database o include. Un altro metodo invece riguarda lo sviluppo di un schema MVC sul tipo in uso da CodeIgniter:

- http://codeigniter.com/

in cui news ( http://localhost/news ) corrisponde ad un controller che al suo interno può contenere varie funzioni: index, archivio, feed, leggi.. ad ogni funzione corrisponde almeno una view che farà da contenitore ai dati ricevuti tramite database, in questo modo potrai generare link di questo tipo:

- http://localhost/news/archivio

- http://localhost/news/feed

- http://localhost/news/leggi/titolo-di-questa-notizia

Modificato da cereal

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Grazie mille a entrambi, e mi scuso infinitamente per non aver mai risposto per tutto questo tempo.

Davvero utile quello che mi avete detto.

In questo modo quindi posso richiamare diversi file esterni.

Ma mi sirge un dubbio...come si creano i tag di codice HTML che si integreranno con un foglio css?

Grazie...Ciao!

P.S. cercherò di stare dietro a questa discussione questa volta :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ho provato a guardare il codice del file index.php di joomla: che casino!

<?php
/**
* @version		$Id: index.php 10381 2008-06-01 03:35:53Z pasamio $
* @package		Joomla
* @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* @license		GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

// Set flag that this is a parent file
define( '_JEXEC', 1 );

define('JPATH_BASE', dirname(__FILE__) );

define( 'DS', DIRECTORY_SEPARATOR );

require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

JDEBUG ? $_PROFILER->mark( 'afterLoad' ) : null;

/**
* CREATE THE APPLICATION
*
* NOTE :
*/
$mainframe =& JFactory::getApplication('site');

/**
* INITIALISE THE APPLICATION
*
* NOTE :
*/
// set the language
$mainframe->initialise();

JPluginHelper::importPlugin('system');

// trigger the onAfterInitialise events
JDEBUG ? $_PROFILER->mark('afterInitialise') : null;
$mainframe->triggerEvent('onAfterInitialise');

/**
* ROUTE THE APPLICATION
*
* NOTE :
*/
$mainframe->route();

// authorization
$Itemid = JRequest::getInt( 'Itemid');
$mainframe->authorize($Itemid);

// trigger the onAfterRoute events
JDEBUG ? $_PROFILER->mark('afterRoute') : null;
$mainframe->triggerEvent('onAfterRoute');

/**
* DISPATCH THE APPLICATION
*
* NOTE :
*/
$option = JRequest::getCmd('option');
$mainframe->dispatch($option);

// trigger the onAfterDispatch events
JDEBUG ? $_PROFILER->mark('afterDispatch') : null;
$mainframe->triggerEvent('onAfterDispatch');

/**
* RENDER  THE APPLICATION
*
* NOTE :
*/
$mainframe->render();

// trigger the onAfterRender events
JDEBUG ? $_PROFILER->mark('afterRender') : null;
$mainframe->triggerEvent('onAfterRender');

/**
* RETURN THE RESPONSE
*/
echo JResponse::toString($mainframe->getCfg('gzip'));

Perchè non si conclude con un tag di chiusura PHP (?>) ?

Per fare una provetta insulsa...riusciresti a scrivere una paginetta da 4 righe con uno switch e con l'implementazione dei tag per il CSS?

Poi mi analizzerei il codice da solo...

Grazie infinite, Ciao!

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Quanto usato da Joomla è pseudocodice e molte sono funzioni che richiamano altre funzioni in altre pagine. Studiare a fondo Joomla è più complicato perchè alcune parti della sintassi vengono riviste e reinterpretate da altre funzioni Joomla. La paginetta d'esempio che ha scritto cereal è l'idea generale di come dovresti scrivere la tua pagina web.

Per integrare css e html devi usare lo stesso sistema che utilizzeresti se non stai scrivendo il codice PHP, ossia devi assegnare ai div id o classi che vai a gestire nel tuo foglio di stile.

cerco di farti una prova di quanto devi inserire nella tua funzione switch:

<?php
/* questo codice devi inserirlo dove vuoi che vari il tuo contenuto */
switch($_GET['action'])
{
case 'contatti':
	echo 'contatti';
break;
case 'chi-siamo':
	echo 'chi siamo';
break;
case 'news':
	echo 'elenco articoli';
break;
default:
?>
codice html e css
<div id="contenutopagina">
 questo è il contenuto della pagina
</div>
<?php
}
?>

ovviamente, ti devi creare o associare ai link il parametro $action, che farà variare il contenuto della pagina web

a parte ti crei un file stile.css che sarà il foglio di stile che andrai a linkare su tutte le pagine web e in questo esempio conterrà:

#contenutopagina{
background:#1c1c1c
color:#232323
}

poi per linkare il foglio di stile nella tua pagina html o php, nella sezione head, prima di chiuderla devi inserire:

<link rel="stylesheet" href="stile.css" type="text/css" />

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ciao!

Allora...sono riuscito a fare una pagina semplicissima che cambia il suo contenuto.

Però lo cambia solo se scrivo appositamente sul link nella barra degli indirizzi del browser "?action=contatti"

es:

www.sitoprove.com/index.php?action=contatti

www.sitoprove.com/index.php?action=news

www.sitoprove.com/index.php?action=articoli

Questa è la pagina PHP:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
<style type="text/css">
<!--
#contenutovariabile {
font-size: 18px;
padding: 20px;
border: 2px solid black;
background-color:#FF9933;
width: 200px;
height: 100px;
margin: auto;
}
-->
</style>
</head>
<body>
<div id="contenutovariabile">
<?php
switch($_GET['action'])
{
case 'contatti':
	echo 'contatti';
break;
case 'chi-siamo':
	echo 'chi siamo';
break;
case 'news':
	echo 'elenco articoli';
break;
default:
?>
</div>
</body>
</html>

Come faccio a dire al PHP che quando premo un link quel link abbia una variabile Action?

devo usare $_POST[' ... '] all'interno del tag <a>?

Grazie...ciao!

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Basta scrivere i parametri nel link esattamente come fai nella barra degli indirizzi!

Se per esempio vuoi creare un link a 'contatti' basta fare così:

<a href="index.php?action=contatti">Contatti</a>

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ciao!

Allora...ti faccio vedere un po' quello che ho fatto.

Ho modificato la pagina index.php che mi avevi mostrato e ho lavorato sul "case: articoli" dello switch.

A questa voce ho collegato una pagina .php con la funzione include() e ho listato tutti gli articoli del database. Gli articoli vendono listati e sono di forma

<a href="index.php?ID=1">Articolo 1</a>

Adesso però come dovrei agire sulla pagina index.php per ricavare i parametri dall'url senza dover usare un'altra impaginazione di index.php, ma sempre con quella di prima (con tutti i menù e la funzione switch)?

Oppure bisognerebbe fare un'altro switch che includa una pagina .php fatta appositamente per ottenere e elaborare i parametri dall'URL?

Non so se mi sono spiegato...

:)

Ciao!

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Adesso però come dovrei agire sulla pagina index.php per ricavare i parametri dall'url senza dover usare un'altra impaginazione di index.php, ma sempre con quella di prima (con tutti i menù e la funzione switch)?

Oppure bisognerebbe fare un'altro switch che includa una pagina .php fatta appositamente per ottenere e elaborare i parametri dall'URL?

Non so se mi sono spiegato...

La soluzione più elegante è sicuramente quella di andare ad includere pagine (che contengono solo il codice che varia) differenti con la funzione include, in modo da avere nell'index una struttura che si autocompone in base ai vari switch.

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un utente registrato per partecipare

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora