• User

    Problema drop-down box

    Ciao a tutti.

    Vorrei chiedervi una cosa: in una pagina PHP ho un drop-down box contenente una lista di X elementi ed un bottone. Dopo aver scelto un qualsiasi elemento dal drop-down box e cliccato sul bottone, sul drop-down box torna a comparire il primo elemento della lista.

    La mia domanda è questa: è possibile far rimanere l'elemento scelto? Se si, come si fa?

    Ciao, grazie.


  • User Attivo

    Ciao samurai.sette
    in teoria dovrebbe rimanere il l'ultimo scelto, a meno che nel bottone non ci sia un post alla pagina stessa o un refresh. In quel caso la pagina viene ricaricata


  • User

    Ciao PietroR. Purtroppo nel bottone c'è proprio un post e una volta cliccato il php mi fa tutti i calcoli che deve e mi aggiorna un grafico google chart. Di conseguenza mi fa un refresh e mi ricarica la pagina.

    Detto questo c'è una soluzione al mio problema?
    Ciao, grazie.


  • User Attivo

    non so se ti complichi la vita o meno ma potresti fare una chiamata asincrona ajax ed aggiornare solo la parte di pagina relativa al grafico.


  • User

    avevo pensato anche io ad una soluzione del genere. infatti il grafico si trova su un div tutto suo.
    mi potresti dare qualche dritta?


  • User

    Ciao PietroR. Ho provato a scrivere questo codice che mi aggiorna solo il div contenente il grafico (senza ricaricare la pagina) ma il problema con il drop-down box persiste. Ti posto il codice che ho scritto.

    Nella sezione head ho scritto questo:

    [PHP]
    <script src="jquery-1.9.1.min.js"></script>
    <script src="jquery-migrate-1.2.1.min.js"></script>[/PHP]

    mentre nel body ho scritto questo:

    [PHP]
    <script>
    var auto_refresh = setInterval(
    function()
    {
    $('#GRAFICO').fadeOut('slow').load('index.php').fadeIn("slow");
    });
    </script>[/PHP]

    Secondo te dove sbaglio?

    Ciao, grazie.


  • User Attivo

    puoi postare il codice della drop down e del form (se c'è)?


  • User

    Ciao PietroR. Ti posto la parte inerente la drop down e il relativo form.

    [PHP]<html xmlns=" http : // w w w. w3 . org/1999/xhtml ">
    <head>
    <script src="jquery-1.9.1 . min . js"></script>
    <script src="jquery-migrate-1.2.1. min . js"></script>

    <meta content="it" http-equiv="Content-Language" />
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>CORPO</title>
    <style type="text/css">
    #COMANDI {
    width: 200px;
    float: left;
    background-color: #FFFFCC;
    }
    #CORPO {
    width: 600px;
    float: left;
    background-color: #FFCCFF;
    }body {
    text-align: center;
    }</style>
    </head>

    <body>

    <div id="COMANDI">

    COMANDI<br />
    

    <br />

    <form method="post">
    <input name="submit" style="width: 100px" type="submit" value="Aggiorna" /><br /> <br />
    <br />
    <select name="addendo1" style="width: 150px">
    <option>10</option>
    <option>20</option>
    <option>30</option>
    </select><br />
    <br />
    <select name="addendo2" style="width: 150px">
    <option>10</option>
    <option>20</option>
    <option>30</option>
    </select></form>
    </div>

    <div id="CORPO">

    <?php

    if (isset ($_POST['submit']))
    {
    $lettura1 = $_POST['addendo1'];
    $lettura2 = $_POST['addendo2'];
    $totale = $lettura1 + $lettura2;
    echo "Totale: $totale";
    }
    ?>

    <!-- faccio aggiornare solo l'ID GRAFICO e non tutta la pagina -->

    <script>

    var auto_refresh = setInterval(
    function()
    {
    $('#CORPO').fadeOut('slow').load('index.php').fadeIn("slow");
    });

    </script>

    </div>

    </body>
    </html>
    [/PHP]

    Da come puoi leggere, il codice è di una banalità assurda!!!! Ogni volta che clicco il bottone submit viene aggiornato solo il div CORPO ma nei due drop down non vengono mantenuti i valori scelti.


  • Moderatore

    Ciao samurai.sette,

    Se vuoi mantenere il post sulla pagina, prova in questo modo:
    [PHP]
    <html xmlns=" http : // w w w. w3 . org/1999/xhtml ">
    <head>
    <script src="jquery-1.9.1 . min . js"></script>
    <script src="jquery-migrate-1.2.1. min . js"></script>

    <meta content="it" http-equiv="Content-Language" />
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>CORPO</title>
    <style type="text/css">
    #COMANDI {
    width: 200px;
    float: left;
    background-color: #FFFFCC;
    }
    #CORPO {
    width: 600px;
    float: left;
    background-color: #FFCCFF;
    }body {
    text-align: center;
    }</style>
    </head>

    <body>

    <div id="COMANDI">

    COMANDI<br />
    

    <br />
    <?php
    if (isset ($_POST['submit'])){
    $lettura1 = $_POST['addendo1'];
    $lettura2 = $_POST['addendo2'];
    }

    ?>
    <form method="post">
    <input name="submit" style="width: 100px" type="submit" value="Aggiorna" /><br /> <br />
    <br />
    <select name="addendo1" style="width: 150px">
    <option <?php if($lettura1 == "10" && isset($_POST["submit"])) { echo "selected"; } ?> >10</option>
    <option <?php if($lettura1 == "20" && isset($_POST["submit"])) { echo "selected"; } ?>>20</option>
    <option <?php if($lettura1 == "30" && isset($_POST["submit"])) { echo "selected"; } ?>>30</option>
    </select><br />
    <br />
    <select name="addendo2" style="width: 150px">
    <option <?php if($lettura2 == "10" && isset($_POST["submit"])) { echo "selected"; } ?>>10</option>
    <option <?php if($lettura2 == "20" && isset($_POST["submit"])) { echo "selected"; } ?>>20</option>
    <option <?php if($lettura2 == "30" && isset($_POST["submit"])) { echo "selected"; } ?> >30</option>
    </select></form>
    </div>

    <div id="CORPO">

    <?php

    if (isset ($_POST['submit']))
    {
    $totale = $lettura1 + $lettura2;
    echo "Totale: $totale";
    }
    ?>

    <!-- faccio aggiornare solo l'ID GRAFICO e non tutta la pagina -->

    <script>

    var auto_refresh = setInterval(
    function()
    {
    $('#CORPO').fadeOut('slow').load('index.php').fadeIn("slow");
    });

    </script>

    </div>

    </body>
    </html>
    [/PHP]


  • User

    Ciao MiWebDesign, grazie mille per la risposta.

    Ho provato il tuo codice e devo dire che purtroppo non funziona. Anzi, funziona al contrario. Ti spiego: se dal drop down "addendo1" seleziono il valore 10 e dal drop down "addendo2" seleziono il valore 20 e poi clicco il bottone "Aggiorna", nei due drop down compaiono i valori 30. E poi non effettua la somma dei due valori. 😢


  • User Attivo

    Ciao samurai.sette
    Io ho testato il codice di MiWebDesign e devo dire che a me funziona.


  • User

    Ciao PietroR. Scusa ma come fa a funzionarti se MiWebDesign nel suo codice ha scritto prima questa parte di codice:

    [PHP]if (isset ($_POST['submit']))
    {
    $lettura1 = $_POST['addendo1'];
    $lettura2 = $_POST['addendo2'];
    }[/PHP]

    e poi ha scritto questo:

    [PHP]<form method="post">
    <input name="submit" style="width: 100px" type="submit" value="Aggiorna" /><br/><br/><br />
    <select name="addendo1" style="width: 150px">
    <option <?php if($lettura1 == "10" && isset($_POST["submit"])) { echo "selected"; } ?> >10</option>
    <option <?php if($lettura1 == "20" && isset($_POST["submit"])) { echo "selected"; } ?>>20</option>
    <option <?php if($lettura1 == "30" && isset($_POST["submit"])) { echo "selected"; } ?>>30</option>

    </select><br /><br /><select name="addendo2" style="width: 150px">
    <option <?php if($lettura2 == "10" && isset($_POST["submit"])) { echo "selected"; } ?>>10</option>
    <option <?php if($lettura2 == "20" && isset($_POST["submit"])) { echo "selected"; } ?>>20</option>
    <option <?php if($lettura2 == "30" && isset($_POST["submit"])) { echo "selected"; } ?> >30</option>
    </select></form>[/PHP]

    La prima parte del codice andrebbe messa dopo il form altrimenti genera gli errori "Undefined variable: lettura1" e "Undefined variable: lettura2" Questo è quello che succede a me.


  • User Attivo

    Ciao samurai.sette
    nella prima parte del codice si entra nell'if solamente se è stato fatto un submit, in caso contrario le istruzioni non vengono eseguite. Quello che ho fatto io è stato prendere il codice e incollarlo senza modificare nulla di ciò che era stato scritto.


  • User

    Ciao PietroR. Quindi hai fatto copia/incolla del codice di MiWebDesign? Se è così hai fatto ciò che ho fatto anche io e mi ha generato gli errori che ho scritto prima. Per farli sparire dovevo cliccare sul bottone.