Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Form - Azione collegata alla select e campi obbligatori

    Buongiorno, sono alle prime armi con Php e Java, mi sto documentando sul vostro sito che mi è di grande aiuto, ora però sono ad un punto morto, vi chiedo per favore di illuminarmi!

    Sto realizzando una pagina che possa fungere da bivio all'inizio di un sito.
    Vorrei far si che l'utente in base alla selezione del campo select, venga poi indirizzato su di una pagina piuttosto che un'altra (cliccando il pulsante Prosegui).

    Quindi la select "Selezione-1", seguita dal pulsante Prosegui porterà ad una ipotetica "index-1"
    mnetre la select "Selezione-2", seguita dal pulsante Prosegui porterà ad una ipotetica "index-2"

    Il tutto rendendo obbligatoria la scelta sia della select che del check box (magari via Java)

    Incollo codice:

    <form id="box-2" method="post" action="azione della select">
    <label for=“dove”><h4>Your profile</h4></label>
    <select name="istat" id="dove">
    <option selected=“selected” value="1">----</option>
    <option value="2">Selezione-1</option>
    <option value="3">Selezione-2</option>
    </select></br></br></br>
    <form action="../acceptTerms.aspx" method="get" name="frmTermsConditions">
    <input type="checkbox" name="chkAccettoTermini" checked="checked" />I agree<a href="#"> to the terms of use.</a>.<br />
    <input type="submit" value="Prosegui" />
    </form>

    Grazie per l'aiuto!!!

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Prima di tutto non capisco perchè ci sono due tag <form>, di cui uno porta ad una pagina aspx...
    Secondo, puoi fare tutto con solo php, senza java(script ?). Se proprio vuoi, è possibile aggiungere ANCHE un controllo lato client (magari chiedi nella sezione javascript).
    La strada più semplice è quella di fare un'unica pagina con il form ed il codice php per la validazione e redirect
    Codice PHP:
    <?php
    if(isset($_POST['prosegui'])){
       
    //Se ci troviamo qui, è stato fatto il submit della form
       
    $errori = array();
       
    $select = (isset($_POST['istat'])) ?  $_POST['selezione']: 0;
       switch(
    $select){
          case 
    2:
              
    // Selezione 1
              
    $redirect 'index-1.php';
          break;
          case 
    3:
              
    // Selezione 2
              
    $redirect 'index-2.php';
          break;
          default:
             
    // Nessuna selezione, o valore errato 
             
    $errori['istat'] = 'Seleziona un profilo valido';

       }
       
    // Se il checkbox non è spuntato, non ci sarà
       // nessuna chiave chkAccettoTermini in $_POST
       
    if(!isset($_POST['chkAccettoTermini']))
          
    $errori['terms'] = 'Devi accettare i temini ';

       
    // Se i dati inseriti sono validi, 
       // facciamo il redirect alla pagina voluta   
       
    if(count($errori) == 0){
          
    header('location: '.$redirect);
          exit();
       }
    }
    ?>
    <!-- senza specificare l'action, richiama se stessa-->
    <form id="box-2" method="post"> 
    <label for=“dove”><h4>Your profile</h4></label>
    <select name="istat" id="dove">
    <option selected=“selected” value="1">----</option>
    <option value="2">Selezione-1</option>
    <option value="3">Selezione-2</option>
    </select></br>
    <?php if(isset($errori['istat'])) echo $errori['istat'?>
    </br></br>
    <input type="checkbox" name="chkAccettoTermini" checked="checked" />I agree<a href="#"> to the terms of use.</a>.<br />
    <?php if(isset($errori['terms'])) echo $errori['terms'?>
    <!-- aggiungi il name al submit per il controllo lato php -->
    <input type="submit" value="Prosegui" name="prosegui"  /> 
    </form>

  3. #3
    Grazie 1000 boots, la prima parte mi è chiara,
    è proprio la soluzione che cercavo,
    ho provato ad utilizzare il codice ed i campi obbligatori funzionano,
    quando faccio click però sul pulsante prosegui, non viene caricata la nuova pagina
    index-1.php o index-2.php...

  4. #4
    PS. invece di cambiare pagina facendo "prosegui" mi restituisce l'errore come se non fosse stata fatta nessuna selezione "Seleziona un profilo valido", in verità la selezione è stata effettuata.

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Si scusa, ho fatto un piccolo errore:

    $select = (isset($_POST['istat'])) ? $_POST['selezione']: 0;

    In realtà deve essere

    $select = (isset($_POST['istat'])) ? $_POST['istat']: 0;

  6. #6
    Ho modificato la riga di codice come mi hai suggerito, ora c'è un cambiamento dopo il click,
    infatti sparisce il div con relativi campi, ma purtroppo la pagina rimane sempre quella,
    non carica index-1.php o index-2

  7. #7
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    per prima cosa verifica che gli errori siano abilitati. Oppure metti queste due righe all'inizio (subito dopo <?php )

    ini_set('error_reporting', E_ALL);
    ini_set("display_errors", 1);

  8. #8
    Perfetto ho fatto, ora mi restituisce questo errore dopo aver premuto il pulsante di invio:
    Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/siti/wpc/welcome_page/woodpecker-ita.php:11) in /Applications/MAMP/htdocs/siti/wpc/welcome_page/woodpecker-ita.php on line 40

  9. #9
    Questo è il codice implementato con le righe per abilitare gli errori, mi da errore sulla riga 40:

    <?php
    ini_set('error_reporting', E_ALL);
    ini_set("display_errors", 1);
    if(isset($_POST['prosegui'])){
    //Se ci troviamo qui, è stato fatto il submit della form
    $errori = array();
    $select = (isset($_POST['istat'])) ? $_POST['istat']: 0;
    switch($select){
    case 2:
    // Selezione 1
    $redirect = 'index-1.php';
    break;
    case 3:
    // Selezione 2
    $redirect = 'index-2.php';
    break;
    default:
    // Nessuna selezione, o valore errato
    $errori['istat'] = 'Seleziona un profilo valido';


    }
    // Se il checkbox non è spuntato, non ci sarà
    // nessuna chiave chkAccettoTermini in $_POST
    if(!isset($_POST['chkAccettoTermini']))
    $errori['terms'] = 'Devi accettare i temini ';


    // Se i dati inseriti sono validi,
    // facciamo il redirect alla pagina voluta
    if(count($errori) == 0){
    header('location: '.$redirect);
    exit();
    }
    }
    ?>
    <!-- senza specificare l'action, richiama se stessa-->
    <form id="box-2" method="post">
    <label for=“dove”><h4>Your profile</h4></label>
    <select name="istat" id="dove">
    <option selected=“selected” value="1">----</option>
    <option value="2">Selezione-1</option>
    <option value="3">Selezione-2</option>
    </select></br>
    <?php if(isset($errori['istat'])) echo $errori['istat'] ?>
    </br></br>
    <input type="checkbox" name="chkAccettoTermini" checked="checked" />I agree<a href="#"> to the terms of use.</a>.<br />
    <?php if(isset($errori['terms'])) echo $errori['terms'] ?>
    <!-- aggiungi il name al submit per il controllo lato php -->
    <input type="submit" value="Prosegui" name="prosegui" />
    </form>


    </body>
    </html>

  10. #10
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Il problema è molto semplice, non puoi modificare l'header (location) perchè è gia stato inviato.
    Questo dipende dal fatto che c'è già un output prima di fare header(). e con output intendo sia echo/print sia caratteri prima di <?php
    come ritorni a capo o spazi. Caratteri che vanno eliminati.
    Ad esempio (i numeri sono le righe)
    1
    2
    3<?php
    4 ...

    oppure
    1 <?php // nota lo spazio prima di <

    Un altra cosa da verificare è che il formato del file è di tipo utf-8 con BOM. Questo formato ti da quel tipo di errore. (devi salvarlo senza BOM)

Tag per questa discussione

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.