Foros del Web » Programando para Internet » PHP »

Problema con Ciclos PHP

Estas en el tema de Problema con Ciclos PHP en el foro de PHP en Foros del Web. Buenos días, después de buscar e intentar varias opciones sin obtener resultados favorables, realizo la pregunta: Tengo 2 tablas en MySql, que tienen un campo ...
  #1 (permalink)  
Antiguo 08/11/2013, 10:26
Avatar de DaHaSaMo  
Fecha de Ingreso: octubre-2011
Mensajes: 9
Antigüedad: 12 años, 6 meses
Puntos: 0
Problema con Ciclos PHP

Buenos días, después de buscar e intentar varias opciones sin
obtener resultados favorables, realizo la pregunta:

Tengo 2 tablas en MySql, que tienen un campo en común, digamos que es el "Id1" y un "Id2" y "Nombre2" que esta solo en una tabla, cada que se selecciona el
"Id2" en un proceso, la siguiente vez que se seleccione, deberá aumentarse en uno, para ser escogidos en orden.

Entonces, tomo los que tengan "Id1" y selecciono el primero y el ultimo, para saber cuando reiniciar el contador de Id.

Y todo anda bn, el problema surge cuando hago las condiciones, ya que no las realiza adecuadamente, si la hago con variables "$xxxxxx" no funciona, pero si yo lo hago directamente con un numero "20" si anda bn.

Creo que es un error de sintaxis, pero no logro decifrar, también creo que no entra al ultimo "if" porque el penultimo se cumple y se sale, o no se, agradeceria su ayuda, Gracias.

Sacar el primero:
$query1 = mysql_query("SELECT Id2 FROM tabla2 WHERE Id1= '$var' ORDER BY Id2 ASC LIMIT 1");
$fila1 = mysql_fetch_array($query1);
if(mysql_num_rows($query1)) { Id2Prim = $fila1['Id2']; }


Sacar el ultimo:
$query2 = mysql_query("SELECT Id2 FROM tabla2 WHERE Id1= '$var' ORDER BY Id2 DESC LIMIT 1");
$fila2 = mysql_fetch_array($query2);
if(mysql_num_rows($query2)) { Id2Ult = $fila2['Id2']; }


Seleccionar el ultimo usado:
$query3 = mysql_query("SELECT Id2 FROM tabla1WHERE Id1= '$var' ORDER BY Fecha DESC LIMIT 1");
$fila3 = mysql_fetch_array($query3);
if(mysql_num_rows($query3)) { Id2= $fila3['Id2']; }


Acá es donde empieza el problema:
if(Id2 == Id2Ult )
{
Id2New = Id2Prim ; Si el Id nuevo, es igual al ultimo, se ubica en el primero para volver a empezar
}

else
{
$Id2New = Id2 + 1; si no es el ultimo, aumentar en uno, para elegir el siguiente
}

Id2Prim = 18
Id2Ult = 20

Si Id2 = 18 --> Id2New = 19 (FUNCIONA) en teoria
Si Id2 = 19 --> Id2New = 20 (FUNCIONA) en teoria
Si Id2 = 20 --> Id2New = 21 (NO FUNCIONA) no esta entrando al if, pasa directo al else

---------------------------------------

Yo pense que el problema podria ser que como entraba en el if de la "query3" no pasaba al if de comparaciones, pero eso es ilógico, y para probarlo, hice esto manualmente:

Id2Prim = 18
Id2Ult = 20
Id2 = 18

if(Id2 == 20)
{
Id2New = Id2Prim ; Si el Id nuevo, es igual al ultimo, se ubica en el primero para volver a empezar
}

else
{
$Id2New = Id2 + 1; si no es el ultimo, aumentar en uno, para elegir el siguiente
}

Deja el Id2New en 19 (FUNCIONA)

------------------------------------------------

Id2Prim = 18
Id2Ult = 20
Id2 = 20

if(Id2 == 20)
{
Id2New = Id2Prim ; Si el Id nuevo, es igual al ultimo, se ubica en el primero para volver a empezar
}

else
{
$Id2New = Id2 + 1; si no es el ultimo, aumentar en uno, para elegir el siguiente
}

Deja el Id2New en 18 (FUNCIONA)

--------------------------------------------------

Muchas Gracias.

Última edición por DaHaSaMo; 08/11/2013 a las 11:42
  #2 (permalink)  
Antiguo 08/11/2013, 13:13
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problema con Ciclos PHP

<saludos>
En efecto, haciendo pruebas con valores fijos, funciona correctamente.
En cuyo caso creo que el problema es de la data que recibe de los querys.

Así que te sugiero revises con calma desde 0 la data en las tablas,
y hagas paso a paso desde la data que tienes

Si persiste el tema, sugiero que nos comentes que data tienes en cada tabla para
realizar pruebas con esta info

</saludos>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 08/11/2013, 17:06
Avatar de DaHaSaMo  
Fecha de Ingreso: octubre-2011
Mensajes: 9
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Problema con Ciclos PHP

Cambié esto:

if(Id2 == Id2Ult )
{
Id2New = Id2Prim ;
}


Por esto:

if(Id2 == $fila2['Id2'])
{
Id2New = Id2Prim ;
}


Y ahora si funciona correctamente, pero no se que tan bueno sea.
  #4 (permalink)  
Antiguo 08/11/2013, 20:41
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problema con Ciclos PHP

Cita:
Iniciado por DaHaSaMo Ver Mensaje
Cambié esto:

if(Id2 == Id2Ult )
{
Id2New = Id2Prim ;
}


Por esto:

if(Id2 == $fila2['Id2'])
{
Id2New = Id2Prim ;
}


Y ahora si funciona correctamente, pero no se que tan bueno sea.
<saludos>
Pero es lo mismo no?
Pues Id2Ult era asignado de $fila2 según entiendo tu código
Si te funciona asì, te sugiero le hagas más casos de pruebas y si
funciona correctamente en todos los casos, pues quedate con este,
pero yo si ahondaría en saber porque con el otro (que pa mi es lo mismo)
no funca!
</saludos>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 08/11/2013, 22:59
Avatar de DaHaSaMo  
Fecha de Ingreso: octubre-2011
Mensajes: 9
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Problema con Ciclos PHP

Estoy totalmente de acuerdo con que es lo mismo.
Y ya realice pruebas con muchos escenarios posibles,
Y todo sale bn. Hay algun problema en la asignacion de la variable.

Como solo arroja un resultado, lo asigne con $fila2[0] pero tampoco.
Despues de asignar valores imprimo las variables y los valores estan
Asignados bien.

El problema es que no entra a la condicion pero las variables
estan bien.

Gracias por estar ayudandome.

Etiquetas: php+bd+mysql
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 00:57.