Cita: Amigo, aun no logro entenderte podrias explicarme mejor en donde esta mi problema exactamente ??
Tu problema esta cuando los datos son de este tipo:
Código PHP:
Ver original$dataGames[0] = array('NumGame' => 1, 'Teams' => 2); $dataGames[1] = array('NumGame' => 1, 'Teams' => 2); $dataGames[2] = array('NumGame' => 2, 'Teams' => 3); $dataGames[3] = array('NumGame' => 2, 'Teams' => 3); $dataGames[4] = array('NumGame' => 5, 'Teams' => 7); // Una o las dos condiciones, son diferentes del anterior y es la ultima fila.
El ultimo caso, quedara sin ser procesado, dicho de otra forma, sera ignorado.
Cita: como voy a meter en el while una condicion booleana ?? cuando la pase a true un ejemplo me va a detener el while y van a quedar campos afuera o no ?
Sabes lo que es un
while? pareciera que no.
Es una estructura repetitiva que mientras su condicion pueda ser EVALUADA como true, ejecuta el bloque de codigo que tiene asociado.
Sabes que es lo que estas haciendo con esta instruccion:
Código PHP:
Ver original$dataGames = $strDataGames->fetch(PDO::FETCH_ASSOC)
Lee el manual si no entiendes. $strDataGames tiene todos los resultados que vinieron de la base de datos. ¿Alguna vez recorriste un archivo secuencialmente? (Si la respuesta es no, ya es hora que lo vayas haciendo) La idea es la misma. En un archivo tu decias
while not EOF() do que vendria a ser:
mientras no sea fin de archivo hacer y adentro del while leias una linea del archivo, el puntero interno del archivo avanza una posicion y apunta o a EOF o al siguiente registro.
el metodo fetch es muy similar, en lugar de un archivo toma el resultset que viene de la base de datos, pone el puntero apuntando al primer registro, cada vez que se ejecuta, si ese puntero apunta a un resultado, devuelve ese resultado como un array, y lo avanza una posicion, si el puntero apunta al EOF retorna false.
En el manual la
seccion booleanos explica que valores en php son evaluados como falsos.
un array vacio es falso, pero un array lleno es true.
php primero evalua la asignacion y luego el while:
1-> Resuelve la funcion fetch (puede ser un array o false)
2-> Asigna ese valor a $dataGames
3-> Evalua el valor de $dataGames como condicion del while
esta haciendo una
convercion implicita para resolver la variable como si fuese booleana y poder trabajarla.
while evalua CIEMPRE una condicion booleana, que esa condicion salga de una variable o de una exprecion, le da lo mismo.
Código PHP:
Ver original// Osea que esto:
while( /* exprecion */ )
// Es lo mismo que esto
$varBoolean = (bool) (/* exprecion */);
while($varBoolean)
Sin embargo hay una gran diferencia entre ambos, y es que en el segundo caso, el valor de $varBoolean puede ser modificado y actualizado en cualquier lugar, no solo al inicio del while, puedes modificarla en cualquier lugar tantas veces como quieras, hasta puedes hacerla tomar diferentes significados segun donde la metas.
Esa propiedad es la que te sugiero que aproveches.