Foros del Web » Programando para Internet » PHP »

Guardar variables en array, dentro de un WHILE

Estas en el tema de Guardar variables en array, dentro de un WHILE en el foro de PHP en Foros del Web. Hola a todos, tengo un while donde: Código PHP: while( $row  =  mysql_fetch_array ( $result )){ //imprimo los resultados //despues tengo   $numero  =  mysql_num_rows ( $result );  ...
  #1 (permalink)  
Antiguo 08/06/2008, 14:33
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 8 meses
Puntos: 52
Guardar variables en array, dentro de un WHILE

Hola a todos,

tengo un while donde:


Código PHP:
while($row mysql_fetch_array($result)){
//imprimo los resultados
//despues tengo
 
$numero mysql_num_rows($result); //obtengo el numero de IP´s distintas que hay por fecha con una consulta Mysql COUNT y GROUP BY ip
 
//a cada vuelta del ciclo me imprime en pantalla las IP,s del dia y el numero de IP,s distintas 
todo esto imprime asi:

Fecha: 06/06/2008

todo el listado de IP´s

numero de visitantes: $numero.


pero lo que quiero hacer y no doy con la forma, es la de guardar ese dato

la variable $numero en un array, segun el numero de fechas, osea, que si hay

4 fechas , por cada vuelta del whiley habra 4 $numero distintos.

y me guatria poder guardarlos de la forma

array (13,34,56,23)

he intentado un bucle for dentro del while asi

Código PHP:
for ($i=0$i<=count ($numero); $i++){
 
$datos = array ($numero,$i);

pero esto solo me devuelve el primer resultado obtenido del ciclo while y no los cuatro, pues hay cuatro fechas y da 4 vuelta el bucle,

sabeis que hago mal?? todo??, no se como seguir, espero que alguien me de una pista de como hacerlo

Un saludo y espero que despues de la parrafada, me haya explicado.
  #2 (permalink)  
Antiguo 08/06/2008, 14:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Guardar variables en array, dentro de un WHILE

Código PHP:
$datos = array();

for (
$i=0$i<=count ($numero); $i++){
 
$datos[] = $numero;

al final... $datos contiene los $numero
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 08/06/2008, 15:01
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 8 meses
Puntos: 52
Respuesta: Guardar variables en array, dentro de un WHILE

Gracias por responder paketertrueke

pero me sigue devolviendo lo mismo, solo el primer dato

al hacer un var_dump me imprime:

array(2) { [0]=> int(16) [1]=> int(16) }

y ademas solo deberia devolverme

array(1) { [0]=> int(16) }

introduce duplicado el dato en el array
y yo querria

array(4) { [0]=> int(16) [1]=> int(76) [2]=> int(54) [3]=> int(23) }

no lo entiendo
  #4 (permalink)  
Antiguo 08/06/2008, 17:21
 
Fecha de Ingreso: junio-2008
Ubicación: Barcelona
Mensajes: 2
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Guardar variables en array, dentro de un WHILE

Entiendo que lo que quieres es guardar en un array la información de la fecha de la IP y de la IP.

En ese caso deberías hacer un SELECT de ambos campos y como código PHP sería lo siguiente:

Código:
while($row = mysql_fetch_array($result)){

	$datos_seleccionados[] = array(
		'fecha' => $row['nombre_campo_fecha'],
		'ip' => $row['nombre_campo_ip']);

}
entonces por ejemplo en $datos_seleccionados[0] tendrías la primera fecha ($datos_seleccionados[0]['fecha'] y la primera IP ($datos_seleccionados[0]['ip']) y en $datos_seleccionados[3] la cuarta fecha con la cuarta IP (y si hay más, pues eso, más grande sería el array).

Para leer ese array puedes hacerlo mediante foreach:

Código:
$i = 0;
foreach ($datos_seleccionados as $row){
	$i++;
	echo '
		Fecha IP ' . $i . ' : ' . $row['fecha'] . ' e IP: ' . $row['ip'] . '<br>';
}
echo '
	Número de visitantes: ' . $i;
Si no te he entendido bien, al menos esto te dará bastantes pistas XD

Saludos.
  #5 (permalink)  
Antiguo 08/06/2008, 17:32
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 8 meses
Puntos: 52
Respuesta: Guardar variables en array, dentro de un WHILE

Gracias por responder, pero no es eso lo que qiero guardar en el array,

almaceno todas las IP que entran en todas las laginas de mi web

genero con un while el listado de ip por dia de visita

y con el select que indique arriba cuento el numero de IP´s ditintas que hay almacenadas en la fecha indicada

si tengo las ip almacenadas de 4 dias me muestra los listados relacionados por fechas, y el numero de ip´s distintos que hay

dia1---->7 (IP´s distintas)
dia2---->6
dia3---->87
.
.
.
.
pero esos datos los imprimo por cada vuelta del ciclo y no se como almacenarlos en un arrray
Gracias
  #6 (permalink)  
Antiguo 08/06/2008, 17:42
Avatar de Tokkara  
Fecha de Ingreso: junio-2008
Mensajes: 131
Antigüedad: 16 años, 5 meses
Puntos: 5
Respuesta: Guardar variables en array, dentro de un WHILE

Saludos
El problema es el GROUP BY agrupa las filas pero solo muestra la primera, para mostrar todo hay que usar una clausula un poco rara de mysql GROUP_CONCAT. En la sentencia en el select usa esta funcion

Código PHP:
SELECT IPGROUP_CONCAT(fecha) AS fecha FROM ..... 
Ahora el campo fecha sera un string con todas las fechas separadas por una coma. Ahora solo hay que separarlas.

Código PHP:
while($row mysql_fetch_array($result))
{
    
$fecha $row['nombre_campo_fecha'];
    
$ip explode(",",  $row['nombre_campo_ip']);  //Separa las fechas y las guarda en el  array.

A ver si esto te funciona, de todas formas te recomiendo que mires la clausula GROUP BY y las funciones que la acompañan para mas informacion.
Saludos
  #7 (permalink)  
Antiguo 08/06/2008, 17:45
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 8 meses
Puntos: 52
Respuesta: Guardar variables en array, dentro de un WHILE

a ver si me puedo explicar mejor con el codigo

Código PHP:
//consulta a la BD
 
while($row mysql_fetch_array($_pagi_result)){
 
echo 
$row[fecha]; //imprimo la fecha del dia
 
 
$sql "SELECT   * FROM contador_con WHERE id_fecha = '$row[id_fecha]' ORDER BY fecha  DESC";  
$result mysql_query($sql $conexion) or die ( mysql_error() ); 
 
$sql4 "SELECT ip,COUNT(*)  FROM contador_con WHERE id_fecha = '$row[id_fecha]' GROUP BY ip"//consulta para saber el numero de IP´s distintas que hay ese dia
 
$res2mysql_query($sql4) or die (mysql_error()); 
$fila2 mysql_num_rows($res2);
//$fila3 = mysql_fetch_assoc ($res2);
 
//comienzo a intentar almacenar los datos en el array
$datos = array(); 
for (
$i=0$i<=count ($res2); $i++){ 
 
$datos[] = $fila2//es aqui donde quiero almacenar las IP´distintas
}
 
echo 
"<b>numero de vistantes : </b>";
echo 
$fila2;  //imprimo el numero de IP´s distintas por ciclo, que son los datos que quiero guardar en el array $datos
 
}
var_dump ($datos); 
este var_dump me devuelve array(1) { [0]=> int(16) }

y 16 ya es el resultado correcto de la primera vuenta del ciclo

pero solo almaceno en el array el valor de $fila2 una sola vez, y no todas las veces que se ejecuta el bucle

Un saludo

Última edición por jaronu; 08/06/2008 a las 17:57
  #8 (permalink)  
Antiguo 08/06/2008, 18:14
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 8 meses
Puntos: 52
Respuesta: Guardar variables en array, dentro de un WHILE

Gracias por responder, Tokkara

he provado con GROUP_CONCAT y me da el mismo resultado

Gracias
  #9 (permalink)  
Antiguo 09/06/2008, 10:06
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 8 meses
Puntos: 52
Respuesta: Guardar variables en array, dentro de un WHILE

No es por ser pesado, pero nadie se ha encontrado con esta duda??

es para un sistema de estadisticas de visita, a lo mejor no es la mejor manera de hacer unas estadisticas, por favor, alguien que ne de alguna indicacion

Gracias y un saludo
  #10 (permalink)  
Antiguo 09/06/2008, 17:35
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 8 meses
Puntos: 52
Respuesta: Guardar variables en array, dentro de un WHILE

Bueno, este es el ultimo intento, pese al riesgo de que me cierren el post, pero se puede o no se puede hacer lo que digo.

llevo muchas horas leyendo sobre bucles while, for y sobre arrays, y no he encontrado nada que me diga si se puede o no.

Leyendo en google y el los libros de php que tengo como "Desarrollo web con php y MySQL" de Luke Welling y Laura Thomsom, libro que recomiendo.

por favor agradeceria alguna indicacion o alguien que me diga que este camino para hacer estadisticas no es bueno o recomendable.

Gracias
  #11 (permalink)  
Antiguo 09/06/2008, 21:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Guardar variables en array, dentro de un WHILE

No entiendo porque haces un ciclo for dentro de tu while y sobreescribes el dato. pateketrueke ya te puso la solucion tienes que creas el arreglo e insertarlo en cada ciclo de tu while para almacenar el valor.

Lee con cuidado el post de pateketrueke, y te daras cuenta de porque no te sirve en como haz puesto tu código y como es que debe de ir.

Saludos.
  #12 (permalink)  
Antiguo 10/06/2008, 04:38
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 8 meses
Puntos: 52
Respuesta: Guardar variables en array, dentro de un WHILE

Gracias GatorV

Me has hecho pensar detenidamente, cosa que agradezco, y encontre la solucion, despues de leerme bien tu post y el de paketetrueke.

Pues como siempre, tienes razon, no era necesario ese bucle for,
cree el array como me dijiste , antes del While, y a cada vuelta igresé el valor de la variable.
y ahora el var_dump imprime lo que buscaba

Muchas gracias
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 21:21.