Foros del Web » Programando para Internet » PHP »

no andan los join

Estas en el tema de no andan los join en el foro de PHP en Foros del Web. hola tengo un problema en mysql_query estoy haciendo un sistema de noticia , y me tira este error Warning: mysql_fetch_assoc(): supplied argument is not a ...
  #1 (permalink)  
Antiguo 27/12/2008, 23:23
Avatar de hernansam  
Fecha de Ingreso: septiembre-2007
Ubicación: Funes , Argentina
Mensajes: 204
Antigüedad: 16 años, 7 meses
Puntos: 0
no andan los join

hola tengo un problema en mysql_query estoy haciendo un sistema de noticia , y me tira este error
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\Varios\Fotos\imagenes.php on line 7

tengo hecha dos tablas en la bd una donde se guardan las fotos y otra las noticias , estuve tratando de hacer join e inner join pero ninguno me anda y me tira este error

el script
Código PHP:
<?php
    
include("conexion.php");

    
$conexion=mysql_query("SELECT * FROM noticia WHERE archivo",$conexion);
  
    
    while(
$registro=mysql_fetch_assoc($consulta)){
        echo 
"".$registro['nombre']."";
        echo 
"<br>".$registro['subcuerpo']."";
        echo 
"<br><img src=\"ver.php?id=".$registro['id']."\">";
        echo 
"<br>".$registro['cuerpo']."";
        echo 
"<br>".$registro['autor']."";
    }

?>
  #2 (permalink)  
Antiguo 28/12/2008, 00:05
 
Fecha de Ingreso: noviembre-2008
Ubicación: lima
Mensajes: 148
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: no andan los join

hola hernansam.

Ese error es por que el valor que estas trabajando en el mysql_fetch_assoc está vacio, y esto se debe a que tu consulta le falta:

Código PHP:
$conexion=mysql_query("SELECT * FROM noticia WHERE archivo",$conexion); 
   
/*si te das cuenta donde pones la claúsula WHERE no estás cumpliendo la 
función lógica ejm: una =*/ 
modifica eso.

Suerte.
  #3 (permalink)  
Antiguo 28/12/2008, 01:05
Avatar de hernansam  
Fecha de Ingreso: septiembre-2007
Ubicación: Funes , Argentina
Mensajes: 204
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: no andan los join

no me funciono , mira cambie el codigo , pero solo me toma una tabla de la bd , si quiero que tome 2 no puedo , me tira el mismo error

Código PHP:
<?php
    
include("conexion.php");

    
$sql "SELECT id,nombre,cuerpo,subcuerpo,autor FROM noticia WHERE archivos";
    
$consulta mysql_query($sql);
    

    while(
$registro=mysql_fetch_assoc($consulta)){
        echo 
"".$registro['nombre']."";
        echo 
"<br>".$registro['subcuerpo']."";
        echo 
"<br><img src=\"ver.php?id=".$registro['id']."\">";
        echo 
"<br>".$registro['cuerpo']."";
        echo 
"<br>".$registro['autor']."";
    }

?>
  #4 (permalink)  
Antiguo 28/12/2008, 01:14
 
Fecha de Ingreso: noviembre-2008
Ubicación: lima
Mensajes: 148
Antigüedad: 15 años, 4 meses
Puntos: 0
Sonrisa Respuesta: no andan los join

hola hernansam.

Me referia a que tu consulta sql es´tá mal, pues para usar el Where tu tienes que hacer una comparacion(funcion logica)
por ejemplo:

Código PHP:


$sql 
"SELECT id,nombre,cuerpo,subcuerpo,autor FROM noticia WHERE archivos='publicidad'";
 
$consulta mysql_query($sql); 
Te bota el error por que al ejecutar la sentencia mala $consulta está vacio.

En conclusión si usas el WHERE archivos tienes que compararlo con algo

Suerte.
  #5 (permalink)  
Antiguo 28/12/2008, 01:46
Avatar de hernansam  
Fecha de Ingreso: septiembre-2007
Ubicación: Funes , Argentina
Mensajes: 204
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: no andan los join

ah ya entendi , perdon , lo que quiero hacer es que me imprima la foto y la noticia en el navegador , si no se puede hacer asi como lo hago con los join , porque lo trate de hacer y no me funcionaron

como esta solo me muestra los registro que ingreso , pero no puedo imprimir la foto , y si quiero imprimir la foto , no puedo mostrar los registro
  #6 (permalink)  
Antiguo 28/12/2008, 12:05
 
Fecha de Ingreso: noviembre-2008
Ubicación: lima
Mensajes: 148
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: no andan los join

hola hernansam.
A ver si te entendí bien, tienes una tabla de nombre noticia, cierto?.
Esa tabla tiene los campos imagen y noticia(m imagino que el contenido).
te doy un pequeño ejemplo.
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<?
$valor
='economia'//es una valor cualquiera, puede cambiar

$sql "SELECT id,nombre,cuerpo,subcuerpo,autor FROM noticia WHERE archivos='$valor'"//en este caso estoy seleccionando todos los registros de la tabla noticia que tengan el campo archivos igual a $valor(economia)

$result=mysql_query($sql);
$row=mysql_fetch_row($result);
$imagen=$row['imagen'];
$contenido=$row['contenido'];
?>
<table width="337" border="0" align="center">
  <tr>
    <td colspan="2" align="center">Noticia</td>
  </tr>
  <tr>
    <td width="175" height="193" valign="top"><?=$contenido?></td>
    <td width="152" valign="top"><img src="images/<?=$imagen?>" width="143" height="95" /></td>
  </tr>
</table>
</body>
</html>
Esto te va imprimir la noticia con el campo archivo que sea igual a $valor.

Para que puedas poner la imagen,pues esta tiene que estar en una carpeta de tu servidor, en el caso del ejemplo la carpeta images,y de ahi solo pones la ruta (ubicacion de donde guardaste la imagen que corresponde a esa noticia) y simplemente la jalas con el nombre que guardaste en la base de datos.

aaaa se usa JOIN cuando trabajas con mas de una tabla.

Me avisas como te fue, sino para seguir ayudandote.

Saludos, bye
  #7 (permalink)  
Antiguo 28/12/2008, 12:16
 
Fecha de Ingreso: noviembre-2008
Ubicación: lima
Mensajes: 148
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: no andan los join

hola de nuevo hernansam.
Viendo bien tu 1er post, me da a entender que la imagen y el contenido están en dos tablas distintas, .

En este caso si tienes que trabajar con dos tablas en simultaneo, pero para eso estas tablas tienes que tener un campo en común, como un identidicador o algo qu elas relacione ejmplo:

tabla noticia
id //identificador de la noticia
titulo
contenido


tabla imagen
id //identificador de la noticia, este campo indica que esta imagen pertenece a este numero de noticia
nombre.

me entiendes?.

Dime la estructura de tus tabals para poder ayudarte.
Bye
  #8 (permalink)  
Antiguo 29/12/2008, 02:00
Avatar de hernansam  
Fecha de Ingreso: septiembre-2007
Ubicación: Funes , Argentina
Mensajes: 204
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: no andan los join

mira aca te dejo las dos tablas, hice una relacion , pero no se si esta bien

las de la 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,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=68 ;

y la de la noticia
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,
`archivos_id` bigint(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=61 ;
  #9 (permalink)  
Antiguo 02/01/2009, 02:56
Avatar de hernansam  
Fecha de Ingreso: septiembre-2007
Ubicación: Funes , Argentina
Mensajes: 204
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: no andan los join

hola pude solucionar el problema , ahora imprime la noticia con la foto , pero tengo un problema, que cuando subo la segunda noticia se me repite varias vece la segunda noticia seguida

Código PHP:
<?php
    
include("conexion.php");

    
$sql "SELECT * FROM  noticia INNER JOIN archivos";
    
$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=\"ver.php?id=".$registro['id']."\">";
        echo 
"<br>".$registro['cuerpo']."";
        echo 
"<br><div class='autor'>Autor:".$registro['autor']."</div>";
    }

?>
  #10 (permalink)  
Antiguo 13/01/2009, 12:39
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 9 meses
Puntos: 19
Respuesta: no andan los join

a que te referis con "cuando subo la segunda noticia"

EStas hablando de un proceso que tenes en otro archivo o te estas refiriendo a que cuando el codigo imprime la segunda noticia lo hace muchas veces???
  #11 (permalink)  
Antiguo 13/01/2009, 13:11
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 16 años, 5 meses
Puntos: 18
Respuesta: no andan los join

tienes errores al utilizar los inner join lo que deberias es hacer esto

Cita:
select (los campos que quieres mostrar) from t1 inner join t2 on t1.campo_comun=t2.campo_comun
¨

ó

Cita:
select (los campos que quieres mostrar) from t1 inner join t2 using(campo_comun).
ó

Cita:
select (los campos que quieres mostrar) from t1,t2 where t1.campo_comun = t2.campo_comun
t1 y t2 tus tablas.

no estaría mal si te lees un manual del lenguaje sql.
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
  #12 (permalink)  
Antiguo 13/01/2009, 15:32
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 9 meses
Puntos: 19
Respuesta: no andan los join

en otras palabras seria

Código PHP:
$sql "SELECT noticia.*, archivos.* FROM  noticia INNER JOIN archivos ON noticia.id = archivos.id_noticia"
id_noticia es el nombre del campo en el que guardas el id de la noticia
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 07:21.