Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Aiuto integrazione calendario eventi

    Salve,

    ho da poco iniziato a smanettare con php per realizzare un progetto per un'esame di informatica.
    Ho realizzato una struttura con include e utilizzo uno switch (impostato nell'index) per associare alla variabile "$pag" le varie pagine da caricare, e infine assemblo il tutto
    index.php:
    Codice PHP:
    <?php
    $pag 
    "pagine/home.php"//imposto la pagina di default
    if (is_numeric($_GET['id'])) 
    {
    switch (
    $_GET['id']) //preleva l'id numerico dall'indirizzo web
    {
        case 
    0:
            
    $pag "pagine/home.php"//se la variabile è 0, carica home
            
    break;
        case 
    1:
            
    $pag "pagine/storia.php"//se la variabile è 1, carica storia
            
    break; 
        [....]
        default:
            
    $pag "pagine/home.php"//imposto la pagina di default a home
    }
    }
    include 
    'header.php';
    include (
    $pag);
    include 
    'sidebar.php';
    include 
    'footer.php';
    ?>
    in questo modo mi genero url del tipo /index.php?id=4

    Ora, il progetto richiede di incorporare un calendario eventi nel sito senza far ricorso ad Iframe, quindi mi trovo a dover ricostruire header sidebar e footer intorno a ogni singola pagina del calendario.

    Ho impostato la struttura delle cartelle in questo modo:
    codice:
    /(root):index.php, header.php, sidebar.php, footer.php, style.css
       |-(pagine): home.php, contatti.php etc
       |-(images)
       |-(componenti)
           |-(newsletter)
           |-(calendario):minical.php, calendar.php, cal_day.php, yearcal.php e altri 20 file, + folder (admin, images, themes)
    il calendario usato è Calendarix: http://www.calendarix.com/democal.html, e nel loro forum di supporto ogni richiesta che riguardi l'integrazione viene seccata con un "usa un Iframe"

    Ora, per integrare la vista mese nel template, ho creato un'altro "case" nello switch di index.php:
    Codice PHP:
        case 12:
            
    $pag "componenti/calendario/calendar.php";
             break; 
    e modificato minimamente componenti/calendario/calendar.php con qualche div per aprire/chiudere delle classi css, e il risultato -sembra- buono:

    (url: hxxp://localhost/progettoII/index.php?id=12&op=cal&month=9&year=2010&catview=0 )



    Ovviamente però tutti i link interni del calendario fanno riferimento alla root, e sto iniziando a correggerli uno ad uno aggiungendo una variabile
    $urlpathtocal = "componenti/calendario/";
    in ogni <a href.
    In questo modo ottengo che i link funzionano, ma non che si aprono "nel template"....

    L' unica soluzione che mi viene in mente è creare altri case nello switch in index.php per ognuno dei file richiamati dal calendario,
    ad esempio cliccando sul singolo giorno si andrebbe su /cal_day.php?op=day&date=2010-09-01&catview=0 ;
    dovrei creare un
    Codice PHP:
        case 13:
            
    $pag "componenti/calendario/cal_day.php";
             break; 
    e poi correggere il link in : index.php?id=13&op=day&date=2010-09-01&catview=0 .
    ...e creare chissà quanti altri case per ogni file php chiamato, inclusa la sezione di amministrazione....

    è questa la soluzione migliore, oppure c'è (mi auguro!) qualcosa che ignoro che mi faciliterebbe la cosa?

    grazie dell'attenzione

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    IO ti sconsiglio di usare un forwarder del genere.

    Piuttosto usa un array di configurazione che poi proteggerai con htaccess.

    esempio file SYS_CONF.php :
    Codice PHP:

    $SYS_CONF 
    = array(

    "home" => "index.html" ,
    "etc"    => "etc.html"


    ); 
    poi ti crei il forwarder che include la configurazione e accedi alle pagine
    esempio forwarder.php
    Codice PHP:

    include("./SYS_CONF.php");

    if( !isset(
    $SYS_CONF)  || !is_array($SYS_CONF) )
    { die(
    "ERRORE"); }

    $page $SYS_CONF$_GET["page"] ] ;

    if( 
    $page && file_exists($page) )
    {
         
    // ESEGUI REDIRECT O INCLUSIONE DELLA RISORSA


    Cosi' facendo e' piu' gestibile e puoi estendere le configurazioni a piacere creare piu' forwarder differenti oppure piu' configurazioni differenti .

    Inoltre potrai includere controlli sessione o altro. E per risolvere il tuo problema puoi crare un forwader specifico per il calendario.

  3. #3
    Grazie della risposta Virus_101


    Se ho capito bene:

    mi creo un file dove imposto , tramite array, le associazioni con i file

    pageconfig.php
    Codice PHP:
    $SYS_CONF = array(

    "home" => "pagine/home.php" ,
    "contatti"    => "pagine/contatti.php",
    [...]
    "calendariomese" => "componenti/calendario/calendar.php",

    ); 
    poi creo il forwarder, che include pageconfig.php e viene richiamato da index.php
    Codice PHP:
    include 'header.php';
    include 
    'forwarder.php';
    include 
    'sidebar.php';
    include 
    'footer.php'
    il forwarder controlla l'array,
    if( !isset($SYS_CONF) || !is_array($SYS_CONF) )
    { die("ERRORE"); }


    ed estrae dall'array l'url del contenuto da caricare, in base all'URL della richiesta http
    $page = $SYS_CONF[ $_GET["page"] ] ;

    (quindi avrei indirizzi tipo index.php?page=calendariomese ?)


    poi, verifica se c'è il file
    if( $page && file_exists($page) )


    e me lo includo...
    {
    include ($page);
    }

    mi pare un approccio migliore, ma come mi aiuterebbe col calendario? dovrei comunque riscrivermi tutti i link dello script no?

    l'unica differenza che vedo è che dovrei correggere i link in
    index.php?page=calendariogiorno&op=day&date=2010-09-01&catview=0
    invece di
    index.php?id=13&op=day&date=2010-09-01&catview=0

    e che la gestione è migliore.

    Non c'è un modo per intercettare i link del modulo calendario (senza modificarli, che sono davvero tanti...) e forwardare ad es le chiamate a "cal_day.php?" verso "index.php?page=calendariogiorno&" ?

    senza usare modrewrite nell' .htaccess, intendo... che non è previsto nel progetto e neanche so se posso caricarne uno personalizzato nella cartella del server dell'università (o se vengano ignorati)...

    grazie di nuovo

  4. #4
    Originariamente inviato da Marco.Sca

    Non c'è un modo per intercettare i link del modulo calendario (senza modificarli, che sono davvero tanti...) e forwardare ad es le chiamate a "cal_day.php?" verso "index.php?page=calendariogiorno&" ?
    Ok, leggendo in giro mi sono reso conto che non è possibile...

    altre idee?

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    ok visto che il celnadraio fa chiamate del genere puoi gestire la cosa con htaccess e le rewrite rules.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.