Foros del Web » Programando para Internet » Javascript »

Problema con Arreglo

Estas en el tema de Problema con Arreglo en el foro de Javascript en Foros del Web. Hola buen día a todos. Tengo complicación que he buscado la solución por todos los medios y no la he encontrado, espero que me puedan ...
  #1 (permalink)  
Antiguo 12/01/2008, 14:59
 
Fecha de Ingreso: enero-2008
Ubicación: Cuernavaca,Morelos
Mensajes: 31
Antigüedad: 16 años, 4 meses
Puntos: 0
Problema con Arreglo

Hola buen día a todos.

Tengo complicación que he buscado la solución por todos los medios y no la he encontrado, espero que me puedan ayudar con esto.

Estoy mandando un formulario con campos de texto , los cuales son creados de manera dinámica por un for() en mi página requisicion.php como a continuación les muestro:

<?
for($i=1; $i<=$no_pro; $i++){?>

<p align="left">Cantidad
<input type="text" name="cantidad<?echo "$i";?>" size="5">
Descripci&oacute;n
<input type="text" name="descripcion<?echo "$i";?>" size="40">

Unidad:
<select name="unidad<?echo "$i";?>" >
<option>Seleccionar</option>
<option value="pieza">Pieza</option>
<option value="caja">Caja </option>
</select>
</p>
<?}?>

Como se dan cuenta $no_pro me indica la cantidad de campos de texto que tendre.

El problema radica en como obtenerlos en mi segunda página e insertalos, ya que no conosco el número de campos de texto que recibire por el metodo POST; he tratado de varias modos y he agotado las soluciones , les muestro lo que hago en mi segunda página requisicones1.php:


//Se reciben las variables del formulario requisición
$observaciones=$_POST['observaciones'];
$area_afectada=$_POST['area_afectada'];

$numero_tantos=$_SESSION['no_pro'];
for($i=1; $i<=$numero_tantos ; $i++)
{
$descripcion=$_POST['descripcion$i'];
$cantidad=$_POST['cantidad$i'];
$unidad=$_POST['unidad$i'];
$comentario_req="";

//Insertamos los datos correspondientes a la requesición.
$query = "INSERT INTO requisicion(no_usuarioC,id_mod,descripcion,cantida d,unidad,observaciones,comentario_req,area_afectad a,fecha_req,fecha_req_acp,fecha_reqlib)
VALUES('$no_usuarioC','$id_mod','$descripcion','$c antidad','$unidad','$observaciones','$comentario_r eq','$area_afectada','$fecha_req','$fecha_req_acp' ,'$fecha_reqlib')";
mysql_query($query) or die(mysql_error());


}

Bueno el punto al que quiero llegar, es como obtener el valor de $i en la variable $_POST['descripcion$i'] para que pueda obtener el valor del campo de texto; por que estoy utilizando un for para obtener dinámicamnete estas variables e insertarlas en la base de datos, como lo hice en la pagina anterior

De antemano les agradesco su atención.
  #2 (permalink)  
Antiguo 12/01/2008, 15:24
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 9 meses
Puntos: 70
De acuerdo Re: Como arrojar un valor de una varible de php dentro de un POST

Què mas ivanucho...

La soluciòn a tu problema:

Código PHP:
foreach($_POST as $nombre_campo => $valor)
        {
               
$asignacion="\$".$nombre_campo."='".$valor."';";
               eval(
$asignacion);
        } 

Con ese simple código, recibes todo las variables que mandes como POST. Así de sencillo!!

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #3 (permalink)  
Antiguo 12/01/2008, 15:25
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 5 meses
Puntos: 11
De acuerdo Re: Como arrojar un valor de una varible de php dentro de un POST

Si he logrado interpretar bien tu consulta la solución es esta:

En vez de llamar a tus campos de texto de esta manera:


Código PHP:
"descripcion<?echo "$i";?>"
Los debes llamar así (un pequeño cambio):

Código PHP:
"descripcion[<?= $i ?>]"
De esta forma estarías enviando un array a tu servidor y ya es mucho más facil.

Te quedaría así:

Código PHP:
<?
for($i=1$i<=$no_pro$i++){?>

<p align="left">Cantidad
<input type="text" name="cantidad[<?= $i ?>]" size="5"> 
Descripci&oacute;n
<input type="text" name="descripcion[<?= $i ?>]" size="40">

Unidad:
<select name="unidad[<?= $i ?>]" >
<option>Seleccionar</option>
<option value="pieza">Pieza</option>
<option value="caja">Caja </option>
</select>
</p>
<?}?>
Entonces cuando envíes el formulario, tu próxima página recibiría 3 arrays con sus respectivos valores.

El array $_POST['cantidad'], $_POST['descripcion'] y $_POST['unidad'].

Luego, al recibirlos puedes contar algunos de los tres (ya que tienen cantidades de datos equivalentes) y luego recorres con un "for". Algo así:

Código PHP:
$totalcount($_POST['cantidad']); // Aquí te tira la cantidad 
 
//Se reciben las variables del formulario requisición
$observaciones=$_POST['observaciones'];
$area_afectada=$_POST['area_afectada'];
 
 
// Luego... el for
 
for ($i=0$i $total$i++) {
 
 
$descripcion=mysql_real_escape_string($_POST['descripcion'][$i]);
$cantidad= (int) $_POST['cantidad'][$i];
$unidad= (int) $_POST['unidad'][$i]; 
$comentario_req="";
 
 
//Insertamos los datos correspondientes a la requesición.
$query "INSERT INTO requisicion(no_usuarioC,id_mod,descripcion,cantida d,unidad,observaciones,comentario_req,area_afectad a,fecha_req,fecha_req_acp,fecha_reqlib)
VALUES('$no_usuarioC','$id_mod','$descripcion','$c antidad','$unidad','$observaciones','$comentario_r eq','$area_afectada','$fecha_req','$fecha_req_acp' ,'$fecha_reqlib')"
;
mysql_query($query) or die(mysql_error());
 
 


Espero haber entendido la duda y que te sirva mi idea.
Por ultimo... verás que usé la función mysql_real_escape_string y (int) para implementar un poco de seguridad. Nunca viene mal y nunca faltan los hackers jeje.

Quedo a tu disposición.
Saludos
  #4 (permalink)  
Antiguo 14/01/2008, 09:21
 
Fecha de Ingreso: enero-2008
Ubicación: Cuernavaca,Morelos
Mensajes: 31
Antigüedad: 16 años, 4 meses
Puntos: 0
De acuerdo Re: Como arrojar un valor de una varible de php dentro de un POST

Muchas gracias por su apoyo perdon por responder tarde pero el fin de semana me quede sin internet probare sus soluciones y le agradesco mucho su tiempo de atención.

Los veo más tarde.
  #5 (permalink)  
Antiguo 14/01/2008, 10:54
 
Fecha de Ingreso: enero-2008
Ubicación: Cuernavaca,Morelos
Mensajes: 31
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Como arrojar un valor de una varible de php dentro de un POST

Hola, usermax gracias por tu ayuda fue muy buena la solución que me diste.

Solo que tengo un incoveniente y no quiero abusar de la confianza, pero se me presento un pequeño problema, el cual se debe exponer en otra sala de este foro, pero como el problema lo llegaste a conocer puedes si gustas ayudarme.

Esta es la cuestion , a la hora de comprobar los campos con javascript no lo realiza y como se estan manejando arrays cambia la forma de comprobar los campos, mira te muestro el codigo de java script con el cual compruebo los campos de html creados por el for.


<script language="JavaScript" >
function numero(no_pro,requisicion){

for(i=0;i<=no_pro;i++){
if(document.requisicion['cantidad'+i].value == false){
alert("Favor de indicar la cantidad ");
document.requisicion['cantidad'+i].focus();
return false;
}else{
if(document.requisicion['descripcion'+i].value == false){
alert("Favor de especificar la descripción del producto ");
document.requisicion['descripcion'+i].focus();
return false;
}else{
if(document.requisicion['unidad'+i].value == false){
alert("Favor de seleccionar la unidad ");
document.requisicion['unidad'+i].focus();
return false;
}
}
}
}

if(document.requisicion.area_afectada.value == false){
alert("Favor de seleccionar una opción en observación");
document.requisicion.area_afectada.focus();
return false;
}else{
if(document.requisicion.comentario_req.value == false){
alert("Favor de justificar la requisición");
document.requisicion.comentario_req.focus();
return false;
}else{

return true;
}
}



}


</script>

Me imagino que el problema es que son arrays y yo estoy tomando por campo, me seria de gran ayuda tu orientacion de antemano, gracias .
  #6 (permalink)  
Antiguo 14/01/2008, 11:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Como arrojar un valor de una varible de php dentro de un POST

Tema trasladado a Javascript.

Por favor publica en los foros correctos.
  #7 (permalink)  
Antiguo 14/01/2008, 11:58
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 5 meses
Puntos: 11
De acuerdo Re: Problema con Arreglo

Ok.
Si lo que quieres es validar todos los campos generados dinámicamente, lo puedes hacer con esta función:

Código:
 
function Enviar(form) {
for (i = 0; i < form.elements.length; i++) {
if (form.elements[i].type == "text" && form.elements[i].value == "") {  
alert("Por favor complete todos los campos del formulario"); form.elements[i].focus(); 
return false; }
}
form.submit();
}
Luego al botón "enviar" lo haces así:


Código:
 
<input name="button" type="button" onClick="return Enviar(this.form)" value="Enviar">
Te va a validar los campos y si hay alguna EN BLAnco va a posicionar el cursor en el campo que falte.

Espero te sirva, me cuentas.
  #8 (permalink)  
Antiguo 14/01/2008, 13:11
 
Fecha de Ingreso: enero-2008
Ubicación: Cuernavaca,Morelos
Mensajes: 31
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Problema con Arreglo

Muchas gracias funciona perfectamente para los campos de texto pero no valida los menus y el comentario a que se debera.
  #9 (permalink)  
Antiguo 14/01/2008, 14:20
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 5 meses
Puntos: 11
De acuerdo Re: Problema con Arreglo

ok. Prueba así:

Código:
 
function Enviar(form) {
for (i = 0; i < form.elements.length; i++) {
if ((form.elements[i].type == "text" || form.elements[i].type == "select-one") && form.elements[i].value == "") {  
alert("Por favor complete todos los campos del formulario"); form.elements[i].focus(); 
return false; }
}
form.submit();
}
Me cuentas
Saludos
  #10 (permalink)  
Antiguo 14/01/2008, 14:35
 
Fecha de Ingreso: enero-2008
Ubicación: Cuernavaca,Morelos
Mensajes: 31
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Problema con Arreglo

Creo que se ha solucionado por completo mi problema te lo agradesco
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 21:08.