Foros del Web » Programando para Internet » PHP »

AYUDA: Maximum execution time of 30 seconds exceeded

Estas en el tema de AYUDA: Maximum execution time of 30 seconds exceeded en el foro de PHP en Foros del Web. bueno tengo un problema tengo q hacer un buscador y como no tengo ni la mas minima idea de como hacerlo he hecho una forma ...
  #1 (permalink)  
Antiguo 18/05/2005, 22:08
Avatar de alucard3003  
Fecha de Ingreso: abril-2004
Mensajes: 148
Antigüedad: 20 años
Puntos: 0
AYUDA: Maximum execution time of 30 seconds exceeded

bueno tengo un problema tengo q hacer un buscador y como no tengo ni la mas minima idea de como hacerlo he hecho una forma muy rustica pero como solo eran 6 criterios pense q seria facil, pero me da un error en el arreglo del sgt codigo:


Código PHP:
#creamos 2 arreglos, 1 con las variables a buscar y otro indice para saber a q campo pertenecen
                  
$array_a=array($apepat,$apemat,$codmod,$ce,$uge,$dre);
                  
$array_b=array("apepat","apemat","codmod","ce","uge","dre");
                  
$j=0;
                  
#buscamos si hay mas 1 campo no nulo para empezar a usar los ANDs en el query
                  
for ($i 0$i 5$i++) {if ($array_a[$i]!=null){$j=$j+1;}}
                  
$busqueda="SELECT apepat,apemat,codmod,especialidad,ce,codmodce,uge,dre,nota1,nota2,nota3,nota4 FROM $tabla WHERE (";
                  if (
$j<=1){$busqueda=$busqueda."apepat='$apepat' OR apemat='$apemat' OR codmod='$codmod' OR ce='$ce' OR uge='$uge' OR dre='$dre') ORDER BY codigo ASC LIMIT $liminf,$limsup";
                  }else{if (
$j>AND $j<6){for ($i 0$i 5$i++) {if ($array_a[$i]!=null){$busqueda=$busqueda.$array_b[$i]."='$array_a[$i]' AND ";}}
                                 
$busqueda=substr($busqueda,0,strlen($busqueda)-4);
                                 
$busqueda=$busqueda.") OR ";
                                 for (
$i 0$i 5$i++) {if ($array_a[$i]==null){$busqueda=$busqueda.$array_b[$i]."='$array_a[$i]' OR ";}}
                                 
$busqueda=substr($busqueda,0,strlen($busqueda)-4);
                                 }else{if (
$j==6){$busqueda=$busqueda."apepat='$apepat' AND apemat='$apemat' AND codmod='$codmod' AND ce='$ce' AND uge='$uge' AND dre='$dre')";}}
                        }
                  if (
$orden==null){$busqueda=$busqueda." ORDER BY codigo ASC LIMIT $liminf,$limsup";
                                    
$quer mysql_query ("$busqueda"$conexion);}
                                    else{
$busqueda=$busqueda."ORDER BY ".$orden." ASC LIMIT $liminf,$limsup";
                                         
$quer mysql_query ("$busqueda"$conexion);} 
Como veran mi problema es como poner un AND y como poner un OR por eso pense en esta forma rustica pero al correr el script me da este feo error:

Fatal error: Maximum execution time of 30 seconds exceeded en este primer for:
Código PHP:
                  for ($i 0$i 5$i++) {if ($array_a[$i]!=null){$j=$j+1;}} 
Ayudenme porfas
__________________
X
  #2 (permalink)  
Antiguo 19/05/2005, 01:23
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
no he visto lo que quieres hacer con tu buscador... pero respondo a el por qué de ese error.

Ese error te está diciendo que tu aplicación/script ha estado ejecutandose por un tiempo mayor a 30 segundos. Así pués, al configurar PHP se establece un tiempo máximo para que un script sea ejecutado... 30 segundos es suficiente tiempo para una aplicación normal, así que si tarda más de dichos 30 segundos es probable (no seguro) que haya un error de programación... así pués, tu tienes un error de programación.

El error que tienes es que estás haciendo un CICLO INFINITO. Checa tu código:
Código PHP:
for ($i 0$i 5$i++) {if ($array_a[$i]!=null){$j=$j+1;}} 
Un for tiene tres parámetros for(variable_inicial; CONDICION; aumento_de_variable), así pués, el ciclo se estará repitiendo mientras la condición sea verdadera. Tu error está ahí: en la parte que corresponde a la condicón tienes una simple asignación $i = 5... no hay nada que te afecte dicha asignación.... siempre se hará, siempre será verdadera, siempre entrarás a tu ciclo... tienes como resultado un bucle infinito.

Como dije, no he visto lo que quieras hacer (no te quito el placer de hacerlo ) pero espero esto te ayude a aclarar las cosas... tienes que pensar bien en qué condiciones será ejecutado tu ciclo...

También te hago saber que un for no es la única manera de hacer bucles, también tienes el while(), el do...while() y el foreach(), aunque el uso de este último es para recorres matricez.

Puedes consultar la documentación oficial para ver su uso, requerimentos, condiciones y ejemplos:
www.php.net/for
www.php.net/while
www.php.net/do...while
www.php.net/foreach

Saludos y la mejor de las suertes!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 16:28.