+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: Il comando require_once di php non aggiorna la pagina dinamica

  1. #1
    L'avatar di Domenico_Falco1
    Domenico_Falco1 non è in linea Scolaretto
    Post
    235

    Il comando require_once di php non aggiorna la pagina dinamica

    Buon giorno a Tutti Voi

    Eccomi con un'altra gentile richiesta.
    Ho finalmente realizzato un sito a pagine dinamiche, usando il GET di ajax e l'include ( require ) di php.

    Il codice che uso è questo :

    codice:
    function inserisco(data, text, xhr) {
    	var url = this.url;
    	console.log(xhr);
    	$('#container').html(xhr.responseText);
    	
    }
    
    
    jQuery(document).ready(function() {  
    	
    	$('a.pulsanti').click(function(event) {  
    		
     		
    			if (history && history.pushState) {	 
    				//Inserisce la nuova pagina nella history del browser
    				history.pushState(null, document.title, $(this).attr('href'));
    					
    					//Richiama la nuova pagina attraverso una chiamata ajax
    					$.get($(this).attr('href'), {ajax:'1'}, function(data, text, xhr) {
    					    inserisco(data, text, xhr);
    					});
    				
    				event.preventDefault();	
    			//}
    		}
    	});
    
    });
    
    
    window.addEventListener('load', function() {
       $ = jQuery;
        
       setTimeout(function() {
          window.addEventListener('popstate', function() {
             $.get(location.href, {ajax:'1'}, function(data, text, xhr) {
                   inserisco(data, text, xhr);
             });
          });
       }, 0);
        
    });
    che richiama le mie pagine create a parte chiaramente, il codice di una pagina è questo :

    codice HTML:
    <?php
    include('functions.php'); 
    
    if(!isAjax())
       require_once ('./TEMPLATES2/HEADER.php');
    ?>
    
    
    
    <div id="container" class ="containere">
    
    
    
    <div class="primatitolog">
     <div class="presentazionetitolog"><strong>PRESENTAZIONE AZIENDALE</strong>
     </div></div>
    
     <div class="primatitolo">
     <div class="presentazionetitolo"><strong>PRESENTAZIONE<br><br>AZIENDALE</strong></div>
     </div>
    
    
     <div class="container-presentazione">
    <div class="presentazione">
    Testo scritto..... 
     </div>
    
    </div>
    
    <?php
    if(!isAjax())
    	include ('FOOTHER.php');
    ?>
    Ho creato due cartelle TEMPLATES1 e TEMPLATES2, dove ci sono due HEADER differenti nel menu di navigazione, bene il tutto funziona benissimo, cioè il contenuto nel div container è perfettamente cambiato, gli HEADER, invece no, cioè quando carico la pagina, il suo codice sorgente è corretto, cioè presenta l'inclusione perfetta, ma la pagina a video non aggiorna appunto l'header a meno che non la ricarichi.


    Dove sbaglio ?

    Spero di essere stato chiaro e grazie per eventuali risposte.

    Saluti
    Domenico
    "Considerate la vostra semenza:
    fatti non foste a viver come bruti,
    ma per seguir virtute e canoscenza"

  2. #2
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    2,844
    Non è chiaro.
    Se hai due pagine diverse con due header diversi, cioè ognuna delle due ha il suo header, che motivo hai di includere l'uno o l'altro header ? Forse perché poi esistono altre pagine che hanno lo stesso header (l'uno o l'altro) ? Se questo è il caso mostra anche l'altra pagina, cioè quella che dovrebbe includere l'header che sta in TEMPLATES1.
    Il regolamento del forum: la prima cosa da leggere.

  3. #3
    L'avatar di Domenico_Falco1
    Domenico_Falco1 non è in linea Scolaretto
    Post
    235
    Buona sera Brontolo, subito vado ad rispondere alla richiesta fatta, spero di essere più chiaro questa volta, ho creato un sito con otto pagine, ed in tutte sotto i loghi dell'azienda, ho posto un menu di link, precisamente sette, perché l'ottavo, l'ho poto nel footer, tutte le pagine le chiamo tramite la procedura ajax e php che ho postato prima, volevo che ogni pagina avesse solo sei link, facendo scomparire quello che riportava alla stessa pagina, così per una questione di migliore visibilità.

    Ribadendo che il contenuto dinamico si inserisce in un div con class : container, ho notato che se pongo i link nella pagina interessata, non funzionano, cioè i link non interagiscono con lo script ajax, cioè se faccio così :

    Pagina INDEX.php :
    codice HTML:
    <?php
    include('functions.php'); 
    
    if(!isAjax())
       require_once ('HEADER.php');
    ?>
    
    <div id="container" class ="containere">
    
    <div class="container-pulsantig"> 
    <div class="pulsante1g"><a class="pulsanti" href="PRESENTAZIONE.php">Chi Siamo</a></div>
    <div class="pulsante1g"><a class="pulsanti" href="TERRITORI.php">Territori</a></div>
    <div class="pulsante1g"><a class="pulsanti" href="E-COMMERCE.php">E-Commerce</a></div>
    <div class="pulsante1g"><a class="pulsanti" href="FINANZA.php">Finanza</a></div>
    <div class="pulsante1g"><a class="pulsanti" href="TURISMO.php">Turismo</a></div>
    <div class="pulsante1g"><a class="pulsanti" href="NORMATIVE.php">Normative</a></div>
    </div>
    
    <div class="container-richiamo">
        <div id="clock" class ="richiamo" /> </div>
    </div>
    
    ...........
    
    <?php
    if(!isAjax())
    	include ('FOOTHER.php');
    ?>
    seconda pagina : PRESENTAZIONE.php

    codice HTML:
    <?php
    include('functions.php'); 
    
    if(!isAjax())
       require_once ('HEADER.php');
    ?>
    
    <div id="container" class ="containere">
    
    <div class="container-pulsantig"> 
    <div class="pulsante1g"><a class="pulsanti" href="INDEX.php">Home</a></div>
    <div class="pulsante1g"><a class="pulsanti" href="TERRITORI.php">Territori</a></div>
    <div class="pulsante1g"><a class="pulsanti" href="E-COMMERCE.php">E-Commerce</a></div>
    <div class="pulsante1g"><a class="pulsanti" href="FINANZA.php">Finanza</a></div>
    <div class="pulsante1g"><a class="pulsanti" href="TURISMO.php">Turismo</a></div>
    <div class="pulsante1g"><a class="pulsanti" href="NORMATIVE.php">Normative</a></div>
    </div>
    
    <div class="container-richiamo">
        <div id="clock" class ="richiamo" /> </div>
    </div>
    
    ...........
    
    <?php
    if(!isAjax())
    	include ('FOOTHER.php');
    ?>
    e così via per ogni pagina, con i relativi link...

    Ed avevo messo l'HEADER.php uguale per tutti così :

    codice HTML:
    <!DOCTYPE html>
    <!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="it"> <![endif]-->
    <!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8" lang="it"> <![endif]-->
    <!--[if IE 8]>         <html class="no-js lt-ie9" lang="it"> <![endif]-->
    <!--[if IE 9]>         <html class="no-js ie9 modern" lang="it"> <![endif]-->
    <!--[if gt IE 9]><!--> <html class="no-js modern" lang="it" prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#"> <!--<![endif]-->
    
    <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
    <title>Home</title>
      <link href="css.css" rel='stylesheet' type='text/css'>
      <link rel="stylesheet" type="text/css" href="stilenuovo.css?ts=<?=time()?>&quot">
     <script src="jquery-1.5.2.min.js"></script>
     <script src="ajaxjs.js?ts=<?=time()?>&quot"></script>		
    
    </head>
    <body>
    
    <div class="container-elements">
        <div class="cop-big"><embed type="image/svg+xml" src="TRINITYPICCOLO.svg" class="elastic" /></div>
        <div class="el-medium"><embed type="image/svg+xml" src="NOMETRINITY.svg" class="elastic1" /></div>
        <div class="el-small"><embed type="image/svg+xml" src="TRINITYCOMPICCOLO.svg" class="elastic" /></div>
      </div>
    La funzione di controllo iniziale functions.php è questa :
    codice:
    <?php
    function isAjax() {
    return (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'); 
    }
    ma non funziona così, cioè i link alle pagine praticamente una volta usano la chiamata ajax e la volta successiva invece caricano la pagina con il refresh normale, ho pensato perché forse sono all'interno del div ( "container" ), quindi pensavo di risolvere creando un HEADER specifico per ogni pagina che contenesse i link, ed invece neanche così va, perché come se l'include non si aggiornasse anche sulla pagina a video.

    Il problema può nascere anche se metto un ulteriore link magari a metà di una pagina, verrebbe sempre nell'id contenitore e quindi si ritornerebbe con il solito problema.

    Mi dispiace se sono stato prolisso, ma spero almeno di essere stato chiaro.

    Grazie ed ottima serata.
    Ultima modifica di Domenico_Falco1; 05-06-2019 16:55 
    "Considerate la vostra semenza:
    fatti non foste a viver come bruti,
    ma per seguir virtute e canoscenza"

  4. #4
    L'avatar di Domenico_Falco1
    Domenico_Falco1 non è in linea Scolaretto
    Post
    235
    Buona notte, leggendo in giro ed osservando che solo con il refresh poi il codice aiax funziona, praticamente ci servirebbe una funzione che fa un refresh della pagina senza ricaricarla come solito, ho visto questa funzione :

    codice:
    window.onload = function()
    {
    	setInterval(function() {$( "#contenuto" ).load( "casuale.php #div1" );}, 1000);
    }
    che aggiorna un contenuto di un div senza il refresh, con il testo prelevato dalla pagina casuale.php, ma non so adattarla al mio scopo, anche perché visto che le mie pagine hanno anche codice php, prenderebbe solo l'html e quindi sarebbe una chiamata a metà, se ho pensato una cosa stupida, pazienza, rimango in attesa di Vostri suggerimenti. Grazie.
    "Considerate la vostra semenza:
    fatti non foste a viver come bruti,
    ma per seguir virtute e canoscenza"

  5. #5
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    2,844
    Secondo me ti stai complicando la vita più del necessario. Premesso che la scelta di modificare l'aspetto della barra dei menu da una pagina all'altra è alquanto discutibile, se proprio lo vuoi fare, potresti fare così:
    crea una barra dei menu che comprende tutti i link e, per ciascun link, testa il nome della pagina stessa che in quel momento sta incorporando la barra dei menu; lo puoi ricavare con la variabile globale $_SERVER['PHP_SELF'].
    Esempio (con sintassi approssimativa), se la tua barra dei menu ha tre link a tre pagine (page1.php, page2.php e page3.php):
    Codice PHP:
    $currentpage $_SERVER['PHP_SELF'];
    if (
    $currentpage !== "page1.php") echo "href=page1.php .... ";
    if (
    $currentpage !== "page2.php") echo "href=page2.php .... ";
    if (
    $currentpage !== "page3.php") echo "href=page3.php .... "
    In alternativa potresti modificare la visibilità dei singoli link con un po' di JQuery, ma questo è un altro discorso.
    Comunque lascerei perdere Ajax e anche i tentativi di forzare il refresh.
    Il regolamento del forum: la prima cosa da leggere.

  6. #6
    L'avatar di Domenico_Falco1
    Domenico_Falco1 non è in linea Scolaretto
    Post
    235
    Buon giorno Brontolo e grazie della diritta, ma davvero sto impazzendo sul fatto che se inserisco con get ajax del codice in un div con id : container e se magari c'è un link di quelle pagine in quel codice, se non faccio il refresh della pagina, se clicco sul link questo non si collega agli script ajax, e quindi non mi da una pagina dinamica ma mi fa di nuovo il refresh, caricandomi la pagina nel modo classico, come se avesse bisogno di una conferma prima di collegarsi agli script js.
    Non è possibile...

    Se non sono stato chiaro me lo si dica senza problemi, siete mai incappati in questo problema ?
    "Considerate la vostra semenza:
    fatti non foste a viver come bruti,
    ma per seguir virtute e canoscenza"

  7. #7
    L'avatar di Domenico_Falco1
    Domenico_Falco1 non è in linea Scolaretto
    Post
    235
    Solo piccola precisazione, non ho mai pensato di poter insegnare qualcosa a nessuno, adoro il confronto e ritengo che un forum serva a questo, prima del codice vero e proprio c'è la teoria... quindi se pongo delle domande è innanzitutto per capire ed imparare sempre più... gli esempi servono se c'è un concetto alle spalle... onde non infastiditevi se pongo richieste a raffica, più ci si confronta, più si impara, almeno credo... poi lascio massima libertà, ci mancherebbe. Saluti.
    "Considerate la vostra semenza:
    fatti non foste a viver come bruti,
    ma per seguir virtute e canoscenza"

  8. #8
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    2,844
    L'importante è che si riesca a capirsi senza divagare.
    Se ti viene proposta una soluzione, che non è detto sia la migliore, è corretto che tu renda noto se risolve, in tutto, in parte o per niente, il problema che hai posto.
    Il regolamento del forum: la prima cosa da leggere.

  9. #9
    L'avatar di Domenico_Falco1
    Domenico_Falco1 non è in linea Scolaretto
    Post
    235
    Buona sera, ho scritto i codice nell'opportuno div, nella pagina HEADER.PHP, cioè in questo modo, prendendo ad esempio solo due pagine :

    codice:
    <!DOCTYPE html>
    <!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="it"> <![endif]-->
    <!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8" lang="it"> <![endif]-->
    <!--[if IE 8]>         <html class="no-js lt-ie9" lang="it"> <![endif]-->
    <!--[if IE 9]>         <html class="no-js ie9 modern" lang="it"> <![endif]-->
    <!--[if gt IE 9]><!--> <html class="no-js modern" lang="it" prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#"> <!--<![endif]-->
    <html lang="it">
    <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
      <title>Home</title>
    
    <link rel="stylesheet" type="text/css" href="css.css" >
    <link rel="stylesheet" type="text/css" href="stilenuovo.css" >
    
     <script src="jquery-1.5.2.min.js"></script>
     <script src="ajaxjs.js"></script>
    </head>
    
    <body>
    
    $currentpage = $_SERVER['PHP_SELF'];
    if ($currentpage == '/INDEX.php') {
    echo'<div class="pulsante1g"><a class="pulsanti" href="PRESENTAZIONE.php">Chi Siamo</a></div>';
    echo'<div class="pulsante1g"><a class="pulsanti" href="TERRITORI.php">Territori</a></div>'; }
    
    
    if ($currentpage == '/PRESENTAZIONE.php') {
    echo '<div class="pulsante1g"><a class="pulsanti" href="INDEX.php">Home</a></div>';
    echo '<div class="pulsante1g"><a class="pulsanti" href="TERRITORI.php">Territori</a></div>';}

    e ad esempio la pagina : INDEX.ASP è così :

    codice HTML:
    <?php
    include('functions.php'); 
    
    if(!isAjax())
       include('HEADER.php');
    ?>
    <div id="container" class ="containere">
    ALTRO CONTENUTO..... 
    </div>
    E funziona ma i menu si aggiornano sempre se faccio il refresh della pagina, altrimenti rimangono sempre come prima e poi seconda curiosità, quando scrivo solo l'indirizzo del mio sito : Home, non si carica il menu, ho provato ad inserire :

    codice:
    $currentpage = $_SERVER['SERVER_NAME'];
    if ($currentpage == 'www.trinitycoret.cloud') {
    echo'<div class="pulsante1g"><a class="pulsanti" href="PRESENTAZIONE.php">Chi Siamo</a></div>';
    echo'<div class="pulsante1g"><a class="pulsanti" href="TERRITORI.php">Territori</a></div>';}
    ma non va... e stavolta neanche il refresh mi salva.

    Quindi la prima domanda è come fare in modo che il menu si aggiorni, senza che faccia il refresh ( sto davvero impazzendo a riguardo, visto che il sorgente pagina è corretto, ma a video no a meno che non aggiorno... ) e come faccio comparire anche nella pagina iniziale il menu.

    Grazie ancora e saluti.
    Ultima modifica di Domenico_Falco1; 06-06-2019 22:42 
    "Considerate la vostra semenza:
    fatti non foste a viver come bruti,
    ma per seguir virtute e canoscenza"

  10. #10
    L'avatar di Domenico_Falco1
    Domenico_Falco1 non è in linea Scolaretto
    Post
    235
    Buon giorno, ho provato anche con questa procedura, trovata in rete e sinceramente interessante perché ho pensato che visto che tramite il processo in php, con echo finale di un array di dati non avesse bisogno di aggiornare, ma niente, anche di più incasinata, perché il windows.addEventListener non risponde più....


    codice:
    jQuery(document).ready(function() {  
    	
    	$('a.pulsanti').click(function(event) { 
    	//alert("wew");	
     		
    			if (history && history.pushState) {	 
    				//Inserisce la nuova pagina nella history del browser
    				history.pushState(null, document.title, $(this).attr('href'));
    					
    					//Richiama la nuova pagina attraverso una chiamata ajax
    
    $page = $(this).attr('href');
               $.ajax({
                   type: "GET",
                   url: "process.php",
                   data: "page=" + $page,
                   cache: false,
                   dataType :'json',
                   success: function(data){
                       $("#container").html(data["content"]);
                       $("title").html(data["title"]);
                   }	
    			 });	
    				event.preventDefault();	
    			}
    	});
    });
    
    
    
    
    window.addEventListener('load', function() { 
      // $ = jQuery;
        
       setTimeout(function() {
          window.addEventListener('popstate', function() {
            $page = $(this).attr('href');
               $.ajax({
                   type: "GET",
                   url: "process.php",
                   data: "page=" + $page,
                   cache: false,
                   dataType :"json",
                   success: function(data){
                       $("#container").html(data["content"]);
                       $("title").html(data["title"]);
                   }
    								 });	
          });
       }, 0);
        
    });

    il un file esterno per stampare l'array ricevuto :

    codice:
    <?php 
    
       $content = "";
        $title = "";
    
        if(isset($_GET['page'])){
                $html = file_get_contents($_GET['page']);
                $dom = new DOMDocument('1.0', 'UTF-8');
                $dom->loadHTML($html);
                $element = $dom->getElementById("#container");
                $title = $dom->getElementsByTagName("title");
                $content = $dom->saveHTML($element);
        }
       
        $return_arr = ["title" => $title->item(0)->nodeValue,
                       "content" => $content];
        echo json_encode($return_arr);
    
    ?>
    beh meglio che vado in ufficio stamane, buona giornata a tutti.
    "Considerate la vostra semenza:
    fatti non foste a viver come bruti,
    ma per seguir virtute e canoscenza"

+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi