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

    includere, in un template, pagine da una sottocartella

    Ciao a tutti!
    la mia situazione è questa: sto tentando di preparare un sito dinamico, e avrei bisogno di una pagina che funzioni da template per visualizzare svariate centinaia di schede.
    Queste schede hanno numero progressivo (0001.php, 0002.php, ecc.) e per praticità si trovano nella sottodirectory "/schede".

    Ora, la pagina principale del template si chiama "scheda.php" e si trova sullo stesso livello di "index.php". Lavora in questo modo:

    Codice PHP:
    <?
    $p
    ="scheda_index"//pagina di default per i contenuti centrali
    if(isset($_GET['page'])){ //pagina passata via parametro
        
    $p=$_GET['page'];
        if(
    $p!=basename($p) || !preg_match("/^[A-Za-z0-9\-_]+$/",$p) || $p=="scheda" || !file_exists($p.".php"))
            
    $p="error"//pagina di errore
        
    }
    include(
    $p.".php");
    ?>
    Il problema, però, è che con questo codice il link alle singole schede funziona solo se esse si trovano SULLO STESSO LIVELLO di scheda.php

    Mentre avrei bisogno che richiamando ad esempio scheda.php?page=0001 venga caricato nel template schede/0001.php anziché 0001.php......

    sono abbastanza inesperto di php, ma conosco le sue potenzialità, credo esista un modo per fare questo...
    qualcuno sa dirmi come aggiustare il codice in modo da ottenere l'effetto desiderato??

    grazie mille, confido nel vostro aiuto :-)
    «Prendo rifugio nel grande BOH»

  2. #2
    se le schede hanno di diverso solo alcuni contenuti testuali o grafici, non ti converrebbe immagazzinare tutto in un database e poi a seconda dell'id peschi i dati corrispondenti?
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  3. #3
    Codice PHP:
    <?
    $dir_schede 
    "schede/";
    $p="scheda_index"//pagina di default per i contenuti centrali 
    if(isset($_GET['page'])){ //pagina passata via parametro 
        
    $p=$_GET['page']; 
        if(
    $p!=basename($dir_schede.$p) || !preg_match("/^[A-Za-z0-9-_]+$/",$p) || $p=="scheda" || !file_exists($dir_schede.$p.".php")) 
            
    $p="error"//pagina di errore 
        

    if(
    $p != "error") include("error.php");
    else include(
    $dir_schede.$p.".php");
    ?>
    così dovrebbe andare. nelle ultime 2 righe ho supposto che la pagina error.php fosse nella stessa directory della pagina.

  4. #4
    Grazie mille!!!!!
    domani faccio un tentativo e poi posto qui l'esito.

    Originariamente inviato da hacker_nait
    se le schede hanno di diverso solo alcuni contenuti testuali o grafici, non ti converrebbe immagazzinare tutto in un database e poi a seconda dell'id peschi i dati corrispondenti?
    sì, ma il problema è che le schede sono tutte abbastanza diverse tra loro, hanno quantità di dati e paragrafi diversi, e sono pochi gli elementi comuni, tranne la grafica (che cmq è gestita dal css). Cercavo una soluzione in php proprio in alternativa al database....
    «Prendo rifugio nel grande BOH»

  5. #5
    Originariamente inviato da ab5000
    Codice PHP:
    <?
    $dir_schede 
    "schede/";
    $p="scheda_index"//pagina di default per i contenuti centrali 
    if(isset($_GET['page'])){ //pagina passata via parametro 
        
    $p=$_GET['page']; 
        if(
    $p!=basename($dir_schede.$p) || !preg_match("/^[A-Za-z0-9-_]+$/",$p) || $p=="scheda" || !file_exists($dir_schede.$p.".php")) 
            
    $p="error"//pagina di errore 
        

    if(
    $p != "error") include("error.php");
    else include(
    $dir_schede.$p.".php");
    ?>
    così dovrebbe andare. nelle ultime 2 righe ho supposto che la pagina error.php fosse nella stessa directory della pagina.

    Funziona! GRAZIEEEEEEEEEEEE
    «Prendo rifugio nel grande BOH»

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.