Cuestiones sobre PHP

Meketeke

Gamma
Verificación en dos pasos desactivada
Desde
22 Jun 2016
Mensajes
190
Buenas, estoy haciendo un ejercicio sobre llevar los datos de un formulario a otra página.
La página del formulario es la siguiente:
HTML:
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Caso práctico</title>
</head>
<body>
    <h1 style="text-align:center">Suscripción electrónica a nuestro boletín.</h1>
    <p>Nota: Este es un formulario de ejemplo en el que los datos aquí escritos se trasladan a otra página</p>
    <form action="comprobar.php" method="POST">
        Nombre: <input type="text" name="nombre" id="">
        Apellidos: <input type="text" name="apellidos" id="">
        e-mail: <input type="email" name="email" id="">
        Contraseña: <input type="password" name="password" id="">
        <br>
        <br>
        <div class="genero" style="float:left; margin-left: 40px;">
            <span>Sexo</span>
            <table>
                <tr>
                    <td><label><input type="radio" name="varon" id="" value="Varón"> Varón</label></td>
                </tr>
                <tr>
                    <td><label><input type="radio" name="mujer" id="" value="Mujer"> Mujer</label></td>
                </tr>   
            </table>
        </div>
        <div class="estudios" style="float:left; margin-left: 40px; margin-right: 40px;">
            <span>Nivel de estudios</span>
            <table>
                <tr>
                    <td><input type="radio" name="cert_esc" id=""> Certificado escolar</td>
                </tr>   
                <tr>
                    <td><input type="radio" name="grad_eso" id=""> Graduado en eso</td>
                </tr>
                <tr>
                    <td><input type="radio" name="bach_fp" id=""> Bachiller - Formación profesional</td>
                </tr>
                <tr>
                    <td><input type="radio" name="diplo" id=""> Diplomado</td>
                </tr>
                <tr>
                    <td><input type="radio" name="lic_doc" id=""> Licenciado o Doctorado</td>
                </tr>       
            </table>
        </div>
        <div class="intereses">
            <span>Interesado en los siguientes temas:</span>
            <table>
                <tr>
                    <td><input type="checkbox" name="music" id=""> Música</td>
                </tr>
                <tr>   
                    <td><input type="checkbox" name="sport" id=""> Deportes</td>
                </tr>
                <tr>   
                    <td><input type="checkbox" name="cine" id=""> Cine</td>
                </tr>
                <tr>   
                    <td><input type="checkbox" name="books" id=""> Libros</td>
                </tr>
                <tr>   
                    <td><input type="checkbox" name="science" id=""> Ciencia</td>
                </tr>
            </table>
        </div>
        <br>
        <div class="other">
            <span>Día de la semana que le interesa recibirlo</span>
            <br>
            <br>
            <select name="dias" id="">
                <option value="lunes">Lunes</option>
                <option value="martes">Martes</option>
                <option value="miercoles">Miércoles</option>
                <option value="jueves">Jueves</option>
                <option value="viernes">Viernes</option>
                <option value="sabado">Sábado</option>
                <option value="domingo">Domingo</option>
            </select>
            <br>
            <br>
            <span>Su opinión:</span>
            <br>
           <textarea name="mensaje" id="" cols="50" rows="10" placeholder="Su opinión:"></textarea>
            <br>
            <br>
            <input type="submit" value="Comprobar el formulario">
            <input type="button" value="Borrar todo">
        </div>
    </form>
</body>
</html>
Aquí una captura para que sea algo más visual:


Y a continuación el código de la página de respuesta:
PHP:
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Caso práctico</title>
</head>
<body>
    <?php
        // Datos generales
        $nombre=$_POST['nombre'];
        $apellidos=$_POST['apellidos'];
        $email=$_POST['email'];
        $password=$_POST['password'];
        // Sexo
        $varon=$_POST['varon'];
        $mujer=$_POST['mujer'];
        // Estudios
        $certificado=$_POST['cert_esc'];
        $eso=$_POST['grad_eso'];
        $bach_fp=$_POST['bach_fp'];
        $diplo=$_POST['diplo'];
        $licenciado=$_POST['lic_doc'];
        // Intereses
        $musica=$_POST['music'];
        $deportes=$_POST['sports'];
        $cine=$_POST['cine'];
        $libros=$_POST['books'];
        $ciencia=$_POST['science'];
        // Mensaje
        $mensaje=$_POST['mensaje'];

        // Función Sexo
       /*$sexo = if ($varon == "Varón") {
            echo $varon;
        }
        else {
            echo $mujer;
        }*/

    ?>
    <h3>Tus datos de suscripción:</h3>
    <p>Estos son los datos que nos ha enviado:</p>
    <br>
    <p><strong>Nombre: <?php echo $nombre;?></strong></p>
    <p><strong>Apellidos: <?php echo $apellidos;?></strong></p>
    <p><strong>E-mail: <?php echo $email;?></strong></p>
    <p><strong>Contraseña: <?php echo $password;?></strong></p>
    <p><strong>Sexo: <?php echo $mujer; echo $varon;?></strong></p>
    <p><strong>Estudios:</strong></p>
    <p><strong>Música:</strong></p>
    <p><strong>Deportes:</strong></p>
    <p><strong>Cine:</strong></p>
    <p><strong>Libros:</strong></p>
    <p><strong>Ciencia:</strong></p>
    <p><strong>Día de la semana:</strong></p>
    <p><strong>Tu comentario: <?php $mensaje;?></strong></p>
</body>
</html>
El resultado final me gustaría que toda la información seleccionada en el formulario apareciera de la siguiente manera:


Mi problema es que principalmente no sé como en el documento del formulario solo se pueda seleccionar una opción entre varón y mujer y según lo que elijas eso mismo aparezca en el resultado. Tampoco me aparece el texto incluído en el textarea en el resultado final. Por último en las cosillas de los intereses me gustaría que dependiendo de si la he seleccionado o no en el resultado final al lado de la opción me apareciera Sí o No.

Espero haberme explicado de forma decente. Gracias de antemano.
 

Gamarra

VIP
Gamma
Programador
Verificación en dos pasos desactivada
Verificado por Whatsapp
Desde
4 Oct 2019
Mensajes
192
El problema es que estás intentado obtener cada check box de manera independiente, deben de tener un mismo nombre, name="interes[]", y un value diferente.
 

Wizard

Xi
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
27 Ago 2011
Mensajes
4.110
1- Para que solo puedas seleccionar una de las opciones en los radio button, estos deben compartir el mismo name, por ejemplo name="genero", y el valor que llegaría es el que se encuentre en los atributos value.
2- No he revisado muy a fondo el código pero parece ser un problema de sintaxis ya que no veo el error, como te digo no lo he revisado minuciosamente.
3- Puedes utilizar un if y la función isset(), para realizar el comportamiento que necesitas.

Un saludo

PD: Acabo de hacer un form solo con un campo textarea y recibiendo el contenido, puedes guiarte con este sencillo ejemplo:

PHP:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <?php if (isset($_POST['mensaje'])) {
        $mensaje = $_POST['mensaje'];
        echo $mensaje;
    }  ?>

    <form action="" method="POST">
        <textarea name="mensaje" id="" cols="30" rows="10"></textarea>
        <button>Enviar</button>
    </form>
</body>
</html>
 
Última edición:

MauriPr

Beta
Verificación en dos pasos desactivada
Verificado por Whatsapp
Desde
9 Jun 2015
Mensajes
91
Hola amigo medio revise y veo un par de cosas.

1. Para sexo deberías de considerar usar un select.
2. Si solo lo vas a imprimir no es necesario guardar todo en variables a no ser que las uses después
3. Si es obligatorio el uso de variables mejor usa algunos arreglos para no tener tantas variables así para imprimir mejor haz el recorrido de las mismas.
 

Meketeke

Gamma
Verificación en dos pasos desactivada
Desde
22 Jun 2016
Mensajes
190
Vale y cómo puedo imprimir en caso de que marque las casillas de los intereses (Música, Deportes...) que me aparezca el Sí o el No. La idea que tengo en mente sería con un if y un else pero no termino de visualizar bien la idea.
 

vicram10

VIP
Delta
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
8 May 2013
Mensajes
551
Edad
34
Para poder recorrer debes hacer lo que te dijeron arriba, llamarle de la misma forma a todos los checkbox

PHP:
<div class="intereses">
            <span>Interesado en los siguientes temas:</span>
            <table>
                <tr>
                    <td><input type="checkbox" name="interes[]" value="Musica" id=""> Música</td>
                </tr>
                <tr>   
                    <td><input type="checkbox" name="interes[]" value="Deporte" id=""> Deportes</td>
                </tr>
                <tr>   
                    <td><input type="checkbox" name="interes[]" value="Cine" id=""> Cine</td>
                </tr>
                <tr>   
                    <td><input type="checkbox" name="interes[]" value="Libros" id=""> Libros</td>
                </tr>
                <tr>   
                    <td><input type="checkbox" name="interes[]" value="Ciencia" id=""> Ciencia</td>
                </tr>
            </table>
        </div>
Y en tu archivo php debes recibir asi

PHP:
if (!empty($_POST['interes']){
     foreach($_POST['interes'] as $seleccionado){
            echo $seleccionado; 
     }
}
Prueba de esa forma.
 

Meketeke

Gamma
Verificación en dos pasos desactivada
Desde
22 Jun 2016
Mensajes
190
Al final mantuve el mismo nombre que tenía a todos los input del checkbox:

HTML:
<div class="intereses">
            <span>Interesado en los siguientes temas:</span>
            <table>
                <tr>
                    <td><input type="checkbox" name="music" id=""> Música</td>
                </tr>
                <tr>   
                    <td><input type="checkbox" name="sports" id=""> Deportes</td>
                </tr>
                <tr>   
                    <td><input type="checkbox" name="cine" id=""> Cine</td>
                </tr>
                <tr>   
                    <td><input type="checkbox" name="books" id=""> Libros</td>
                </tr>
                <tr>   
                    <td><input type="checkbox" name="science" id=""> Ciencia</td>
                </tr>
            </table>
        </div>
Y para que me apareciera Sí o No creé directamente una función en cada uno de los campos con los consejos que me dísteis:

PHP:
<p><strong>Música:
    <?php if (isset($musica)){
            echo "Sí";
        } else{
            echo "No";
        }?>
    </strong></p>
    <p><strong>Deportes:
    <?php if (isset($deportes)){
            echo "Sí";
        } else{
            echo "No";
        }?>
    </strong></p>
    <p><strong>Cine:
    <?php if (isset($cine)){
            echo "Sí";
        } else{
            echo "No";
        }?>
    </strong></p>
    <p><strong>Libros:
    <?php if (isset($libros)){
            echo "Sí";
        } else{
            echo "No";
        }?>
    </strong></p>
    <p><strong>Ciencia:
    <?php if (isset($ciencia)){
            echo "Sí";
        } else{
            echo "No";
        }?>
    </strong></p>
 

vicram10

VIP
Delta
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
8 May 2013
Mensajes
551
Edad
34
Bueno es mas larga la solucion pero cumple su cometido, asi que adelante 👍
 

Arriba