Foros del Web » Programando para Internet » PHP »

problema con innerjoin

Estas en el tema de problema con innerjoin en el foro de PHP en Foros del Web. hola tengo un problema con el innerjoin cuando selecciono las tablas en la bd me tira este error Warning: mysql_fetch_assoc(): supplied argument is not a ...
  #1 (permalink)  
Antiguo 08/02/2009, 15:25
Avatar de spolli  
Fecha de Ingreso: diciembre-2008
Mensajes: 68
Antigüedad: 15 años, 4 meses
Puntos: 0
problema con innerjoin

hola tengo un problema con el innerjoin cuando selecciono las tablas en la bd me tira este error

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\villagesell09\noticias\imagenes.php on line 57

Código PHP:
include("conexion.php");
    
    
$registros=mysql_query("UPDATE noticia SET nombre='$_POST[titulonuevo]' WHERE nombre='$_POST[tituloviejo]' ",$conexion);
    
    
$sql "SELECT noticia, archivos FROM  noticia INNER JOIN archivos ON noticia.id = archivos.id_noticia";  
    
$consulta mysql_query($sql);
    

    while(
$registro=mysql_fetch_assoc($consulta)){
        echo 
"<div class='titulo'>".$registro['nombre']."</div>";
        echo 
"<div class='subcuerpo'>".$registro['subcuerpo']."</div>";
        echo 
"<img src=\"noticias/ver.php?id=".$registro['id']."\">";
        echo 
"<br><div class='cuerpo'>".substr($registro['cuerpo'], 0250)."</div>";
        echo 
"<br><a href=imagenes.php?id=1><div class='lee'>Ver Mas</div></a>";
        echo 
"<br><div class='autor'>Autor:".$registro['autor']."</div><div align='center'><div class='linea'></div></div><br>";
    }
?> 
  #2 (permalink)  
Antiguo 08/02/2009, 16:44
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problema con innerjoin

Usa mysql_error() para ver qué error está trayendo esa consulta.

Código PHP:
$consulta mysql_query($sql) or die(mysql_error()); 
  #3 (permalink)  
Antiguo 08/02/2009, 16:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: problema con innerjoin

Hola spoli,

Prueba agregar el or die(mysql_error()); después de tu mysql_query.

Saludos
  #4 (permalink)  
Antiguo 09/02/2009, 13:37
Avatar de spolli  
Fecha de Ingreso: diciembre-2008
Mensajes: 68
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: problema con innerjoin

hola hay puse el mysql_error y me tira este error
Unknown column 'noticia' in 'field list' , pero no entiendo porque lo tira si la columna noticia esta creada
  #5 (permalink)  
Antiguo 09/02/2009, 13:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: problema con innerjoin

Pues si te lo dice es por algo, prueba usar el alias de la columna, por ejemplo SELECT noticia.*, archivos.* FROM ...

Saludos
  #6 (permalink)  
Antiguo 09/02/2009, 13:56
Avatar de spolli  
Fecha de Ingreso: diciembre-2008
Mensajes: 68
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: problema con innerjoin

mira puse como me dijiste pero ahora no me imprime la noticia , pero se guarda en la bd mira esta es mi bd

donde se guarda las noticias
CREATE TABLE `noticia` (
`id` bigint(20) NOT NULL auto_increment,
`nombre` text NOT NULL,
`cuerpo` text NOT NULL,
`autor` text NOT NULL,
`subcuerpo` text NOT NULL,
`id_archivos` bigint(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=132 ;

donde se guardan las fotos
CREATE TABLE `archivos` (
`id` int(21) NOT NULL auto_increment,
`archivo_binario` blob NOT NULL,
`archivo_nombre` text NOT NULL,
`archivo_peso` text NOT NULL,
`archivo_tipo` text NOT NULL,
`id_noticia` bigint(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=139 ;
  #7 (permalink)  
Antiguo 09/02/2009, 14:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: problema con innerjoin

Prueba hacer un var_dump($registro) dentro del While para que veas los datos que se estan enviando.

También imprime tu consulta y ve si te arroja resultados ejecutandola vs tu gestor de BDD.

Saludos
  #8 (permalink)  
Antiguo 10/02/2009, 23:38
Avatar de spolli  
Fecha de Ingreso: diciembre-2008
Mensajes: 68
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: problema con innerjoin

Perdona que tarde en contestarte, mira si al codigo lo pongo asi me funciona , pero me repite la noticia al ingresar la segunda

Código PHP:
$sql "SELECT * FROM  noticia INNER JOIN archivos";  
$consulta mysql_query($sql) or die (mysql_error()); 
  #9 (permalink)  
Antiguo 10/02/2009, 23:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: problema con innerjoin

Como te comento, ejecuta la sentencia en tu gestor de bases de datos, asi puedes ver de donde ocurre el problema.

Saludos
  #10 (permalink)  
Antiguo 10/02/2009, 23:52
Avatar de spolli  
Fecha de Ingreso: diciembre-2008
Mensajes: 68
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: problema con innerjoin

como ejecuto la sentencia en la bd?
  #11 (permalink)  
Antiguo 10/02/2009, 23:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: problema con innerjoin

Depende mucho de tu gestor de BDD, pero debes de tener alguna herramienta para poder ejecutar un Query, si usas MySQL te recomiendo MySQL Query Browser.

Saludos
  #12 (permalink)  
Antiguo 11/02/2009, 00:59
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 16 años, 6 meses
Puntos: 18
Respuesta: problema con innerjoin

básicamente creo que tienes error en realizar tu consulta al utilizar inner join

select campos_que_quieres_recuperar_de_ambas_tablas from t1 inner join t2 on t1.campo_comun=t2.campo_comun
y si necesitas algún registro en común entonces utilizas la clausula where.
lo que tú estas haciendo es intentar recuperar los nombres de las tablas, si lo que intentas es recuperar todos los campos de ambas tablas entonces puedes hacer esto.

Cita:
select * from t1 inner join t2 on t1.campo_comun=t2.campo_comun
o
Cita:
select t1.*,t2.* from t1 inner join t2 on t1.campo_comun=t2.campo_comun
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
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 18:07.