Pregunta

Tengo problemas para pelar las etiquetas de las entradas de texto recuperados de mi formulario con el fin de hacer algo con ellos en checkout.php. La entrada se almacena en un multi-dimensional array.

Esta es mi forma:

  echo '<form name="choose" action="checkout.php" method="post" onsubmit="return  validate_second_form(this);">';

        echo '<input type="hidden" name="hidden_value" value="'.$no_guests.'" />';

        if($no_guests >= 1){

            echo '<div class="volunteer">';
                echo '<fieldset>';
                    echo '<legend>Volunteer:</legend>';
                        echo '<label>Table:</label>';
                        echo '<select name="volunteer_table">';
                            foreach($tables as $t){
                                    echo '<option>'.$t.'</option>';
                                }
                        echo '</select><br><br>';
                        echo '<label>Seat number:</label>';
                        echo '<select name="volunteer_seat">';
                            foreach($seats as $seat){
                                    echo '<option>'.$seat.'</option>';
                                }
                        echo '</select><br><br>';
                        //echo '<br>';
                echo '</fieldset>';
            echo '</div>';

            for($i=0;$i<$no_guests;$i++){
                $guest = "guest_".$i;
                echo '<div class="'.$guest.'">';
                    echo '<fieldset>';
                        echo '<legend>Guest '.$i.':</legend>';
                            echo '<label>First Name:</label>';
                            echo '<input type="text" name="guest['.$i.']['.$first_name.']" id="fn'.$i.'">';
                            echo '<label>Surname:</label>';
                            echo '<input type="text" name="guest['.$i.']['.$surname.']" id="surname'.$i.'"><br><br>';

                            echo '<label>Date of Birth:</label> <br>';
                            echo '<label>Day:</label>';
                            echo '<select name="guest['.$i.'][dob_day]">';
                                for($j=1;$j<32;$j++){
                                    echo"<option value='$j'>$j</option>";
                                }
                            echo '</select>';

                            echo '<label>Month:</label>';
                            echo '<select name="guest['.$i.'][dob_month]">';
                                for($j=0;$j<sizeof($month);$j++){
                                    $value = ($j + 1);
                                    echo"<option value='$value'>$month[$j]</option>";
                                }
                            echo '</select>';

                            echo '<label>Year:</label>';
                            echo '<select name="guest['.$i.'][dob_year]">';
                                for($j=1900;$j<$year_limit;$j++){
                                    echo"<option value='$j'>$j</option>";
                                }
                            echo '</select> <br><br>';

                            echo '<label>Sex:</label>';
                            echo '<select name="guest['.$i.']['.$sex.']">';
                                echo '<option>Female</option>';
                                echo '<option>Male</option>';
                            echo '</select><br><br>';

                            echo '<label>Table:</label>';
                            echo '<select name="guest['.$i.']['.$table.']">';
                                foreach($tables as $t){
                                    echo '<option>'.$t.'</option>';
                                }

                            echo '</select><br><br>';
                            echo '<label>Seat number:</label>';
                            echo '<select name="guest['.$i.']['.$seat_no.']">';
                                foreach($seats as $seat){
                                    echo '<option>'.$seat.'</option>';
                                }
                            echo '</select><br><br>';
                            //echo '<br>';
                    echo '</fieldset>';
                echo '</div>';
            }
        }
        else{
            echo '<div id="volunteer">';
                echo '<fieldset>';
                    echo '<legend>Volunteer:</legend>';
                        echo '<label>Table:</label>';
                        echo '<select name="volunteer['.$table.']">';
                            foreach($tables as $t){
                                    echo '<option>'.$t.'</option>';
                                }
                        echo '</select><br><br>';
                        echo '<label>Seat number:</label>';
                        echo '<select name="volunteer['.$seat_no.']">';
                            foreach($seats as $seat){
                                    echo '<option>'.$seat.'</option>';
                                }
                        echo '</select><br><br>';
                        //echo '<br>';
                echo '</fieldset>';
            echo '</div>';
        }
        echo '<input type="submit" value="Submit form">';
    echo '</form>';

aquí está checkout.php:

if(isset($_POST['guest'])){
foreach($_POST['guest'] as $guest){
    $guest['first_name'] = strip_tags($guest['first_name']);
    $guest['surname'] = strip_tags($guest['surname']);
}
//$_SESSION['guest'] = $guests;
}
¿Fue útil?

Solución

Es necesario un & para permitir la edición del objeto.

foreach ($_POST['guest'] as &$guest)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top