Cuestiones sobre PHP

  • Autor Autor Meketeke
  • Fecha de inicio Fecha de inicio
Meketeke

Meketeke

Gamma
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
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:
af2d243b175c066bd73d0396a13b0b63o.png


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:
720bd48930ad69140a82ecc33a0ae764o.png


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.
 
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.
 
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:
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.
 
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.
 
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.
 
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>
 
Bueno es mas larga la solucion pero cumple su cometido, asi que adelante 👍
 
Atrás
Arriba