Foros del Web » Programando para Internet » PHP »

Como pasar variables de JavaScript a PHP

Estas en el tema de Como pasar variables de JavaScript a PHP en el foro de PHP en Foros del Web. Buenas noches tengo un problema con validación de formularios con PHP, a ver este es mi problema, tengo este código : <form name="form1" method="post" action=""> ...
  #1 (permalink)  
Antiguo 14/05/2003, 21:33
 
Fecha de Ingreso: marzo-2003
Ubicación: Bogotá
Mensajes: 199
Antigüedad: 21 años, 1 mes
Puntos: 0
Sonrisa Como pasar variables de JavaScript a PHP

Buenas noches tengo un problema con validación de formularios con PHP, a ver este es mi problema,
tengo este código :

<form name="form1" method="post" action="">
<table width="100%" border="3" cellspacing="0" cellpadding="0">
<tr>
<td height="30" width="50%"><div align="center"><strong>CONTEXTO</strong></div></td>
<td width="9%"><div align="center"><strong>DIA</strong></div></td>
<td width="26%"><div align="center"><strong>PROFESOR</strong></div></td>
<td width="6%"><div align="center"><strong>CUPO</strong></div></td>
<td width="9%"><div align="center"><strong>MARCAR</strong></div></td>
</tr>
<?PHP
$total_filas = (mysql_num_rows($IdConsulta));

for($i=0;$i < $total_filas;$i++)
{
$row = mysql_fetch_array($IdConsulta);
echo("<tr> <td>".$row["nombre"]."</td>");
echo("<td> <div align='center'>" . $row["dia"] . "</div></td>");
echo("<td>" .$row["profesor"] . "</td>");
echo("<td> <div align='center'>" . $row["cupo"] . "</div></td>");
echo("<td> <div align='center'> <input type='radio' name='" . $row["dia"] . "' value='" . $row["cod_contexto"] . "'></div> </td> </tr>");
}
?>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="50"><div align="center">
<input type="submit" name="Submit" value="Inscribir" onClick="return getResponse(this.form)">
</div></td>
</tr>
</table>

</form>


estoy mandandolo a una función en JavaScript "getResponse" que me valida el input type= "radio" y ya atrapo en una variable
en JavaScript este valor, la pregunta es como hago para pasar esta variable a PHP ?????

Se puede hacer la validación del input type= "radio" desde PHP????, porque si se puede hacer ya
puedo direccionar las variables a donde quiera, como haría esto??? gracias por sus respuestas.

o aun mejor si en lugar de que se vaya para otra página, me mande a una funcion (por ejemplo) en la misma página y
ejecute el código que alli tenga?
  #2 (permalink)  
Antiguo 14/05/2003, 22:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El valor que vas a recoger en PHP es el de tu variable 'radio'

Código PHP:
echo("<td> <div align='center'> <input type='radio' name='" $row["dia"] . "' value='" $row["cod_contexto"] . "'></div> </td> </tr>"); 
la validación que haces en javascript (supongo pues no se vé el código de dicha función ..) sólo evita que se "envie" (que actue el submit del formulario) o No .. Por ende .. una vez "pre-validado" en javascirpt (en el CLIENTE) esos dtos .. lo que que sea válido lo vas a enviar al SERVIDOR (PHP) .. Lo que enviaras es TODA variable que tengas en tus <input ..> de cualquier tipo y tus tus <select> ..

El objeto 'rádio' por sus caracteristicas Sólo se envia el valor de dicho rádio marcado .. por ende .. en "PHP" tendras solo una variable .. de nombre el "name" que le pongas a tu rádio y de valor el "value" que le des ..

Para lo que pretendes hacer .. te recomendaría que usases arrays para definir tu nombre de variable:

Código PHP:
echo("<td> <div align='center'> <input type='radio' name='fecha[" $row["dia"] . "]' value='" $row["cod_contexto"] . "'></div> </td> </tr>"); 
Con eso .. fecha[] .. tendrás un array de indice asociativo al día que obtienes de tu campo de tu BD $row["dia"] ...

Para recogerlo en PHP tan solo debes hacer:

(sabiendo que usando un boton 'radio' vas a obtener sólo un array con un elemento)
Código PHP:
list($dia,$codigo)=each($_POS['fecha']);
echo 
$dia." --> ".$codigo
ó simplemente: (en caso de tener un checkbox por ejemplo donde eviarias mas de una opción .. como indices del array)
Código PHP:
foreach ($_POST['fecha'] as $dia => $codigo){
echo 
$dia." --> ".$codigo;

Ahí ya tendrías tus variables con tu $dia y tu $codigo .. validalo como tengas que hacerlo .. El tema de: ..."direccionar las variables a donde quiera"... no entendí bien (supongo que te referiras a "propagar" (redireccionando ..) .. pero es mejor que expliques el proceso completo de tu script tras validar esas variables de tu formulario).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 15/05/2003, 11:39
 
Fecha de Ingreso: marzo-2003
Ubicación: Bogotá
Mensajes: 199
Antigüedad: 21 años, 1 mes
Puntos: 0
Pasar Variables Java a PHP

Bueno, intentare esa solución a ver, otra pregunta

puedo yo cuando doy click sobre el botón "Inscribir", no irme a una SubRutina de Javascript si no a una función de PHP???
por ejemplo:

<input type="submit" name="Submit" value="Inscribir" onClick="return getResponse(this.form)">

<? PHP
getResponse(form) {

validar radiobutton

}

?>

y poder desde esta rutina validar cual de los 10 o 20 radiobutton seleccione?, aunque yo se que puedo colocar dentro de PHP la rutina de JavaScript, pero hay como haria para pasar la variable de Java a PHP ????

La idea es quitar el form anterior tambien, porque no deseo enviar esto a ninguna página, si no ejecutar todo desde esta misma páagina. Gracias
  #4 (permalink)  
Antiguo 15/05/2003, 14:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Creo q no entendistes la explicación que te dí ...

Todo lo que valides EN EL CLINTE via Javascript Es cosa de javascript ...

No puedes ejecutar un evento javascirpt OnClick() o lo que sea de javascript para llamar a una función PHP. Pues ese "evento" llamará a código JAVASCRIPT que está en el "CLIENTE" .. Para cuando valides esos datos .. via javascript todavía estaras en el "CLIENTE" .. para eso, tus rutinas javascript si la validación ha sido correcta .. tu "onClick" dejará enviar el formulario con los datos que tenga (que han sido validados) ..

Si quieres validar tus datos via PHP .. NOOO uses esa función Javascript .. simplemente ENVIALO al servidor .. a tu script php que pongas en tu action= de tu formulario (que puede ser la misma página por supuesto). Ahí lo validas con PHP y si la validación no es correcta, deberas redireccionar al formulario .. (que puede estar en la misma página (script mejor dicho) ) Eso si .. como te daras cuenta ya .. si vas a ejecutar varias acciones en un mismo script .. tendras que tener una variable de control que determine en que estado o sección de tu código habrá de ejecutar .. sea el formulario .. o el código que valide los datos .. o el código que procese esos datos validados .. Sería lo mismo que ir "saltando" de script (por separado) en script .. pero en este caso como tu lo quieres .. esos scripts los tienes en un mismo archivo .. por eso necesitas una variable de control y "condicionales" (IF .. swicht o lo que quieras ..) para que tu "código" sepa en que fase está del proceso.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 15/05/2003, 16:47
 
Fecha de Ingreso: marzo-2003
Ubicación: Bogotá
Mensajes: 199
Antigüedad: 21 años, 1 mes
Puntos: 0
pasar variables de radio botton

gracias por responder, mas menos entendi
lo anterior del array no me funciono sale este error Warning: Variable passed to each() is not an array or object in C:\sitios web\PRUEBAS\insertar.php on line 2

aca va una explicación mejor:

A ver, explico mejor el anterior código, hay unas materias de martes, otras de miercoles y otras de jueves, ahora
el Script genera esto ESTO :

CONTEXTO DIA PROFESOR CUPO MARCAR
Lógica Matemática y Habilidad de Pensamiento Miercoles Jaqueline Valenzuela 40 aca va el radio button
Pequeñas Científicas Miercoles María Nancy Quevedo 40 aca va el radio button
Sueños Literarios I Martes Ingrid Sofía Rodríguez Robles 40 aca va el radio button
Sueños Literarios II Martes Ingrid Sofía Rodríguez Robles 40 aca va el radio button
Sueños Literarios III Jueves Ingrid Sofía Rodríguez Robles 40 aca va el radio button

Inscribirse (boton)

ya lo esta generado, las materias cambian dependiendo de un login y un pass, ya lo esta haciendo tambien.

echo("<td> <div align='center'> <input type='radio' name='fecha[" . $row["dia"] . "]' value='" . $row["cod_contexto"] . "'></div> </td> </tr>");

entonces cuando es miercoles el name de radiobutton queda Miercoles, cuando es Martes el name de radiobutton queda Martes e igual con jueves
entonces yo puedo seleccionar de la opcion marcar una materia de miercoles, una de martes y una de jueves, pero no dos de jueves,
ni de miercoles ni de martes, a veces salen muchas de martes por ejemplo, pero solo puedo marcar una, eso ya lo hace
el valor de value tambien es diferente para cada materia, que es el código de cada materia por ejemplo sueños literarios I tiene el código 3434
entonces cada materia tiene su codigo diferente

ahora no se es como puedo validar o saber cual de los tres escojieron (sin utilizar javaScript) y cuando se escoja la idea es insertarlo en una tabla
pero no quiero enviarlo a otra página, voy a quitar el form, quiero que al dar click me mande a una función que tenga el
código de insertar, además necesito saber como desde PHP puedo validar que se escogio del radio button. gracias
  #6 (permalink)  
Antiguo 15/05/2003, 20:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. probemos otra cosa .. creo que lo q te puse no funcionaría como se espera ..

Usa un campo hidden para tu pasar a tu script tu $row['dia']:
Código PHP:
echo "<input type=\"hidden\" name=\"fecha[$contador]\" value=\"$row['dia']>\n"
Y el boton rádio, dejalo así:
Código PHP:
echo("<td> <div align='center'> <input type='radio' name=\"codigo[$contador]\" value='" $row["cod_contexto"] . "'></div> </td> </tr>\n\n"); 
Y en tu bucle (dentro) mete:
Código PHP:
$contador++; // para usarlo como contador .. 
Y fuera .. inicia el contador via:
Código PHP:
$contador=0
Esto creará dos arrays asociadas por el mismo indice que genera el $contador ...

Si editas el código HTML que vas a generar con esa rutína PHP .. deberías ver bloques típo:

Código:
<input type="hidden" name="fecha[0]" value="martes">
<td> <div align='center'> <input type='radio' name="codigo[0]" value='3422'></div> </td> </tr>

<input type="hidden" name="fecha[1]" value="lunes">
<td> <div align='center'> <input type='radio' name="codigo[1]" value='24343'></div> </td> </tr>

<input type="hidden" name="fecha[2]" value="miercoles">
<td> <div align='center'> <input type='radio' name="codigo[2]" value='5643'></div> </td> </tr>
y en tu script .. para leerlo:

Código PHP:
for ($contador=0$contador <=count($_POST['codigo'], $contador++){
  echo 
"Fecha: ".$_POST['fecha'][$contador]." --> Código: ".$_POST['codigo'][$contador];

leemos los array's generados que tienen el mismo indice y el mismo número de elementos. ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 15/05/2003 a las 20:22
  #7 (permalink)  
Antiguo 15/05/2003, 21:14
 
Fecha de Ingreso: marzo-2003
Ubicación: Bogotá
Mensajes: 199
Antigüedad: 21 años, 1 mes
Puntos: 0
como validar Radio Button desde PHP

Muchas gracias por la respuesta, funciona, pero no es lo que necesito, a ver olvidemonos de lo anterior, tengo 1 pregunta concreta :
1) Como valido cual radio Button he seleccionado desde PHP, solo que me diga usted selecciono la opción tal y ya, se puede???; desde Java Script lo hago, pero no me sirve, solo desde PHP

Gracias

Programador desesperado
  #8 (permalink)  
Antiguo 15/05/2003, 21:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Hombre .. pues si valida esas variables .. para eso, el bucle for que te puse te debe mostrar el par "fecha[]" y "codigo[]" que has seleccionado ..

O que obtienes al ejecutar el bucle for? ...

Validar un boton radio es sólo definirco con valor
Opcion 1<input type="radio" name="nombre" value="opcion1">
Opcion 2<input type="radio" name="nombre" value="opcion2">
Opcion 3<input type="radio" name="nombre" value="opcion3">

El que marques irá bajo ese "nombre" pues sólo se envia UNA opción que selecciones ..

Así que si haces un simple IF:

Código PHP:
if (isset($_POST['nombre'])){
echo 
"Ud. seleccionó la opcion: ".$_POST['nombre'];
} else {
echo 
"no ha seleccionado nada ..";

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 15/05/2003 a las 21:34
  #9 (permalink)  
Antiguo 15/05/2003, 22:32
 
Fecha de Ingreso: marzo-2003
Ubicación: Bogotá
Mensajes: 199
Antigüedad: 21 años, 1 mes
Puntos: 0
validar radio button

Nop, a ver ya hice bien el ejercicio paso a paso, pasa lo siguiente

Notice: Undefined offset: 0 in E:\sitios web\pruebas\ver.php on line 8
Fecha: Martes --> Código: Fecha: Martes --> Código: 6Fecha: Martes --> Código: 8Fecha: Martes --> Código: 11Fecha: Martes --> Código: 12Fecha: Martes --> Código: 15Fecha: Martes --> Código: 16Fecha: Martes --> Código: 17
Notice: Undefined offset: 8 in E:\sitios web\pruebas\ver.php on line 8
Fecha: Jueves --> Código:
Notice: Undefined offset: 9 in E:\sitios web\pruebas\ver.php on line 8
Fecha: Jueves --> Código:
Notice: Undefined offset: 10 in E:\sitios web\pruebas\ver.php on line 8
Fecha: Jueves --> Código: Fecha: Jueves --> Código: 22Fecha: Jueves --> Código: 23
Notice: Undefined offset: 13 in E:\sitios web\pruebas\ver.php on line 8
Fecha: Jueves --> Código:
Notice: Undefined offset: 14 in E:\sitios web\pruebas\ver.php on line 8
Fecha: Jueves --> Código:
Notice: Undefined offset: 15 in E:\sitios web\pruebas\ver.php on line 8
Fecha: Jueves --> Código:
Notice: Undefined offset: 16 in E:\sitios web\pruebas\ver.php on line 8

Notice: Undefined offset: 16 in E:\sitios web\pruebas\ver.php on line 8
Fecha: --> Código:

Fuera del error se ve que salen todas los valores del radio bottion, tanto seleccionados, como no, así seleccione solo uno sale todo eso, vuelvo a mandar el código a ver que paso

*-------***************************************

function conectar($curso) {

$sql = "SELECT cod_contexto,nombre,dia,profesor,cupo FROM contexto WHERE $curso='SI' ";

$IdConexion = mysql_connect("localhost","","") or die ('I cannot connect to the database.');

mysql_select_db("colegio",$IdConexion);
$IdConsulta = mysql_query($sql, $IdConexion);
?>

<body>

<form name="form1" method="post" action="ver.php">
<table width="100%" border="3" cellspacing="0" cellpadding="0">
<tr>
<td height="30" width="50%"><div align="center"><strong>CONTEXTO</strong></div></td>
<td width="9%"><div align="center"><strong>DIA</strong></div></td>
<td width="26%"><div align="center"><strong>PROFESOR</strong></div></td>
<td width="6%"><div align="center"><strong>CUPO</strong></div></td>
<td width="9%"><div align="center"><strong>MARCAR</strong></div></td>
</tr>
<?PHP
$total_filas = (mysql_num_rows($IdConsulta));
$contador=0;
for($i=0;$i < $total_filas;$i++)
{
$row = mysql_fetch_array($IdConsulta);
echo("<tr> <td>".$row["nombre"]."</td>");
echo("<td> <div align='center'>" . $row["dia"] . "</div></td>");
echo("<td>" .$row["profesor"] . "</td>");
echo("<td> <div align='center'>" . $row["cupo"] . "</div></td>");
echo("<td> <div align='center'> <input type='radio' name=\"codigo[$contador]\" value='" . $row["cod_contexto"] . "'></div> </td> </tr>\n\n");
echo("<input type = 'hidden' name = 'fecha[$contador]' value = '" . $row["dia"] . "'>");

$contador ++;
}
?>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="50"><div align="center">
<input type="submit" name="Submit" value="Inscribir" onClick="">
</div></td>
</tr>
</table>

</form>

<?PHP
} //Cierra la función conectar()
?>

******************************************

el código de ver.php

<?php

for ($contador=0; $contador <= count($_POST['fecha']); $contador++) {
echo "Fecha: ".$_POST['fecha'][$contador]." --> Código: ".$_POST['codigo'][$contador];
}


?>

Y ahora si ni idea, no tengo ni idea que hacer??????????, además puedo seleccionar todos los radio botton y no es la idea, se debe solo poder seleccionar uno de cada dia, por ejemplo si hay 5 de martes y 5 de jueves, solo podre seleccionar uno de martes y uno de jueves, con lo anterior podia seleccionar todos y no es la idea, ayuda por favorrrrrrrrrrrrrrrrrrrrr ????????
  #10 (permalink)  
Antiguo 15/05/2003, 23:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ok .. ok ..

El "efecto" de que te puedes seleccionar varios "radio" es por el nombre del radio button ..

Código PHP:
echo("<td> <div align='center'> <input type='radio' name=\"codigo\" value='" $row["cod_contexto"] . "'></div> </td> </tr>\n\n"); 
dejalo con nombre fijo ...

ahí en tu script en:

Código PHP:
echo $_POST['codigo']; 
tendras tu código del radio seleccionado ..

Ahora faltaría el otro dato asociado al radio .. Podría ser:

Código PHP:
$codigo=$row["cod_contexto"];
echo(
"<input type = 'hidden' name = 'fecha[$codigo]' value = '" $row["dia"] . "'>"); 
generando el array fecha .. con el indice del cogido de tu radio .. (debería funcionar) ..

En tu script lo obtienes via:

Código PHP:
$codigo=$_POST['codigo']; 
echo 
"Fecha: ".$_POST['fecha'][$codigo]; 
Como veras ... esto de "programar" en un foro .. sin probar nada .. sin (en un principio) no tener claro como ha de funcionar tu aplicación .. es Bastante dificil darte alguna orientación ..


Un saludo,

pd: .. ya prodrías quitar las referencias a $contador ... no se usa.

Otra cosa para que pruebes ...

Con tu código original (el priméro que pusistes) ...

Recorrer el array POST para leer todos los datos que envies ..

Código PHP:
foreach ($_POST as $dia => $codigo){
   echo 
$dia." -> ".$codigo."<br>";

Ahí veras hasta el "sumbit" como variable .. filtra lo que necesites .. y si ves Notice: variabel undefined o algo así usa isset() para ver si antes está o nó definida ..

Por mi parte no sé que mas decirte sin probar el código con datos .. osese, como se debe hacer .. Con esto yá casí que te he planteado la mayoría de casos para trabajar con con "radios" y demas opciones seleccionables .. Estudia los problemas que tiene cada método y saca conclusiones tu que puedes y tienes el código y datos en la mano para probar.

Un saludo, suerte!
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 23:28.