Foros del Web » Programando para Internet » PHP »

Recodiga y muestra de datos de formulario en misma página

Estas en el tema de Recodiga y muestra de datos de formulario en misma página en el foro de PHP en Foros del Web. Hola a todos, tengo un problema el cual no termino de solucionarlo y ha llegado un punto que no entiendo que hago mal. Tengo un ...
  #1 (permalink)  
Antiguo 14/04/2014, 11:28
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Recodiga y muestra de datos de formulario en misma página

Hola a todos, tengo un problema el cual no termino de solucionarlo y ha llegado un punto que no entiendo que hago mal.

Tengo un formulario en el cual recogo 7 datos, y, cada dato lo asigno a una variable para trabajar con ellos de otra forma más adelante.

introducto los datos, envio el formulario y con un echo los muestro, pero lo que no entiendo es porque muestra todo 1, es decir, loq ue recogo son 7 números, supongamos 1,10,22,34,49,4,7

pero al darle a enviar y probando que imprima esos datos en vez de esos números aparece 1,1,1,1,1,1,1.

Código PHP:
Ver original
  1. <?php
  2.  
  3. // conectamos a la bd "pruebas"
  4. $conexion = mysqli_connect("Localhost","root","") or die("Error en la conexion");
  5. mysqli_select_db($conexion, "prueba") or die ("error en la seleccion de BD");
  6. if(!$conexion) {
  7.     echo "Error al conectar a la BD: ";
  8. } else {
  9.     echo "Conexion correcta. <br><br>";
  10. }
  11. ?>
  12.  
  13. <form action="" method="POST">
  14. Tus numeros: <input type="text" name="n1" size="1" maxlength="2">
  15. <input type="text" name="n2" size="2" maxlength="2">
  16. <input type="text" name="n3" size="2" maxlength="2">
  17. <input type="text" name="n4" size="2" maxlength="2">
  18. <input type="text" name="n5" size="2" maxlength="2">
  19. Tus estrellas: <input type="text" name="e1" size="1" maxlength="2">
  20. <input type="text" name="e2" size="2" maxlength="2">
  21. <input type="submit" value="enviar">
  22. </form>
  23.  
  24. <?php
  25.  
  26. if(isset($_POST)) {
  27. $n1 = isset($_POST['n1']);
  28. $n2 = isset($_POST['n2']);
  29. $n3 = isset($_POST['n3']);
  30. $n4 = isset($_POST['n4']);
  31. $n5 = isset($_POST['n5']);
  32. $e1 = isset($_POST['e1']);
  33. $e2 = isset($_POST['e2']);
  34.  
  35.     echo "$n1 $n2 $n3 $n4 $n5 $e1 $e2";
  36. }
  37.  
  38. ?>

Si hago lo mismo pero sin trabajr en la misma página si que me funciona correctamente.

ACTUALIZO:

Si quito los isset del dato asignado a las variables dentro del if si que me muestra los números, pero al acceder al formulario inicialmente me aparece que las variables no están definidas.
__________________
No te olvides de dar +1 a quien te echa un cable ;)

Última edición por rodrypaladin; 14/04/2014 a las 12:32
  #2 (permalink)  
Antiguo 14/04/2014, 11:38
 
Fecha de Ingreso: abril-2014
Ubicación: Canarias!
Mensajes: 150
Antigüedad: 10 años
Puntos: 10
Respuesta: Recodiga y muestra de datos de formulario en misma página

isset es una función que te devuelve SI o NO, TRUE o FALSE, 1 o 0

es una función que se suele usar en condiciones IF..No sé cual es tu intención al poner el isset, pero ahí no van

Si me dices que querias que haga el isset te digo una solucion alternativa
__________________
Pautas php:
No usar libreria mysql, usa mysqli; Separar siempre los controladores de la vista; Procedual es feo, ama los objetos
  #3 (permalink)  
Antiguo 14/04/2014, 12:07
Avatar de extramex  
Fecha de Ingreso: marzo-2014
Ubicación: Torreon
Mensajes: 9
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Recodiga y muestra de datos de formulario en misma página

Prueba con lo siguiente:

Código PHP:
<?php 
if(isset($_POST['enviar']))
{
$n1 $_POST['n1'];
$n2 $_POST['n2'];
$n3 $_POST['n3'];
$n4 $_POST['n4'];
$n5 $_POST['n5'];
$e1 $_POST['e1'];
$e2 $_POST['e2'];
 
    echo 
"$n1 $n2 $n3 $n4 $n5 $e1 $e2";
}
 
?>
Intenta y me dices como te fue
  #4 (permalink)  
Antiguo 14/04/2014, 12:11
 
Fecha de Ingreso: abril-2014
Ubicación: Canarias!
Mensajes: 150
Antigüedad: 10 años
Puntos: 10
Respuesta: Recodiga y muestra de datos de formulario en misma página

Cita:
Iniciado por rodrypaladin Ver Mensaje
ACTUALIZO:

Si quiero los isset del dato asignado a las variables dentro del if si que me muestra los números, pero al acceder al formulario inicialmente me aparece que las variables no están definidas.

Dijo que ya lo hacia pero que le daban los notice cuando no rellenaba un campo, normal si no confirma antes que existen.

Lo que falta es que en un sitio comprueba variable por variable si existe o no, es la forma más limpia. Es decir, variable por variable

if(!isset($_POST['algo']) ) $_POST['algo']='';
Para que se inicialize en el array por lo menos, en ese caso si puede hacer la parte de abajo
__________________
Pautas php:
No usar libreria mysql, usa mysqli; Separar siempre los controladores de la vista; Procedual es feo, ama los objetos
  #5 (permalink)  
Antiguo 14/04/2014, 12:32
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: Recodiga y muestra de datos de formulario en misma página

Cita:
Iniciado por extramex Ver Mensaje
Prueba con lo siguiente:

Código PHP:
<?php 
if(isset($_POST['enviar']))
{
$n1 $_POST['n1'];
$n2 $_POST['n2'];
$n3 $_POST['n3'];
$n4 $_POST['n4'];
$n5 $_POST['n5'];
$e1 $_POST['e1'];
$e2 $_POST['e2'];
 
    echo 
"$n1 $n2 $n3 $n4 $n5 $e1 $e2";
}
 
?>
Intenta y me dices como te fue
De esta forma directamente no imprime en pantalla nada.

Cita:
Iniciado por Qazser Ver Mensaje
Dijo que ya lo hacia pero que le daban los notice cuando no rellenaba un campo, normal si no confirma antes que existen.

Lo que falta es que en un sitio comprueba variable por variable si existe o no, es la forma más limpia. Es decir, variable por variable

if(!isset($_POST['algo']) ) $_POST['algo']='';
Para que se inicialize en el array por lo menos, en ese caso si puede hacer la parte de abajo
Podrías explicarmelo algo mejor @Qazser ? Me sería de gran ayuda
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #6 (permalink)  
Antiguo 14/04/2014, 13:15
 
Fecha de Ingreso: abril-2014
Ubicación: Canarias!
Mensajes: 150
Antigüedad: 10 años
Puntos: 10
Respuesta: Recodiga y muestra de datos de formulario en misma página

Solo un comentario antes de comenzar.

El codigo de entramex no devuelve nada por la condicion
if(isset($_POST['enviar']))

Porque no hay ningun campo con name="enviar", el boton submit tiene value pero no tien name...lo que no es ningun problema pero solo la explicación.

Ahora, vamos al asunto.

Primero unas clases de concepto:

-Solo se cean las variables POST cuando se envian con contenido del formulario. Es decir, si en el formulario el campo de texto con name="n3" está vacío, la variable $_POST['n3'] NO existirá, es decir, que no está definida cuando la llames para
Código PHP:
$n3$_POST['n3']; 
porque $_POST['n3'] nunca llegó a enviarse.

Solución:

Lo que se suele hacer es comprobar si cada variable existe....Tienes que saber si las variables son opciones o son obligatorias

Si son obligatorias deberias volver a enviar el usuario al formulario
Si son opcionales pues defines las variables no rellenadas con variables vacias y sigues con el php

Siempre es importante comprobar los campos que te llegan.

Con la función tu compruebas junto a un if si existe una variable, luego depende de ti que hacer cuando no está

Te dejo ejemplo sucios y rapidos para que entiendas el procedimiento:

Obligatorio
Código PHP:

if(!isset($_POST['n3']) )
{
     echo 
'X campo es obligatorio';
     die();
}
$n3 $_POST['n3']; 

Opcional
Código PHP:

if(!isset($_POST['n3']) ) $n3='';
else 
$n3 $_POST['n3']; 
Esto debes hacerlo por cada variable que recibes de un formulario, si lo quieres hacer bien.

un saludo!!
__________________
Pautas php:
No usar libreria mysql, usa mysqli; Separar siempre los controladores de la vista; Procedual es feo, ama los objetos
  #7 (permalink)  
Antiguo 14/04/2014, 14:12
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: Recodiga y muestra de datos de formulario en misma página

Ahora si que si, esta explicación me lo ha aclarado bien, a ver si salgo del trabajo y puedo probar como me has dicho.

EDITO:

Efectivamente el código ha funcionado. Así quedó el código

Código PHP:
Ver original
  1. if(isset($_POST)) {
  2.     if(!isset($_POST['n1'])) {
  3.         $n1=''; } else {
  4.             $n1 = $_POST['n1']; }
  5.     if(!isset($_POST['n2'])) {
  6.         $n2=''; } else {
  7.             $n2 = $_POST['n2']; }
  8.     if(!isset($_POST['n3'])) {
  9.         $n3=''; } else {
  10.             $n3 = $_POST['n3']; }
  11.     if(!isset($_POST['n4'])) {
  12.         $n4=''; } else {
  13.             $n4 = $_POST['n4']; }
  14.     if(!isset($_POST['n5'])) {
  15.         $n5=''; } else {
  16.             $n5 = $_POST['n5']; }
  17.     if(!isset($_POST['e1'])) {
  18.         $e1=''; } else {
  19.             $e1 = $_POST['e1']; }
  20.     if(!isset($_POST['e2'])) {
  21.         $e2=''; } else {
  22.             $e2 = $_POST['e2']; }
  23.  
  24. echo "<b>Tus numeros:</b> $n1 $n2 $n3 $n4 $n5<br>";
  25. echo "<b>Tus estrellas:</b> $e1 $e2";
  26. }
__________________
No te olvides de dar +1 a quien te echa un cable ;)

Última edición por rodrypaladin; 14/04/2014 a las 23:17

Etiquetas: formulario, muestra, mysql, página, select, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:21.