Foros del Web » Programando para Internet » PHP »

El loko Array Bidimensio nal

Estas en el tema de El loko Array Bidimensio nal en el foro de PHP en Foros del Web. miren... hago esto: Código PHP: <?php require ( "aut_config.inc.php" ); $reinic_wsite_cons  =  mysql_query ( "SELECT $selecttbl FROM $sql_tabla ORDER BY visitas DESC LIMIT 0,3" ) or die( $Err01 ); while( $resultados  =  mysql_fetch_array ( $reinic_wsite_cons )) { $array_web ...
  #1 (permalink)  
Antiguo 28/08/2003, 03:25
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
El loko Array Bidimensio nal

miren... hago esto:

Código PHP:
<?php
require ("aut_config.inc.php");
$reinic_wsite_cons mysql_query("SELECT $selecttbl FROM $sql_tabla ORDER BY visitas DESC LIMIT 0,3") or die($Err01);
while(
$resultados mysql_fetch_array($reinic_wsite_cons)) {

$array_web[]['webname'] = $resultados['webname'];

$array_web[1]['webname'] = $resultados['webname'];

$array_web[2]['webname'] = $resultados['webname'];


}

echo 
"webname: ".$array_web[0]['webname']."<br>";

echo 
"webname: ".$array_web[1]['webname']."<br>";

echo 
"webname: ".$array_web[2]['webname']."<br>";

?>

para que me muestre por separado esos datos... osea, me tiene que mostrar las 3 ultimas web con mas visitas.... pero el error esta en que la 1º y 2º lo hace bien.. pero la 3º se repite... pq?

miren ejemplo: http://217.125.50.214/script/top/a.php

gracias.
__________________
3w.valenciadjs.com
3w.laislatv.com
  #2 (permalink)  
Antiguo 28/08/2003, 14:51
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Es que es lo que le dices que haga en el codigo. Explicacion paso a paso:

1.- Lee el primer registro (primera iteracion del while):

$array_web[0]['webname']='web1'
$array_web[1]['webname']='web1'
$array_web[2]['webname']='web1'

2.- Lee el segundo registro (segunda iteracion del while):

$array_web[0]['webname']='web1'
$array_web[1]['webname']='web2'
$array_web[2]['webname']='web2'
$array_web[3]['webname']='web2'

3.- Lee el tercer registro (tercera iteracion del while):

$array_web[0]['webname']='web1'
$array_web[1]['webname']='web3'
$array_web[2]['webname']='web3'
$array_web[3]['webname']='web2'
$array_web[4]['webname']='web3'

Y entonces muestras el 0, 1 y 2.

¿Por que? Porque dentro del bucle le estas diciendo que meta ese valor en un nuevo elemento al final del array (con []), que meta ese valor en el elemento con indice 1 (con [1]), y que meta ese valor en el elemento con indice 2 (con [2]). Y eso en cada iteracion del bucle, que como son 3 registros, son 3 iteraciones.

El codigo que quieres seria simplemente:
Código PHP:
<?php

require ("aut_config.inc.php");

$reinic_wsite_cons mysql_query("SELECT $selecttbl FROM $sql_tabla ORDER BY visitas DESC LIMIT 0,3") or die($Err01);

while(
$resultados mysql_fetch_array($reinic_wsite_cons)) {



$array_web[]['webname'] = $resultados['webname'];



}



echo 
"webname: ".$array_web[0]['webname']."<br>";



echo 
"webname: ".$array_web[1]['webname']."<br>";



echo 
"webname: ".$array_web[2]['webname']."<br>";



?>
que simplemente hace que el valor se almacene en un nuevo elemento al final del array. Como el bucle itera 3 veces, añade 3 elementos.

Saludos.

PD: Si quieres ver lo que hace en el array, pon un print_r($array_web); dentro del while al final. Te mostrara el estado del array.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 28/08/2003, 19:48
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
gracias josemi... sobre todo la explicacion... y vaya tela... que lio mas gordo estaba haciendo... xxxxxddd, el loko soy yo.

un saludo.
__________________
3w.valenciadjs.com
3w.laislatv.com
  #4 (permalink)  
Antiguo 28/08/2003, 23:36
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
bueno, pues creo que ya lo tengo...., lo que pasa que es bastante repetitivo todo y aumenta el code bastante... pero bien. gracias, es justo lo que necesitaba, ademas de aprender a susar bien los arrays bidimensionales.. dejo el code, por si a alguien algun dia le da por hacer algo parecido.

Código PHP:
<?php
//comprobamos las 3 mejores web del top y sacamos los datos de las 3, en un array bidimensional por separado

$reinic_wsite_cons mysql_query("SELECT $selecttbl FROM $sql_tabla ORDER BY visitas DESC LIMIT 0,3") or die($Err01);
while(
$resultados mysql_fetch_array($reinic_wsite_cons)) {


    
$array_webname[]['webname'] = $resultados['webname'];
        
$array_date[]['date'] = $resultados['date'];
            
$array_descrip[]['descripcion'] = $resultados['descripcion'];
                
$array_url[]['weburl'] = $resultados['weburl'];
            
$array_visit[]['visitas'] = $resultados['visitas'];
        
$array_imagen[]['imagen'] = $resultados['imagen'];
    
$array_votos[]['votos'] = $resultados['votos'];


}
// fin consulta, desplegamos en variables el array de los datos de las 3 mejores web


    
$webname_1 $array_webname[0]['webname'];
        
$date_1 $array_date[0]['date'];
            
$descripcion_1 $array_descrip[0]['descripcion'];
                
$weburl_1 $array_url[0]['weburl'];
            
$visitas_1 $array_visit[0]['visitas'];
        
$imagen_1 $array_imagen[0]['imagen'];
    
$votos_1 $array_votos[0]['votos'];


    
$webname_2 $array_webname[1]['webname'];
        
$date_2 $array_date[1]['date'];
            
$descripcion_2 $array_descrip[1]['descripcion'];
                
$weburl_2 $array_url[1]['weburl'];
            
$visitas_2 $array_visit[1]['visitas'];
        
$imagen_2 $array_imagen[1]['imagen'];
    
$votos_2 $array_votos[1]['votos'];


    
$webname_3 $array_webname[2]['webname'];
        
$date_3 $array_date[2]['date'];
            
$descripcion_3 $array_descrip[2]['descripcion'];
                
$weburl_3 $array_url[2]['weburl'];
            
$visitas_3 $array_visit[2]['visitas'];
        
$imagen_3 $array_imagen[2]['imagen'];
    
$votos_3 $array_votos[2]['votos'];


//comprobamos las 3 mejores web del top y sacamos los datos de las 3, en un array bidimensional por separado


//mete los datos del ganador en la tabla Ganadores !!!
$date_ganador_1 date("Y-m-d H:i:s");

//1º ganador
mysql_query("INSERT INTO $sql_tbl_ganadores values('','$webname_1','$date_1','$descripcion_1','$weburl_1','$visitas_1','$imagen_1','$votos_1','$date_ganador_1')") or die($Err01);

//2º ganador
mysql_query("INSERT INTO $sql_tbl_ganadores values('','$webname_2','$date_2','$descripcion_2','$weburl_2','$visitas_2','$imagen_2','$votos_2','$date_ganador_1')") or die($Err01);

//3º ganador
mysql_query("INSERT INTO $sql_tbl_ganadores values('','$webname_3','$date_3','$descripcion_3','$weburl_3','$visitas_3','$imagen_3','$votos_3','$date_ganador_1')") or die($Err01);

mysql_close ();
?>

PD: se pueden meter los 3 de 1 sola vez.... da igual si uso 3 INSERT INTO ???

gracias amigos... estoy aprendiendo un monton con toda vuestra ayuda... gracias...
__________________
3w.valenciadjs.com
3w.laislatv.com
  #5 (permalink)  
Antiguo 28/08/2003, 23:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Menudooooooooo lio te has hecho y complicaciones várias con arrays ... (bueno ..espero que ahora tengas claro como funcionan los arrays bidimensionales xDD)

Creas un nuevo "link" para tu BD para que no interfiera con el que ya estas usando en tu SELECT .. mm igual podriás usar el mismo .. pero por siacaso .. xD


Código PHP:
$link2=mysql_connect("bla bla");
mysql_selec_db("bla bla",$link2);

while(
$resultados mysql_fetch_array($reinic_wsite_cons)) {

     
mysql_query("INSERT INTO $sql_tbl_ganadores  values('','".$resultados['webname']."','$date_1','$descripcion_1', '$weburl_1','$visitas_1','$imagen_1','$votos_1',NOW())",$link2) or die($Err01);


Así de simple ... a cada pasada del bucle .. se lee un registro de tu consulta realizada .. a la vez haces el INSERT .. Sustituye las variables restantes (puse sólo una de ejemplo).

Un saludo,

pd: Se me olvidó .. el "date_ganador" si usas un campo DATETIME (como así parece por el date() que usas) se puede eliminar y usar NOW()´; función de Mysql que te dá la fecha/hora actual en formato DATETIME sin más problemas ...
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 28/08/2003 a las 23:52
  #6 (permalink)  
Antiguo 29/08/2003, 02:50
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
jo tios.... como os lo currais, en serio... jajajaja, gracias Custer y Josemi... como mola..., esto es mucho vicio.... pero que mucho vicio... no hay limite...
__________________
3w.valenciadjs.com
3w.laislatv.com
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 19:17.