Foros del Web » Programando para Internet » PHP »

Por qué ...

Estas en el tema de Por qué ... en el foro de PHP en Foros del Web. Tengo la siguiente consulta a mi BD: Código PHP:  $query  =  mysql_query ( "SELECT dir.*,catdir.* FROM directorio dir, categoriadirectorio catdir WHERE dir.idcategoria= catdir.idcategoria AND idsitio='" . $_GET [ 'idsitio' ]. "'" );               $row  =  mysql_fetch_assoc ...
  #1 (permalink)  
Antiguo 19/04/2004, 13:40
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Por qué ...

Tengo la siguiente consulta a mi BD:
Código PHP:
 $query mysql_query("SELECT dir.*,catdir.* FROM directorio dir, categoriadirectorio catdir WHERE dir.idcategoria= catdir.idcategoria AND idsitio='".$_GET['idsitio']."'");
             
$row mysql_fetch_assoc($query);
             
$arrcategorias = array();
             while(
$arr mysql_fetch_assoc($query)){
              
array_push($arrcategorias$arr['catdir.titulo']);
             } 
si se dan cuenta declaro un array y lo voy llenando con los elementos que me devuelve la consulta. Pero me parece que no los está llenando correctamente. Lo otro es que si imprimo esto:
Código PHP:
 ...
 echo 
$row['dir.titulo']."<br>";
 echo 
$arrcategorias($row['catdir.idcategoria'])."<br>";
 ... 
tampoco me imprime nada.
Que es lo que estoy haciendo mal?
Salu2
__________________
Ing. Reynier Pérez Mira

Última edición por Reynier; 19/04/2004 a las 13:42
  #2 (permalink)  
Antiguo 19/04/2004, 14:11
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

La sintaxis tabla.campo no se puede usar en los arrays de PHP. Lo que debes hacer es poner alias en la consulta:

SELECT dir.titulo as dir_titulo

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 19/04/2004, 14:13
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
obten los campos por su nombre o alias, no antepongas el nombre de la tabla.

ejemplo:

while($arr = mysql_fetch_assoc($query)){

array_push($arrcategorias, $arr['titulo']);

}
__________________
Dedicado a proyectos web, actualmente desarrollando un sistema de diseño de flyers online muy fácil de usar.
  #4 (permalink)  
Antiguo 19/04/2004, 14:43
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Lo que pasa es que ...

Lo que pasa es que los datos están en tablas diferentes. Por ejemplo en la tabla categoriadirectorio están almacenadas las categorías de los directorios y en la otra lo que hago es referencia a ese id de categoría en específico. La consulta es esta:
Código PHP:
 $query mysql_query("SELECT dir.*,catdir.* FROM directorio dir, categoriadirectorio catdir WHERE dir.idcategoria= catdir.idcategoria AND idsitio='".$_GET['idsitio']."'"); 
y lo que entiendo según me dice josemi es que la debo hacer así:
Código PHP:
 $query mysql_query("SELECT dir.idsitio as id,dir.titulo as titulo,dir.descripcion as descripcion,dir.direccion as direccion,dir.idcategoria as idcatondir,dir.fecha as fecha,dir.donde as donde,dir.publico as publico,catdir.idcategoria as idcatoncat,catdir.titulo as titulocat FROM directorio dir, categoriadirectorio catdir WHERE dir.idcategoria= catdir.idcategoria AND idsitio='".$_GET['idsitio']."'"); 
no?
Salu2
__________________
Ing. Reynier Pérez Mira
  #5 (permalink)  
Antiguo 19/04/2004, 14:50
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Lo he hecho ...

Lo he hecho de esta forma y creo que me funcionó, pero cuando lo muestro en pantalla no me sale nada:
Código PHP:
$query mysql_query("SELECT dir.idsitio as id,dir.titulo as titulo,dir.descripcion as descripcion,dir.direccion as direccion,dir.idcategoria as idcatondir,dir.fecha as fecha,dir.donde as donde,dir.publico as publico,catdir.idcategoria as idcatoncat,catdir.titulo as titulocat FROM directorio dir, categoriadirectorio catdir WHERE idsitio='".$_GET['idsitio']."'");
             
$arrcategorias = array();
             
$row mysql_fetch_assoc($query);
             while(
$arr mysql_fetch_assoc($query)){
              
array_push($arrcategorias$arr['titulocat']);
             }
echo 
$arrcategorias[$row['idcatondir']]; 
No me imprime nada
Salu2
__________________
Ing. Reynier Pérez Mira
  #6 (permalink)  
Antiguo 19/04/2004, 21:36
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Pues nada

Ahora lo he cambiado de esta manera y nada. En realidad necesito que me ayuden porque ya se me caen los pelos y no se que hacer.
Código PHP:
 $query mysql_query("SELECT dir.idsitio as id,dir.titulo as titulo,dir.descripcion as descripcion,dir.direccion as direccion,dir.idcategoria as idcatondir,dir.fecha as fecha,dir.donde as donde,dir.publico as publico,catdir.idcategoria as idcatoncat,catdir.titulo as titulocat FROM directorio dir, categoriadirectorio catdir WHERE idsitio='".$_GET['idsitio']."' AND dir.idcategoria=catdir.idcategoria");
             
$cons mysql_query("SELECT * FROM categoriadirectorio ORDER BY idcategoria");
             
$row mysql_fetch_assoc($query);
             
$arrdonde = array("_blank","_self","_parent","_top");
             
$cantcat mysql_num_fields($cons);
             
$arrcategorias = array();
             while(
$res mysql_fetch_assoc($cons)){
              for(
$i=0;$i<$cantcat;$i++){
               
array_push($arrcategorias$res['titulo']);
              }
             } 
Mi tabla categoriadirectorio cuenta con los siguientes campos:
Código PHP:
=======================================
ID  Titulo                     Descripcion
1    Nacionales                
empty
2    Internacionales        empty
3    Otros                        empty
======================================= 
El ciclo ese me llena al arreglo $arrcategorias con 3 valores, pero siempre es el mismo, en este caso, Nacionales. Por lo que queda algo como esto:
Código PHP:
 $arrcategorias = array("Nacionales","Nacionales","Nacionales"); 
En realidad ya no se que hacer. Me ayudan?
Salu2
__________________
Ing. Reynier Pérez Mira
  #7 (permalink)  
Antiguo 19/04/2004, 21:45
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Upss al FIN

Upss después de darle tantas y tantas vueltas a mis neuronas(las pobres deben estar quemadas :) ) he resuelto mi problema con un pequeño detalle, ¡invertir los ciclos!. Gracias a todos los que me ayudaron a pensar. Ahora el código me ha quedado así:
Código PHP:
$query mysql_query("SELECT dir.idsitio as id,dir.titulo as titulo,dir.descripcion as descripcion,dir.direccion as direccion,dir.idcategoria as idcatondir,dir.fecha as fecha,dir.donde as donde,dir.publico as publico,catdir.idcategoria as idcatoncat,catdir.titulo as titulocat FROM directorio dir, categoriadirectorio catdir WHERE idsitio='".$_GET['idsitio']."' AND dir.idcategoria=catdir.idcategoria");
             
$cons mysql_query("SELECT * FROM categoriadirectorio ORDER BY idcategoria");
             
$row mysql_fetch_assoc($query);
             
$arrdonde = array("_blank","_self","_parent","_top");
             
$cantcat mysql_num_rows($cons);
             
$arrcategorias = array();
             for(
$i=0;$i<$cantcat;$i++){
              while(
$res mysql_fetch_assoc($cons)){
               
array_push($arrcategorias$res['titulo']);
              }
             } 
y cuando hago el echo sería así:
Código PHP:
 echo $arrcategorias[$row['idcatondir']-1]; 
Salu2

PD: Lo postee por si a alguien le sirve luego.
A josemi muy útiles las funciones array_push y array_pop me resolvieron una pila de dudas que tenía al respecto y que me hacían el proceso de crear arreglos un poco más tedioso.
__________________
Ing. Reynier Pérez Mira
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 02:27.