Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Bucle con for en php

Estas en el tema de Bucle con for en php en el foro de PHP en Foros del Web. hola amigos necesito su ayuda para ver que estoy haciendo mal porq le meti un for a mi codigo y funciona bien con los calculos ...
  #1 (permalink)  
Antiguo 07/08/2014, 13:08
Avatar de rachpts  
Fecha de Ingreso: febrero-2012
Mensajes: 117
Antigüedad: 12 años, 2 meses
Puntos: 0
Bucle con for en php

hola amigos necesito su ayuda para ver que estoy haciendo mal porq le meti un for a mi codigo y funciona bien con los calculos que estoy haciendo pero nunca se detiene

cualquier ayuda se las voy agradecer les dejo mi codigo


Código:
<?php 
include('conexion.php');
	$mu = mysql_real_escape_string($_POST['mu']);
	$zo = mysql_real_escape_string($_POST['zo']);
	$ma = mysql_real_escape_string($_POST['ma']);
	$lo = mysql_real_escape_string($_POST['lo']);
	$ed = mysql_real_escape_string($_POST['ed']);
	$de = mysql_real_escape_string($_POST['de']);
        //Consula para comparar los campos con la clave catastral  
		$sql = "SELECT Municipio, Zona, Manzana, Lote, Edificio, Depto, AnioVal, vCatastralc FROM te_ca_valuaciones WHERE Municipio='".$mu."' and Zona='".$zo."' and Manzana='".$ma."' and Lote='".$lo."' and Edificio='".$ed."' and Depto='".$de."' and AnioVal>='2009'"; 
		$result = mysql_query($sql) or die("Imposible verificar clave catastral: " . mysql_error());
		
		mysql_query("SET NAMES 'utf8'");
		//Primera condición.. se tiene que encontrar por lo menos un registro
		if(mysql_num_rows($result)>0){
		echo 'registro encontrado ' . mysql_error();
		
		


	
		//Mostramos los datos qu corresponden a la clave catastral ingresada
		
		
		$fila=mysql_fetch_array($result);	//lo guardamos en variable $fila		
			$vCatastralc = $fila['vCatastralc']; //Equivale al valor Catastral
			$AnioVal = $fila['AnioVal'];     //Año para comparar con limite inferior segun la tabla te_pd_ejecucionfiscal` 
              

	
			

	for ($AnioVal; $AnioVal <= $fila; $AnioVal++) {
	
	
			  //segunda consulta para sacar el valor del limite inferior
			 
			  $LimiteInferior = mysql_query("SELECT * FROM te_pd_ejecucionfiscal WHERE Anio='$AnioVal' and `Lim_Inferior`<='$vCatastralc' AND  `Lim_Superior` >='$vCatastralc'");
				mysql_query("SET NAMES 'utf8'");
					
					while($sql1=mysql_fetch_array($LimiteInferior)) {$valor3 = $sql1['Lim_Inferior']; $factor = $sql1['Factor']; $cuotafija = $sql1['Cuota'];
					//echo "$valor3";  //variable1 es igual al limite inferior que vamos a usar
					
					}
					//hasta aqui todo bien, sale el calculo del limite inferior   
					//hacemos la resta del valor catastral - limite inferior
					
					$res1 = $vCatastralc - $valor3;
					//echo "$res1"; //este es el primer resultado del proceso
					
					$res2 = $res1 * $factor;
					//echo "$res2"; // este es el segundo resultado del proceso que resulta del primer resultado x el factor
					
					$res3 = $res2 + $cuotafija;
				echo "$AnioVal <br>";
					echo "$res3 <br>"; //Resultado final del modulo de PredCor
			 }

		}else { 
		//si no existe le mando otra vez a la portada 
		echo "No se encontraron resultados";
		}
?>
  #2 (permalink)  
Antiguo 07/08/2014, 13:13
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Bucle con for en php

Es un poco malo de leer porfavor utiliza las etiquetas highlight.

Sobre el for creo que te funcionaría de este modo:

Código PHP:
Ver original
  1. for ($AnioVal = $fila['AnioVal']; $AnioVal <= $fila; $AnioVal++) {}

Saludos.
  #3 (permalink)  
Antiguo 07/08/2014, 13:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Bucle con for en php

Resulta que las condiciones de tu for() están mal.

Código PHP:
Ver original
  1. for ($AnioVal; $AnioVal <= $fila; $AnioVal++) {

Observa bien que haces $AnioVal <= $fila ¿son del mismo tipo?

No creo, ya que $fila es resultado de mysql_fetch_array() y por lo tanto es un array y no un número.

Reflexiona bien lo que estás haciendo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 07/08/2014, 13:17
Avatar de rachpts  
Fecha de Ingreso: febrero-2012
Mensajes: 117
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Bucle con for en php

hola justo lo acabo de hacer como me sugieres y me sigue haciendo lo mismo :( muchas gracias por la ayuda seguiré intentando
  #5 (permalink)  
Antiguo 07/08/2014, 13:39
Avatar de rachpts  
Fecha de Ingreso: febrero-2012
Mensajes: 117
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Bucle con for en php

Cita:
Iniciado por pateketrueke Ver Mensaje
Resulta que las condiciones de tu for() están mal.

Código PHP:
Ver original
  1. for ($AnioVal; $AnioVal <= $fila; $AnioVal++) {

Observa bien que haces $AnioVal <= $fila ¿son del mismo tipo?

No creo, ya que $fila es resultado de mysql_fetch_array() y por lo tanto es un array y no un número.

Reflexiona bien lo que estás haciendo.
ok entiendo tu punto y no lo habia notado gracias! solo que mi duda ahora seria si esa consulta me arroja 6 registros, como le digo que necesito que se repita 6 veces tomando los valores de cada registro, no se si me di a entender.. Gracias por contestar
  #6 (permalink)  
Antiguo 07/08/2014, 14:02
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Bucle con for en php

La cantidad de registros la obtienes con la función mysql_num_rows.

Código PHP:
Ver original
  1. for ($AnioVal, $total = mysql_num_rows($result); $AnioVal <= $total; $AnioVal++) {
  2.     //...
  3. }

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 07/08/2014, 14:09
Avatar de rachpts  
Fecha de Ingreso: febrero-2012
Mensajes: 117
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Bucle con for en php

les comparto ya pude resolver mi problema, en este caso use un while para que hiciera el calculo dependiendo de los registros que arrojara la consulta, no de cuantos eran asi que ya pude lograr lo que necesitaba


me quedo asi

Código PHP:
Ver original
  1. <?php
  2. include('conexion.php');
  3.     $mu = mysql_real_escape_string($_POST['mu']);
  4.     $zo = mysql_real_escape_string($_POST['zo']);
  5.     $ma = mysql_real_escape_string($_POST['ma']);
  6.     $lo = mysql_real_escape_string($_POST['lo']);
  7.     $ed = mysql_real_escape_string($_POST['ed']);
  8.     $de = mysql_real_escape_string($_POST['de']);
  9.         //Consula para comparar los campos con la clave catastral  
  10.         $sql = "SELECT Municipio, Zona, Manzana, Lote, Edificio, Depto, AnioVal, vCatastralc FROM te_ca_valuaciones WHERE Municipio='".$mu."' and Zona='".$zo."' and Manzana='".$ma."' and Lote='".$lo."' and Edificio='".$ed."' and Depto='".$de."' and AnioVal>='2009'";
  11.         $result = mysql_query($sql) or die("Imposible verificar clave catastral: " . mysql_error());
  12.  
  13.         mysql_query("SET NAMES 'utf8'");
  14.         //Primera condición.. se tiene que encontrar por lo menos un registro
  15.         if(mysql_num_rows($result)>0){
  16.         echo 'registro encontrado ' . mysql_error();
  17.        
  18.        
  19.  
  20.    
  21.         //Mostramos los datos qu corresponden a la clave catastral ingresada
  22.        
  23.        
  24.        
  25.     //lo guardamos en variable $fila       
  26.     while($fila=mysql_fetch_array($result)) {
  27.    
  28.    
  29.    
  30.    
  31.    
  32.             $vCatastralc = $fila['vCatastralc']; //Equivale al valor Catastral
  33.             $AnioVal = $fila['AnioVal'];     //Año para comparar con limite inferior segun la tabla te_pd_ejecucionfiscal`
  34.              
  35.  
  36.    
  37.    
  38.    
  39.               //segunda consulta para sacar el valor del limite inferior
  40.              
  41.               $LimiteInferior = mysql_query("SELECT * FROM te_pd_ejecucionfiscal WHERE Anio='$AnioVal' and `Lim_Inferior`<='$vCatastralc' AND  `Lim_Superior` >='$vCatastralc'");
  42.                 mysql_query("SET NAMES 'utf8'");
  43.                    
  44.                     while($sql1=mysql_fetch_array($LimiteInferior)) {$valor3 = $sql1['Lim_Inferior']; $factor = $sql1['Factor']; $cuotafija = $sql1['Cuota'];
  45.                     //echo "$valor3";  //variable1 es igual al limite inferior que vamos a usar
  46.                    
  47.                     }
  48.                     //hasta aqui todo bien, sale el calculo del limite inferior  
  49.                     //hacemos la resta del valor catastral - limite inferior
  50.                    
  51.                     $res1 = $vCatastralc - $valor3;
  52.                     //echo "$res1"; //este es el primer resultado del proceso
  53.                    
  54.                     $res2 = $res1 * $factor;
  55.                     //echo "$res2"; // este es el segundo resultado del proceso que resulta del primer resultado x el factor
  56.                    
  57.                     $res3 = $res2 + $cuotafija;
  58.                 echo "$AnioVal <br>";
  59.                     echo "$res3 <br>"; //Resultado final del modulo de PredCor
  60.              }
  61.  
  62.         }else {
  63.         //si no existe le mando otra vez a la portada
  64.         echo "No se encontraron resultados";
  65.         }
  66. ?>

Etiquetas: bucle, mysql, registro, select, sql, tabla, variable
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 17:11.