Visualizzazione risultati 1 fino 9 di 9

Discussione: Passaggio dati senza ricaricare pagina

  1. #1
    Data registrazione
    28-08-2013
    Messaggi
    23

    Predefinito Passaggio dati senza ricaricare pagina

    Salve a tutti,

    dunque, son ritornato ad editare il mio vecchio sito per la nuova stagione calcistica solo che nel frattempo ho perso i miei vecchi file dove avevo alcuni script e la memoria di certo non mi aiuta.

    Quello che avrei bisogno sarebbe poter mandare un dato, tramite una select, e salvarlo in una variabile salvata in sessione senza che la pagina venga ricaricata.

    Ovvero, dalla Home Page sulla destra c'è una select, ad ogni "onchange" questa invia alla stessa la variabile "season" (1516 o 1617) il che mi serve per le leggere le tabelle nel db in base alla stagione scelta.

    Di base la variabile season è settata a 1617, e ad ogni refresh la acquisisco in questo modo

    session_start.php
    Codice PHP:
    <?php
    // Start the session
    session_start();

    // Set session variables

    if (empty($_POST['season'])) {
    $_SESSION['season'] = "1617";
    }else{
    $_SESSION['season'] = $_POST['season'];
    }

    ?>
    index.php
    Codice PHP:
    <?php include ( "private/conn_db.php"); ?>
    <?php
    include ( "private/session_start.php"); ?>
    <?php
    include ( "private/get_misc.php"); ?>

    <!DOCTYPE html>
    <html>

    <head>
    <?php include ( "private/head.php"); ?>
    </head>

    <body>

    <div class="container">

    <?php include ( "private/navigation.php"); ?>

    <div class="page-header"><h1><small>IL PRIMO VERO</small> FANTACALCIO</h1></div>

    <!-- Blog Layout - START -->
    <div class="row wrap">
    <div class="col-sm-12">
    <div class="row">
    <div class="col-xs-9">
    <h2>° Giornata</h2>
    <?php include ("")
    </
    div>
    <
    div class="col-xs-3">
    <
    div class="panel panel-primary">
    <
    div class="panel-heading">Cambia Stagione</div>
    <
    div class="panel-body"><?php include ( "private/set_season.php"); ?></div>
    </div>
    <div class="panel panel-primary">
    <div class="panel-heading">Classifica</div>
    <div class="panel-body"><?php include ( "public/classifica_side.php"); ?></div>
    </div>
    </div>
    <hr>
    </div>
    </div>
    </div>
    <!-- Blog Layout - END -->

    </div>

    </body>

    </html>
    set_season.php
    Codice PHP:
    <form action="" method="post">
    <select name="season" class="selectpicker show-tick show-menu-arrow" onchange="this.form.submit()">
    <option value='1516' <?php if ($_SESSION[ 'season']=="1516" ){echo "selected ";} ?>>2015/16</option>
    <option value='1617' <?php if ($_SESSION[ 'season']=="1617" ){echo "selected ";} ?>>2016/17</option>
    </select>
    </form>

    Spero di essermi spiegato, grazie dell'aiuto

  2. #2
    livellacri non è connesso Utente AlterBlog
    Data registrazione
    28-07-2016
    Messaggi
    10

    Predefinito

    Il codice di session_start.php non mi sembra corretto.
    Come è scritto adesso, ad ogni refresh della pagina la stagione viene reimpostata a 1617.
    Se non ho capito male tu vuoi che venga impostata a 1617 all'inizio della sessione, ma se poi viene modificata deve rimane così anche con un refresh.
    Quindi è da modificare in:
    Codice PHP:
    <?php
    // Start the session
    session_start();

    // Set session variables

    if (empty($_POST['season'])) {
    if (!isset(
    $_SESSION['season'])) {
    $_SESSION['season'] = "1617";
    }
    }
    else {
    $_SESSION['season'] = $_POST['season'];
    }
    ?>
    Poi, per inviare il form senza che la pagina venga ricaricata devi usare ajax.
    set_season.php diventa:
    Codice:
    <form id="season_form"> 
        <select id="season_select" name="season" class="selectpicker show-tick show-menu-arrow"> 
            <option value='1516' <?php if ($_SESSION[ 'season']=="1516" ){echo "selected ";} ?>>2015/16</option> 
            <option value='1617' <?php if ($_SESSION[ 'season']=="1617" ){echo "selected ";} ?>>2016/17</option> 
        </select> 
    </form>
    
    <script type="text/javascript">
    $(function() {
    	$("#season_select").change(function () {
    		var season = $('#season_select').val();
    		var dataString = "season="+season;
    		$.ajax({
    			type: "POST",
    			url: "<?php echo "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; ?>",
    			data: dataString,
    			cache: false,
    			success: function(data){}
    		});
    	});
    });
    </script>
    Ultima modifica di livellacri : 27-08-2016 alle ore 00.52.00

  3. #3
    Data registrazione
    28-08-2013
    Messaggi
    23

    Predefinito

    Per la session_start ok, non ci avevo pensato a questa eventualità.

    set_season invece così non funziona, da come puoi vedere dalla home page
    Ultima modifica di primoverofantacalcio : 27-08-2016 alle ore 11.35.53

  4. #4
    livellacri non è connesso Utente AlterBlog
    Data registrazione
    28-07-2016
    Messaggi
    10

    Predefinito

    Citazione Originalmente inviato da primoverofantacalcio Visualizza messaggio
    Per la session_start ok, non ci avevo pensato a questa eventualità.

    set_season invece così non funziona, da come puoi vedere dalla home page
    A me sembra che funziona...

  5. #5
    Data registrazione
    28-08-2013
    Messaggi
    23

    Predefinito

    Citazione Originalmente inviato da livellacri Visualizza messaggio
    A me sembra che funziona...
    E no, quella in alto, che è il tuo esempio non funziona, quello in basso invece è il modo che utilizzavo prima e che ricarica la pagina

  6. #6
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Analizzando il sito noto che il cookie di sessione non si chiama season... L'invio del dato va a buon fine. Dopo aver inviato il dato post come lo recuperi?? (Ovvio che se cerchi di recuperare quel cookie inesistente non produca nessun risultato).
    PS. Manca il DIV HTML dove scrivere il risultato nella chiamata ajax.
    Sintesi invio post
    Codice:
    Host:primoverofantacalcio.altervista.org
    Content-Length:11
    Accept:*/*
    Origin:http://primoverofantacalcio.altervista.org
    X-Requested-With:XMLHttpRequest
    User-Agent:Mozilla/5.0 (etc etc);
    Content-Type:application/x-www-form-urlencoded; charset=UTF-8
    Referer:http://primoverofantacalcio.altervista.org/
    Accept-Encoding:gzip, deflate
    Accept-Language:it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4
    Cookie:PHPSESSID=4i2smq147n8f97ulc2ctpq81a2;
    
    season=1516
    Ultima modifica di darbula : 28-08-2016 alle ore 04.49.33

  7. #7
    Data registrazione
    28-08-2013
    Messaggi
    23

    Predefinito

    Cerco di spiegarmi meglio, che purtroppo avendo solo conoscenze base sul web editing e programmazione faccio anche fatica a spiegare ciò che voglio.

    Io ho delle tabelle nel db, coi prefissi 1516 e 1617 e si riferiscono a due annate del fantacalcio.
    In home page visualizzo risultati, classifica e marcatori in base all'annata selezionata e/o alla giornata estratta dal db.

    Quando la pagina viene caricata la prima volta $_POST['get_season'] è vuoto, e in session_start.php imposto di default il valore 1617 così carica le tabelle dell'annata corrente.

    Codice PHP:
    <?php

    // Start the session
    session_start();

    if (empty(
    $_POST['get_season'])){
    $_SESSION["season"] = "1617";
    }else{
    $_SESSION["season"] = $_POST['get_season'];
    }

    ?>
    quando poi dalla select set_season.php cambio valore, imposta 1516 (che è l'unico altro valore al momento) e mi visualizza le tabelle dell'annata precedente.

    Codice PHP:
    <form action="./" method="post" >
    <select id="soflow-color" name="get_season" onchange="this.form.submit()">
    <option value="1516" <?php if ($_SESSION["season"] == "1516") {echo "selected";} ?>>2015/16</option>
    <option value="1617" <?php if ($_SESSION["season"] == "1617") {echo "selected";} ?>>2016/17</option>
    </select>
    </form>
    mandando alla stessa pagina $_POST['get_season']

    Codice PHP:
    <?php include("private/conn_db.php") ?>
    <?php
    include("private/session_start.php") ?>
    <?php
    include("private/get_matchday.php") ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <?php include("private/head.php") ?>
    <body>
    <?php include("private/nav.php") ?>
    <div class="wrap">
    <div id="main">
    <h2><?php echo $matchday ?>&#176 GIORNATA - STAGIONE <?php if($_SESSION["season"] == 1516){echo "2015/2016";} if($_SESSION["season"] == 1617){echo "2016/2017";} ?></h2>
    <div class="l"><?php include("public/last.php") ?></div>
    <div class="r"><?php include("public/classifica.php") ?></div>
    <div class="line">
    <hr class="style14">
    </div>
    </div>
    <div id="side">
    <h2>Cambia stagione</h2>
    <?php include("private/set_season.php") ?>
    <div class="line">
    <hr class="style14">
    </div>
    <h2>Classifica Marcatori</h2>
    <?php include("public/marcatori.php") ?>
    <div class="line">
    <hr class="style14">
    </div>
    </div>

    <div id="footer">
    <ul>
    <li class="title" align="right">Partite Precedenti</li>
    <?php
    $footer_matchday
    = $matchday;
    $count = 3;

    while((
    $footer_matchday > 0) && ($count > 0)){
    echo
    "<li align=\"right\"><a href=\"#\">" . $footer_matchday . "&#176 GIORNATA</a></li>";
    $footer_matchday--;
    $count--;
    }
    ?>
    </ul>
    <ul>
    <li class="title" align="right">Item group #2</li>
    <?php echo "<li><a href=\"#\"></a></li>" ?>
    </ul>
    <p>Design: Luka Cvrk - <a href="http://www.solucija.com" title="Free Web Templates">Solucija</a></p>
    </div>
    </div>
    </body>
    </html>

    quindi se io volessi passare valori dalla select a $_SESSION["season"] senza che la pagina si ricarichi ogni volta come dovrei fare?
    Ultima modifica di primoverofantacalcio : 29-08-2016 alle ore 12.54.49

  8. #8
    livellacri non è connesso Utente AlterBlog
    Data registrazione
    28-07-2016
    Messaggi
    10

    Predefinito

    Il codice che ti avevo scritto io funzionava, l'avevo testato sia in locale sia sul tuo sito.

  9. #9
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Ciao e buona domenica il primovero fantacalcio.. qui puoi visualizzare un esempio su quello che dovresti fare http://forum.it.altervista.org/html-...ml#post1317323 Anche se per me ti servirebbe un cookie normale e non il cookie di sessione.. Devi adattare il mio codice al tuo.. cio vuol dire che dovresti modificare $dati3 io creo i dati manualmente mentre tu dovresti recuperarli tramite una query a mysql metterli con indice incrementale e poi ordinare i loro valori interi in ordine decrescente. nella index.php effetuo un contollo se i dati inviati sono validi e li riverifico anche nel cookie nella pagina session_start.php $dati (pagina set_season.php) infine sarà il valore da prendere in considerazione per mostare il contenuto (sia inizialmente o con l'interazione dell'utente) ci vuole la query mysql per creare la tabella della classifica..va notato che session_start.php dovrebbe essere utilizzato in tutte le pagine che dovrebbe creare il cookie e ovviamente anche il contenuto dell'if deve essere modificato con la query di mysql detta in precedenza.
    Cmq. nota che ho inseito l'id risultato nel xhtml é aggiunto alla chiamata ajax jquery (cosi visualizzi anche la risposta della pagina)..
    Altri errori notati nei tuoi codici, tu stai usando un editor che storpia il sorgente della pagina inserisce un carattere non stampabile (questo
    &nbsp;)
    Ultima modifica di darbula : 02-10-2016 alle ore 14.23.17

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •