Foros del Web » Programando para Internet » PHP »

Pasar variables de un formulario a la misma página

Estas en el tema de Pasar variables de un formulario a la misma página en el foro de PHP en Foros del Web. Tengo este codigo: Código PHP: if (!isset( $tabla )) {         echo  "<form action=\"pagina.php\" method=\"post\">" ;         echo  "<input type=\"hidden\" name=\"tabla\" value=\"" . $row [ 'dato' ]. "\">" ;     echo  "<input type=\"radio\" name=\"valor\" value=\"1\">" ;         echo  ...
  #1 (permalink)  
Antiguo 17/06/2006, 10:53
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Pasar variables de un formulario a la misma página

Tengo este codigo:

Código PHP:
if (!isset($tabla))
{
        echo 
"<form action=\"pagina.php\" method=\"post\">";
        echo 
"<input type=\"hidden\" name=\"tabla\" value=\"".$row['dato']."\">";
    echo 
"<input type=\"radio\" name=\"valor\" value=\"1\">";
        echo 
"<input type=\"radio\" name=\"valor1\" value=\"1\">";
        echo 
"<input type=\"radio\" name=\"valor2\" value=\"1\">";
        echo 
"<input type=\"radio\" name=\"valor3\" value=\"1\">";
    echo 
"<a href=\"#\" javascript:document.encuesta.submit()"name="pagina.php?tabla=".$row['dato']."\"><input type=\"hidden\">Enviar</a>";
}
else
{

    
$tabla $_GET['tabla'];
        
$valor $_POST['valor'];
        
$valor1 $_POST['valor1'];
        
$valor2 $_POST['valor2'];
        
$valor3 $_POST['valor3'];

    echo 
$tabla." ".$valor." ".$valor1." ".$valor2." ".$valoe3."<br />";

Pues bien, el valor de $tabla me lo pasa, pero $valor, $valor1, $valor2, $valor3 no, porqué?


bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332

Última edición por bichomen; 28/06/2006 a las 05:23
  #2 (permalink)  
Antiguo 17/06/2006, 14:01
Avatar de elquique  
Fecha de Ingreso: marzo-2004
Ubicación: Florida, Uruguay
Mensajes: 2.495
Antigüedad: 13 años, 8 meses
Puntos: 78
Los radio buton son grupales obtedras el valor de uno de ellos, eso creo :)
__________________
Blog Jorge Oyhenard | Tutoriales Photoshop
  #3 (permalink)  
Antiguo 17/06/2006, 14:10
Avatar de caneva  
Fecha de Ingreso: junio-2006
Ubicación: Sevilla (España)
Mensajes: 81
Antigüedad: 11 años, 6 meses
Puntos: 1
Cita:
<input type=\"radio\" name=\"valor\" value=\"1\">
echo "<input type="radio\" name=\"valor1\" value=\"1\">
echo "<input type="radio\" name=\"valor2\" value=\"1\">
echo "<input type="radio\" name=\"valor3\" value=\"1\">
Esto es incorrecto, ya que como bién te han dicho los radio actuan como un grupo, debería ser así:
Cita:
<input type=\"radio\" name=\"valor\" value=\"1\">
echo "<input type="radio\" name=\"valor\" value=\"2\">
echo "<input type="radio\" name=\"valor\" value=\"3\">
echo "<input type="radio\" name=\"valor\" value=\"4\">
La variable $valor por tanto será: 1 ó 2 ó 3 ó 4, en función de que radio seleccione el usuario. Si lo que quieres es que el usuario pueda seleccionar varias opciones a la vez en vez de radio usa el type="checkbox".

Cita:
<input type="checkbox" name="opcion1" value="pepito" />
<input type="checkbox" name="opcion2" value="mariano" />
<input type="checkbox" name="opcion3" value="enriqueta" />
<input type="checkbox" name="opcion4" value="florinda" />
O tambiém podrías meterlo en un array $opciones, todo es cuestión de lo que necesites.
__________________
Cita:
"El camino empieza renunciando al control, y volviéndose flexibles."

Última edición por caneva; 17/06/2006 a las 14:26
  #4 (permalink)  
Antiguo 17/06/2006, 14:30
Avatar de elquique  
Fecha de Ingreso: marzo-2004
Ubicación: Florida, Uruguay
Mensajes: 2.495
Antigüedad: 13 años, 8 meses
Puntos: 78
Exacto :) y en PHP haces solo un POST

Código PHP:
<?php
    $valor 
$_POST['valor'];   // este podra ser el solito cualquiera de los 1, 2, 3, 4 :)
?>
__________________
Blog Jorge Oyhenard | Tutoriales Photoshop
  #5 (permalink)  
Antiguo 17/06/2006, 14:36
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
no, no los values tienen que ser 1 por que es el valor q le quiero pasar y en name son los campos de una tabla, de una encuesta

name = excenlente value = 1

name = regular value = 1

name = malo value = 1

al darle el valor de 1 a todos como solo escoge una opción le dara un voto al radio escogido, los names son los campos de la tabla, se que funciona, pq antes, el formulario, lo procesaba en otra página y pasaba los valores correctamente, pero a sido al intregar el proceso, en la misma hoja del formulario, cuando a pasado esto y creo que q el problema esta a la hora de pasar las variables.

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #6 (permalink)  
Antiguo 17/06/2006, 14:46
Avatar de DevilMan  
Fecha de Ingreso: mayo-2006
Mensajes: 5
Antigüedad: 11 años, 6 meses
Puntos: 0
Bueno para hacer un uso correcto del codigo html en vez de usar "radio" deberias usar "checkbox" ademas de que tienes otro error porque con
<a href=javascript:document.encuesta.submit()" name=\"pagina.php?tabla=".$row['dato']."\"><input type=\"hidden\">Enviar</a>";
estas enviando por el metodo GET solo la variable "$row['dato']" y los demas en POST por eso no te recibe bien los otros valores

Última edición por DevilMan; 17/06/2006 a las 14:51
  #7 (permalink)  
Antiguo 17/06/2006, 14:48
Avatar de caneva  
Fecha de Ingreso: junio-2006
Ubicación: Sevilla (España)
Mensajes: 81
Antigüedad: 11 años, 6 meses
Puntos: 1
Claro es que el uso que quiere darle a radio no es el correcto para ese tipo de input.
__________________
Cita:
"El camino empieza renunciando al control, y volviéndose flexibles."
  #8 (permalink)  
Antiguo 17/06/2006, 14:54
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Haber el uso es el correcto, pq solo quiero que escoja una opción entre varias, y es verdad, envio tabla por GET, para el if (!isset($tabla)), e probado de enviar por GET todos los campos y tampoco funciona.

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332

Última edición por bichomen; 27/06/2006 a las 18:54
  #9 (permalink)  
Antiguo 17/06/2006, 15:01
Avatar de DevilMan  
Fecha de Ingreso: mayo-2006
Mensajes: 5
Antigüedad: 11 años, 6 meses
Puntos: 0
Si estas usando un formulario tendrias que enviar todos los datos por el metodo POST ya no mediante un enlace sino mediante un
<input type="submit" value="enviar">
  #10 (permalink)  
Antiguo 17/06/2006, 15:55
Avatar de elquique  
Fecha de Ingreso: marzo-2004
Ubicación: Florida, Uruguay
Mensajes: 2.495
Antigüedad: 13 años, 8 meses
Puntos: 78
Si es uno entre varios es radio y es como te explicamos arriba, si es este y tambien puede ser este otro es check :)

Por get o por post te llega igual si esta bien hecho.

Es cierto que deberias usar un boton submit pero si quieres hacer un enlace tambien puedes usar el javascript como hiciste perooo...

javascript:document.encuesta.submit()

donde le dijiste a tu form que se llama encuesta ??
__________________
Blog Jorge Oyhenard | Tutoriales Photoshop
  #11 (permalink)  
Antiguo 27/06/2006, 18:53
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Quiero q sea un enlace, y es verdad, se me habia pasado:

Código HTML:
<form name="encuesta"
ya denomine al formulario, pero sigue sin pasar, nada por POST

y el radio tiene que ser asi, como esta y funcionaba antes.

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #12 (permalink)  
Antiguo 27/06/2006, 19:36
 
Fecha de Ingreso: junio-2006
Ubicación: Jáltipan Veracruz, México
Mensajes: 150
Antigüedad: 11 años, 6 meses
Puntos: 1
Creo que el problema es tu forma de entender el funcionamiento.

En el formulario deben de ir todos tus componentes.


si deseas pasar también el dato tabla colocalo en un hidden después de los radios.

echo "<input type="radio\" name=\"valor3\" value=\"1\">
echo " <input type='hidden' name='tabla' value='". $row['dato']."'>";
echo "<a href='javascript:document.encuesta.submit()'>Envia r</a>";
// así envias el formulario con los datos que quieres y con un enlace
}

si no te funciona me avisas a [email protected], ya que ando un poquito fuera de los foros, estoy diseñando un sitio de PHP, está todavía en pañales pero ya tiene la instalación básica para windows:

http://finsys.webcindario.com
  #13 (permalink)  
Antiguo 27/06/2006, 19:47
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Siento decirte que el dato tabla, ya lo paso, lo e puesto detrás de los radios, como me has dicho (que no veo, la razón de pq a de estar después y no antes, creo q es lo mismo) y sigue pasando lo mismo.

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #14 (permalink)  
Antiguo 27/06/2006, 20:50
Avatar de elquique  
Fecha de Ingreso: marzo-2004
Ubicación: Florida, Uruguay
Mensajes: 2.495
Antigüedad: 13 años, 8 meses
Puntos: 78
Porque no lo subes completo asi lo vemos ya que estas cosas si estan bien funcionan no es magia y seguro hay algo mas por ahi que no vemos aun :)
__________________
Blog Jorge Oyhenard | Tutoriales Photoshop
  #15 (permalink)  
Antiguo 27/06/2006, 20:59
 
Fecha de Ingreso: junio-2006
Ubicación: Jáltipan Veracruz, México
Mensajes: 150
Antigüedad: 11 años, 6 meses
Puntos: 1
te propongo el siguiente código:

if (!isset($tabla))
{
echo "<form action='pagina.php' method='post'>";
echo "<input type='hidden' name='tabla' value='".$row['dato']."'>";
echo "<input type='radio' name='valor' value='1'>
<input type='radio' name='valor1' value='1'>
<input type='radio' name='valor2' value='1'>
<input type='radio' name='valor3' value='1'>
<a href='javascript:document.encuesta.submit()'>Envia r</a>
";
}
else
{

$tabla = $_POST['tabla'];
$valor = $_POST['valor'];
$valor1 = $_POST['valor1'];
$valor2 = $_POST['valor2'];
$valor3 = $_POST['valor3'];

echo $tabla." ".$valor." ".$valor1." ".$valor2." ".$valoe3."<br />";
}



pruebalo, debe de funcionar
  #16 (permalink)  
Antiguo 27/06/2006, 21:02
 
Fecha de Ingreso: junio-2006
Ubicación: Jáltipan Veracruz, México
Mensajes: 150
Antigüedad: 11 años, 6 meses
Puntos: 1
se me olvidaba, en vez de colocar:

if (!isset($tabla))

colocaría:

if ($tabla=="")

y en el else

despues de imprimir los valores
$tabla="";

para colocar el valor a inicio y reutilizar la página.
  #17 (permalink)  
Antiguo 27/06/2006, 21:45
Avatar de elquique  
Fecha de Ingreso: marzo-2004
Ubicación: Florida, Uruguay
Mensajes: 2.495
Antigüedad: 13 años, 8 meses
Puntos: 78
y donde haces el $tabla = $_POST['tabla']; ??
__________________
Blog Jorge Oyhenard | Tutoriales Photoshop
  #18 (permalink)  
Antiguo 27/06/2006, 22:27
Avatar de dplweb  
Fecha de Ingreso: enero-2002
Mensajes: 74
Antigüedad: 15 años, 11 meses
Puntos: 0
bueno al menos yo veo, ademas de todo lo que se ha dicho, que si el codigo inicial es tal cual dodne dice

type="radio\"

deberia decir

type=\"radio\"... un error muy comun que a mi tambien me sucede que se podria solucionar con comillas simples ' ' como lo dijeron antes.

Lo otro yo creo que el amigo aca pretende usar los radio por su efecto visual sin importarle si el documento esta bien conformado o no. Yo tambien preferiria usar checkbox.

La linea
echo "<a href...
tambien parece estar mal escrita.

A veces me sucede cuando codifico que los errores surgen por un lado de una deformacion o poco/mal conocimiento del lenguaje usado y como funciona (en este caso PHP y HTML), y por otro lado de la forma propiamente tal de codificar, el uso de las comillas especialmente cuando se imprime con PHP.
Obviamente no podemos hacer que un lenguaje funcione como a nosotros se nos plazca (lamentablemente).

te sugiero que te hagas un buen planteamiento en papel primero, simulando el traspaso de variables , algo asi como un diagrama de flujo. Quizas asi encuentres la falla y logres afinar tu sintaxis.

Saludos.
  #19 (permalink)  
Antiguo 28/06/2006, 05:22
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Cita:
Iniciado por dplweb
bueno al menos yo veo, ademas de todo lo que se ha dicho, que si el codigo inicial es tal cual dodne dice

type="radio\"

deberia decir

type=\"radio\"... un error muy comun que a mi tambien me sucede que se podria solucionar con comillas simples ' ' como lo dijeron antes.
Arreglado, en mi página lo tengo bien, a sido al copiar el codigo, me e comido algunos ", pero solucionado.

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #20 (permalink)  
Antiguo 28/06/2006, 05:31
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Cita:
Iniciado por dplweb
Lo otro yo creo que el amigo aca pretende usar los radio por su efecto visual sin importarle si el documento esta bien conformado o no. Yo tambien preferiria usar checkbox.
No, no van por hay los tiros, pero por mas que lo explico, no entendeis que tengo que seleccionar, uno de los campos, que los campos tienen diferente nombre, pq son los diferentes campos de una tabla de una base de datos, que todos los campos, su value es 1 y que solo se puede seleccionar uno, y eso un checkbox no lo hace.

Cita:
Iniciado por dplweb
La linea
echo "<a href...
tambien parece estar mal escrita.
donde esta el fallo?? habia una comilla mal puesta aqui en el foro, al copiar el codigo, pero ya la cambie, en mi página lo tengo bien

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #21 (permalink)  
Antiguo 28/06/2006, 05:41
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Voy a intentar explicarlo mejor para que lo entendáis tengo una base de datos, con diferentes tablas, en el formulario le paso el nombre de la tabla, mediante la variable $tabla y esta tabla tiene estos campos:

valor, valor1, valor2, valor3


Estos campos son INT (osea numéricos) y pueden tener campos nulos, la idea es que con los radios yo selecciono uno, por ejemplo valor2 y como su value es 1, qda registrado 1 en el primer registro de valor2, como los otros campos, admiten valores nulos y no se les ha pasado ningún valor, asumen por defecto 0, bien, de esta manera tenemos tantos registros como votos emitidos y en cada registro un único valor 1 y el resto 0, luego mediante un simple SUM() obtenemos los resultados de la suma de los 1, esto funciona, ahora espero que entendáis el pq los radios tienen que tener cada uno un name diferente que equivale a cada campo de la tabla, pero si alguien ve una solución mejor q la exponga.


bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332

Última edición por bichomen; 28/06/2006 a las 05:47
  #22 (permalink)  
Antiguo 28/06/2006, 05:51
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Esta es la consulta a la base de datos:

Código PHP:
$sql3="insert into $tabla (valor, valor1, valor2, valor3) values ('$valor','$valor1','valor2','$valor3')";
mysql_query($sql3) or die ("problema con query"); 
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #23 (permalink)  
Antiguo 02/07/2006, 07:57
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Al final, encontre el problema, estaba en link del form, no enviaba nada de lo que habia dentro del form, por eso, no pasaba las variables, ahora me encuentro con otro problema y no se como solucionarlo, resulta que el form se encuentr dentro de un include y este include, dentro de un div en la pagina principal o marco. Para cargar dentro del div los enlaces, utilizo esta función: onclick=cargaXML(this.name) que llama a este codigo ajax.js:

Código HTML:
isIE = false;

//	Creamos una variable para el objeto XMLHttpRequest
var req;

//	Creamos una funcion para cargar los datos en nuestro objeto.
//	Logicamente, antes tenemos que crear el objeto.
//	Vease que la sintaxis varia dependiendo de si usamos un navegador decente
//	o Internet Explorer
function cargaXML(url) 
{
	//	Primero vamos a ver si la URL es una URL :)
	if(url=='')
	{
		return;
	}
	//	Usuario inteligente...
	if (window.XMLHttpRequest) 
	{
		req = new XMLHttpRequest();
		req.onreadystatechange = processReqChange;
		req.open("GET", url, true);
		req.send(null);
	//	...y usuario de Internet Explorer Windows
	} 
	else if (window.ActiveXObject) 
	{
		isIE = true;
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req) 
		{
			req.onreadystatechange = processReqChange;
			req.open("GET", url, true);
			req.send();
		}
	}
}

//	Funcion que se llama cada vez que se dispara el evento onreadystatechange
//	del objeto XMLHttpRequest
function processReqChange()
{
	var detalles = document.getElementById("detalles");
	if(req.readyState == 4)
	{
		detalles.innerHTML = req.responseText;
	} 
	else 
	{
		detalles.innerHTML = '<img src="loading.gif" align="middle" /> Loading...';
	}
}
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #24 (permalink)  
Antiguo 02/07/2006, 08:05
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
y en lo enlaces, pongo:

Código HTML:
<a href="#" name="enlace1.php" onclick="cargaXML(this.name)">enlace</a> 
y funciona, pero en el form, no lo hace bien, pongo:

Código PHP:
echo "<form action=\"pagina.php?tabla=".$row['dato']."\" method=\"post\">";
....
....
...
echo 
"<a href=\"#\" name=\"javascript:document.encuesta.submit();\" onclick=\"cargaXML(this.name)\"><input type=\"hidden\">Enviar</a>"
y no hace nada, pero si modifico el link:

Código PHP:
echo "<a href=\"javascript:document.encuesta.submit();\" onclick=\"cargaXML(this.href)\"><input type=\"hidden\">Enviar</a>"
funciona, pero me carga el include encima de todo, es decir a página completa, pero yo quiero, que me lo carge dentro del div osea dentro de su marco, por eso utilizo el "#", para enmarcar el enlace, pero no lo hace, alguna idea del pq??

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
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 04:16.