Foros del Web » Programando para Internet » PHP »

Trabajar con los datos de solo un Fetch_Array() ?

Estas en el tema de Trabajar con los datos de solo un Fetch_Array() ? en el foro de PHP en Foros del Web. Hola a todos... me surge la siguiente duda y me gustaria saber que opinan los que saben. Tengo una tabla asi: id id_tipo titulo link ...
  #1 (permalink)  
Antiguo 29/11/2005, 01:31
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 3 meses
Puntos: 2
Trabajar con los datos de solo un Fetch_Array() ?

Hola a todos... me surge la siguiente duda y me gustaria saber que opinan los que saben.

Tengo una tabla asi:

id id_tipo titulo link

(el id es autoincrement, con base "0")
(el id_tipo puede ser "1", "2", o "3")
(Los demas son obvios )

Supongamos que hago mi query (select * from mi_tabla order by 'id' asc)

Y me gustaria tener 3 listados, en base al "id_tipo"... osea, listado 1, 2 y 3, y a la vez no quiero hacer 3 queries.

¿Como puedo manejarme directamente con un "$data = mysql_fetch_array($query)" ?

Mi codigo original se basa en la siguiente funcion, que dicho sea de paso, depende del QUERY y se ejecuta para cada lista (3 veces). Esto multiplicado por la cantidad de paginas/refreshes que visite/realize el usuario, ya que esta informacion dinamica esta en TODAS las paginas de mi site.

Código PHP:
<?php
    
include_once($_SERVER['DOCUMENT_ROOT'].'/include/bd.php');
    function 
ultimos($cantidad$tabla) {
        
$link conectar_bd();
        
$sql "select * from $tabla order by 'id' desc";
        
$query mysql_query($sql) or die('Imposible realizar consulta SQL!');
        for (
$i = (mysql_num_rows($query) - $cantidad); $i < (mysql_num_rows($query)); $i++) {
            
$data mysql_fetch_row($query);
            echo 
"<img src='/img/icons/bullet.gif' alt='.' width='8' height='8' /><a class='link_menu_l' href='".$data[3]."'>".$data[2]."</a><br />";
        }
    
mysql_free_result($query);
    
mysql_close($link);
}
?>

¿Alguna idea de como crear estas tres listas utilizando solo una query? ¿Tal vez tomando todo en un array, y luego con un for crear 3 arrays que representen las listas de los diferentes tipos? Lo intente pero no me sale :S

Gracias por su ayuda !!!
  #2 (permalink)  
Antiguo 29/11/2005, 01:41
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... no acabo de comprender. ¿Cuál debería de ser el resultado final --las listas--??.

En principio creo que mysql_field_seek() podria servirte; con esto te desplazarias por los resultados previamente obtenidos...

Saludos
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 29/11/2005, 02:00
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 3 meses
Puntos: 2
Jama: Gracias por responder, tal vez no fui muy expresivo.

El resultado final son las tres listas... cada elemento de la lista tiene como texto "TITULO" y es un link hacia "LINK"... estos datos los obtengo con la query.

Algo asi:

LISTA UNO:
uno
dos

LISTA DOS:
uno
dos

LISTA TRES:
uno
dos

En cada caso, el titulo de la lista lo escribo con html, es algo estatico... el contenido de las listas lo deberia armar en base a al array ($data = mysql_fetch_array($query)).

Voy a averiguar sobre la funcion que me indicas ya que no la conozco... tal vez ahi este la clave.

Un saludo, gracias por tu tiempo.
  #4 (permalink)  
Antiguo 29/11/2005, 02:31
Avatar de Tx
Tx
 
Fecha de Ingreso: enero-2002
Ubicación: Cba - Arg
Mensajes: 188
Antigüedad: 22 años, 3 meses
Puntos: 1
Que tal,
Los listado son en base a la misma consulta y la diferencia esta en el orden de los mismos, verdad?, si es asi, como bien lo dijiste, tendrias que cargar los datos en un array y ordenarlos segun tus necesidades.

PHP tiene varias funciones para realizar ordenamiento de arrays, asort, arsort, uksort, etc. checkea el manual de PHP en el capitulo: II. Funciones de matrices.

saludos..
  #5 (permalink)  
Antiguo 29/11/2005, 02:57
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 3 meses
Puntos: 2
Hola de nuevo... sigo intentando, y ya voy encontrandole la vuelta :)

Tengo esto ahora:

Código PHP:
    if (mysql_num_rows($query) > 0) {
        
        for (
$i 0$i <= mysql_num_rows($query); $i++) {
            
mysql_data_seek($query$i);
            
$row mysql_fetch_array($query);

            if (
$row['id_tipo'] == '1') {
                
$articulos[] = $row['link'];

            } elseif (
$row['id_tipo'] == '2') {

                
$tutoriales[] = $row['link'];

            } elseif (
$row['id_tipo'] == '3') {

                
$reviews[] = $row['link'];
            }        
        }

    } 
Logro meter los "links" en arrays, luego con fors imprimo las listas de forma individual.

El tema es que no logro armar estos arrays como "matrices"... estoy leyendo ahora el manual y algo de info que encontre en una web de tutoriales... por lo que veo la forma es armar algo asi como una matriz asociativa pero realmente no encuentro la vuelta (Estoy muy acostumbrado a los lenguajes en donde uno simplemente hace $matriz[][]).

Si pudiera armar esos arrays en forma de matriz, por ejemplo:

$articulos['titulo']['link']; tendria todo mi problema solucionado...

Ahora, aprendi a hacer esto: array("titulo" => '$titulo', "link" => '$link');
y funciona... pero como cargo mas elementos de tipo "titulo" pero con diferente indice? ¿es algo tonto y solo estoy ya un poco mareado?

GRACIAS nuevamente por su tiempo!
  #6 (permalink)  
Antiguo 29/11/2005, 04:24
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 3 meses
Puntos: 2
¡¡¡ SOLUCIONADO !!!

La cuestion era:

1. Con un for recorrer el resultado del query y recolectar en diferentes matrices los diferentes items para cada lista.

2. Presentar de la forma correcta utilizando FORs los diferentes listados, osea, las matrices.

El problema era:

Hacer una matriz en PHP es un quilombo japones hasta que te das cuenta de su logica :S

Codigo:
Código PHP:
<?php
    
include($_SERVER['DOCUMENT_ROOT'].'/include/bd.php');

    
$link conectar_bd();
    
$sql "select * from listas order by 'id' desc";
    
$query mysql_query($sql) or die (mysql_error());
    
    if (
mysql_num_rows($query) > 0) {
    
        for (
$i 0$i <= mysql_num_rows($query); $i++) {
            
mysql_data_seek($query$i);
            
$row mysql_fetch_array($query);

            if (
$row['id_tipo'] == '1') {

                
$articulos[] = array("short"  => $row['short'], "link"  => $row['link'] );

            } elseif (
$row['id_tipo'] == '2') {

                
$tutoriales[] = array("short"  => $row['short'], "link"  => $row['link'] );


            } elseif (
$row['id_tipo'] == '3') {

                
$reviews[] = array("short"  => $row['short'], "link"  => $row['link'] );

            }        
        }

    }

    
mysql_free_result($query);
    
mysql_close($link);


    echo 
"Articulos "<br>";

    for ($i = 0; $i <= count($articulos) - 1; $i++) {
        echo $articulos[$i]['short']." 
".$articulos[$i]['link']."<br>";
    }    

    echo "
Tutoriales<br>";

    for ($i = 0; $i <= count($tutoriales) - 1; $i++) {
        echo $tutoriales[$i]['short']." 
".$tutoriales[$i]['link']."<br>";
    }

    echo "
Reviews<br>";

    for ($i = 0; $i <= count($reviews) - 1; $i++) {
        echo $reviews[$i]['short']." 
".$reviews[$i]['link']."<br>";
    }




?>
¡ Que felicidad !

Gracias por la ayuda !!!!!!!!!!!!!!!!!!!
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:19.