Foros del Web » Programando para Internet » PHP »

Formulario

Estas en el tema de Formulario en el foro de PHP en Foros del Web. Hola, recurro a ustedes por el siguiente problema, tengo un formulario con más de 200 campos, el problema es que el script PHP solo me ...
  #1 (permalink)  
Antiguo 09/07/2009, 09:09
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
Formulario

Hola, recurro a ustedes por el siguiente problema, tengo un formulario con más de 200 campos, el problema es que el script PHP solo me recibe 200.

agradecería toda ayuda, pues amigos sercanos me han dicho que el problema puede estar en el Mod Security ya que hay que desactivarlo para que funcione y cambiar algunos override.

espero sugerencias.

Saludos
  #2 (permalink)  
Antiguo 09/07/2009, 09:21
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Formulario

Cita:
tengo un formulario con más de 200 campos, el problema es que el script PHP solo me recibe 200.
:P Entonces esta funcionando bien xD
  #3 (permalink)  
Antiguo 09/07/2009, 09:24
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Formulario

Jajaja, lo que pasa es que Ronruby el dice que el tiene un formulario con más de 200 casos y php solo le publica 200 casos
  #4 (permalink)  
Antiguo 09/07/2009, 09:26
Avatar de oktubre  
Fecha de Ingreso: agosto-2003
Ubicación: en mi casa
Mensajes: 371
Antigüedad: 20 años, 8 meses
Puntos: 4
Respuesta: Formulario

1º un formulario para llenar con mas de 200 campos?
que interesante debe estar la consulta...
lo que puede estar sucediendo es que el tiempo de ejecución del script esta superando lo que espera el servidor y te manda a cagar.
alguna vez me paso eso con un script que debía mandar mas de 4500 correos, y bueno lo que paso es que hice una cadena de tres scripts que se pasaban de uno a otro. el primero ejecutaba una consulta, mandando los correos (1400 aprox) y al finalizar pasaba las variables al siguiente script para que éste se encargue de seguir con el trabajo.
lo otro es probar con set_time_limit(), pero también es muy posible que el administrador del server te halla bloqueado esto.
probaste la consulta con otro script que te lo guarde? es prefabricado el script o lo escribiste vos?
esos datos pueden ayudar...
saludos,
__________________
w32.oktubre@mm <----------------<<<<
prefiero cerrar la boca y parecer un tonto que abrirla y confirmarlo.
  #5 (permalink)  
Antiguo 09/07/2009, 09:28
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Formulario

Trata de escribir el codigo para ver como te podemos ayudar
  #6 (permalink)  
Antiguo 09/07/2009, 12:57
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
Respuesta: Formulario

Este es el código.

<html>
<body style="margin:0px">
<?php
if (isset($_POST['n1'])){
echo "<pre>";
print_r($_POST);
echo "</pre>";
}else{
?><center>
<form method=post enctype="multipart/form-data">
<?php
for ($f=1;$f<=210;$f++){
echo "<input type=text name=n$f size=5 value=".($f*10).">";
echo "\n";
}
?>
<br><br><input type="submit" value=enviar>
</form></center>
<?php }?>
</body>
</html>
  #7 (permalink)  
Antiguo 09/07/2009, 13:35
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Formulario

¿Se supone que ese codigo te permita llegar hasta 210 casos y tu dices que sigue llegando hasta 200? Puede ser lo que te mencionó oktubre. Que se corta antes de tiempo. Pero se supone que te salga un error de que no termino el codigo. ¿Te sale ese error de tiempo?
  #8 (permalink)  
Antiguo 09/07/2009, 14:46
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
Respuesta: Formulario

exactamente, el fomulario son más de 200 campos, pero el script de PHP solo me esta recibiendo 200 campos.

respecto a que si me arroja algún mensaje de error por timeout, la respuesta en NO el resultado es el que les menciono, se genera la respuesta pero con solo 200 campos. en vez de 210.

además en el caso que fuese un error por que la consulta tarda más de lo que el servidor tiene configurado o definido, tendría que mostrar un error de timeout del tipo CGI por parte de PHP.

Saludos Cordiales.
  #9 (permalink)  
Antiguo 09/07/2009, 14:57
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Formulario

Yo copie exactamente como tu lo tienes colocado y lo corri en mi computadora y me llega hasta 2100 quiere decir que corrio hasta 210. Luego le di enviar y me salio en un array hasta el 2100 o sea los 210 campos. No tienes error en el codigo. En todo caso debes verificar el php.ini.
  #10 (permalink)  
Antiguo 09/07/2009, 15:20
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Formulario

Cita:
Iniciado por CRowen
además en el caso que fuese un error por que la consulta tarda más de lo que el servidor tiene configurado o definido, tendría que mostrar un error de timeout del tipo CGI por parte de PHP.
Si los errores estan habilitados en tu servidor, de lo contrario no mostrara errores.
  #11 (permalink)  
Antiguo 14/07/2009, 16:30
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
Respuesta: Formulario

Cita:
Iniciado por Ronruby Ver Mensaje
Si los errores estan habilitados en tu servidor, de lo contrario no mostrara errores.
Pero quedarian registrados en el LOG y no están.

Saludos
  #12 (permalink)  
Antiguo 15/07/2009, 08:19
Avatar de oktubre  
Fecha de Ingreso: agosto-2003
Ubicación: en mi casa
Mensajes: 371
Antigüedad: 20 años, 8 meses
Puntos: 4
Respuesta: Formulario

nahh, que queden registrados o no en el log es cuestion de suerte...
yo me inclino mas por el tiempo de la ejecu´ción que por otra cosa.
que servidor estas usando? servicio me refiero, un servidor propio o estan corriendo esto en algún hosting pedorro?
hay servicios de hosting tan malos dando vueltas que por ahí lo que estas haciendo es ejecutar tu código en un servidor que tiene php como cgi y ésto complica las ejecuciones.
lo otro, no te conviene dividir de una vez la consulta final, tirar tres vistas de la tabla, darles prioridades y tratar que las llene por separado y que se rompa los cuernos el motor de mysql pa resolverlo?
en mi porquería corre, en tu localhost también te da error?
__________________
w32.oktubre@mm <----------------<<<<
prefiero cerrar la boca y parecer un tonto que abrirla y confirmarlo.
  #13 (permalink)  
Antiguo 17/07/2009, 09:26
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
Respuesta: Formulario

Como primero, decir que la idea de esto es probar, lo que estoy haciendo es que este formulario permitira a un profesor ingresar las notas de varios alumnos de una vez. por eso la cantidad de campos.

el tema es que solo el SCRIPT PHP recibe los primeros 200 campos y el resto no los recibe y no creo que sea por un time out (tiempo de espera). por que la consulta tarda menos de 2 segundos.

Respecto al hosting, claro ellos deben tener una caga de configuración, es un hosting y si pruebo el SP en otro si funciona. en el que tengo problemas me dicen que es problema de Mod_security del apache, debe ser alguna regla o un override.

Saludos
  #14 (permalink)  
Antiguo 25/07/2009, 21:00
 
Fecha de Ingreso: julio-2009
Mensajes: 1
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Formulario

Como solución se puede crear un input hidden y antes de enviar desactivar todos los input y asignar esos valores al input hidden creado separados por algun caracter, así con esto no se enviaran en el formulario los input desactivados, en el script se recibe ese campo y se puede separar en variables, pongo el codigo que enviaste modificado con la solucion propuesta para que la pruebes en tu hosting, con esto no deberían hacer cambios al mod security, espero te sirva, saludos.

Código PHP:
<html>
    <body style="margin:0px">
        <?php
            
if (isset($_POST['datosfrm'])){
                
$datosfrm=explode('-'$_POST['datosfrm'],-1);
                echo 
"<pre>";
                
print_r($datosfrm);
                echo 
"</pre>";
            }else{
        
?>
        <center>
            <form method=post name=frm>
            <input type=hidden name=datosfrm>
            <?php
                
for ($f=1;$f<=210;$f++){
                    echo 
"<input type=text name=n$f size=5 value=".($f*10).">";
                    echo 
"\n";
                }
            
?>
            <br><br><input type="button" value=enviar onclick="enviar()">
            </form>
        </center>
        <?php }?>
    </body>
    <script>
        function enviar(){
            for (f=1;f<=210;f++){
                document.frm["datosfrm"].value+=document.frm["n"+f].value+"-";
                document.frm["n"+f].disabled=true;
            }
            document.frm.submit();
        }
    </script>    
</html>
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 22:41.