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

    evento onChange di una select

    Ho trovato questo bello script che dovrebbe servire a visualizzare il risultato di una select di un form all'interno della stessa pagina in cui è posto il form sfruttando l'evento onChange. E' molto semplice e comprensibile ma non funziona nel senzo che dopo aver effettuato la mia scelta non la vedo stampata a video. Potete aiutarmi a capire perché?
    Questa è la pagina agina.php
    codice:
    <?
        $colori = $_POST['colori'];
    ?>
    
    <script type="text/javascript">
    function SelectPost()
    {
        document.modulo.method = "post";
        document.modulo.action = "pagina.php";
        document.modulo.submit();
    }
    </script>
    
    <form name="modulo">
        <select name="colori" onchange="SelectPost()">
            <option value=""></option>
            <option value="ROSSO">ROSSO</option>
            <option value="GIALLO">GIALLO</option>
            <option value="VERDE">VERDE</option>
            <option value="BLU">BLU</option>
        </select>
    </form>
    
    <?
        echo $colori;
    ?>
    Grazie e scusatemi ma sto imparando...

  2. #2
    Ciao! Sei una concittadina? Allora...il codice a me funziona perfettamente...con una piccola modifica: se il file php.ini sul tuo PC non è configurato correttamente, l'interprete PHP non sa cosa significhi il tag <?. Per default quando apri una porzione di codice PHP devi usare <?php.

    Prova a modificare i due <? che hai nel codice con <?php e dovrebbe andare. La parte di codice JavaScript è corretta (anche se potrebbe essere resa più standard secondo le raccomandazioni del W3C), e lo è anche la parte PHP. Solo una cosa...controlla che la parte con la funzione JavaScript sia messa nella sezione HEAD della pagina per correttezza.

  3. #3
    Ti ringrazio molto per avermi risposto!
    Ho riprovato il codice e sono riuscita a farlo funzionare, te lo riporto con le dovute correzioni:
    codice:
    <html>
    <head><title></title>
    
    
     
    <script type="text/javascript">
    
    function SelectPost()
    {
        document.modulo.method = "post";
        document.modulo.action = "pagina.php";
        document.modulo.submit();
    }
    </script>
    </head>
    <body>
    <form name="modulo">
    Scegli il colore:
    
    
        <select name="colori" onChange="SelectPost()">
            <option value=""></option>
            <option value="ROSSO">ROSSO</option>
            <option value="GIALLO">GIALLO</option>
            <option value="VERDE">VERDE</option>
            <option value="BLU">BLU</option>
        </select>
    </form>
    
    <?php
    
    $colori = $_POST["colori"];
                    
    if($colori!=null) {
    
    echo "Il colore che hai scelto è il $colori";
    
    }
    else {
    echo "";
    }
    ?>
    </body></html>
    Questo perché riscontro un altro problema al primo avvio della pagina. Mi dà questo messaggio di errore:
    Notice: Undefined index: colori in C:\www\javascript\~phpdesigner_output_tmp.php on line 30
    Ho capito qual'è il problema ma non sono capace di risolverlo: mi dai una mano?

  4. #4
    Ehm...il problema penso sia altrove in questo caso. Hai notato che ti restituisce un percorso quando ti segnala l'errore? A me infatti la pagina corretta funziona...non è che c'è qualche altro script che fa qualcosa basandosi sul colore che ovviamente al primo accesso alla pagina non è impostato? Perché se la pagina è "pagina.php" non ha senso che ti indichi un errore in C:\www\javascript\~phpdesigner_output_tmp.php.

  5. #5
    Purtroppo no: la pagina "pagina.php" è così come la vedi, non ci sono altri script.
    Comunque forse quella dicitura nel messaggio di errore è dovuta al fatto che vedo la pagina usando "PHP designer". Se la vedo direttamente da explorer o da firefox andando su localhost il messaggio di errore è:

    Notice: Undefined index: colori in C:\www\javascript\pagina.php on line 30


  6. #6
    Può darsi...avevo pensato anche io a quella riga a causa del controllo che fai...prova a modificare l'if in questo modo:

    codice:
    <?php
    
    $colori = $_POST["colori"];
                    
    if ($colori!="") {
    
    echo "Il colore che hai scelto è il $colori";
    
    }
    
    ?>
    Il blocco else puoi eliminarlo perché non serve visto che non stampa nulla. Invece, gli array $_GET e $_POST si comportano come tutti gli altri array associativi in PHP: se cerchi di accedere ad un elemento non presente nell'array (colori al primo accesso alla pagina non esiste), PHP considera quell'elemento presente e gli assegna un valore vuoto. In caso contrario segnalerebbe un errore proprio perché l'elemento non esiste. Cmq ti consiglio di non usare PHP designer o altri editor che non siano editor di testo...ti risparmi parecchi mal di testa! Cmq ripeto che a me funziona tranquillamente...non è che il tuo file php.ini è configurato in un modo particolare? Perché io il mio non l'ho modificato...

  7. #7
    Grazie ancora ma il risultato non cambia. Siccome il problema avviene solo la prima volta che apro la pagina e non quando comincio a selezionare il colore che preferisco (in quel caso scompare l'errore e compare la dicitura che mi indica il colore che ho scelto) penso che dipenda dal fatto che aprendo la pagina è come se avessi già un submit senza che sia stata espressa alcuna scelta e quindi la variabile "colore" non ha assunto alcun valore. Come è possibile che a te non dia questo tipo di errore? (scusa se insisto ma finora nessuno mi ha mai risposto in questo forum )

  8. #8
    Tranquilla...allora...il motivo potrebbe essere appunto la configurazione del file php.ini. Io ho tenuto l'originale, ma tu potresti averlo installato con qualche altro pacchetto (tipo EasyPHP) o averlo modificato. Quando accedi alla pagina la prima volta non fai un submit...e se l'elemento "colore" dell'array $_POST non esiste non ha importanza. Come ti dicevo, PHP assume che se accedi ad un elemento che non esiste in un array associativo, l'elemento esista e abbia un valore vuoto (come quando tenti di usare una variabile che non hai mai dichiarato o inizializzato, PHP imposta il suo valore a vuoto). Dato che a me non dà (giustamente) errori, presumo sia colpa della configurazione di PHP sul tuo PC...magari il tuo file php.ini ha qualche direttiva modificata. Fai un esperimento: stoppa il server web (penso tu abbia Apache), poi trova il file php.ini (dovrebbe essere in C:\Windows o C:\WINNT) e spostalo in un'altra cartella. Poi vai nella cartella dove hai installato PHP (io ce l'ho in C:\PHP), trova il file php.ini-dist e copialo nella cartella dove si trovava il file php.ini. Quindi rinomina il file php.ini-dist che hai copiato in php.ini e riavvia il server. Riprova ad accedere alla pagina dal browser e fammi sapere.

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.