Buenas ::)
Hice una consulta que busca el articulo seleccionado por el usuario, pero tengo 2 tablas, 1) Catalogo y 2) Imagenes.. Lo que quiero es imprimir la imagen de el articulo correspondiente.
session_start();
include("/secure/conex.php");
$link=Conectarse();
$busqueda=$_POST['busqueda'];
$query=mysql_query("SELECT * FROM Catalogo WHERE noArticulo='".$busqueda."'",$link) or die(mysql_error());
<table width="80%" bgcolor="#CCCCCC" border="1" align="center" cellpadding="2" cellspacing="0" aling="center">
<tr><td><b> Imagen </b></td><td><b> Articulo </b></td><td><b> Descripción </b></td><td><b> Cantidad </b></td><td><b> Precio </b> </td></tr>
<?php
$qur = mysql_num_rows($query);
if($qur > 0) {
while($row=mysql_fetch_array($query))
{
printf("<tr><td><b><center> %s </center></b></td><td> %s </td><td> %s </td><td><center> %d </center></td><td> %d </td></tr>",$row['imagen'],$row['noArticulo'],$row['descripcion'],$row['cantidad'],$row['precio']);
}
mysql_free_result($query);
mysql_close($link);
}
else
{
echo "No se encontraron resultados";
echo "<br /><br />";
}
?>
</table>
Obviamente $row['imagen'] debe de incluir la ruta de la imagen, se que tengo que hacer una consulta a la tabla imagenes, pero lo que no se me ocurre es como incluirla en $row['imagen'].
Saludos
Consulta sobre INNER JOIN en mysql. Por ejemplo:
-- Catalogo
-- id_catalogo, nombre_catalogo, id_imagen
-- Imagenes
-- id_imagen, url_imagen
SELECT id_catalogo, url_imagen
FROM Catalogo
INNER JOIN Imagenes
ON Imagenes.id_imagen = Catalogo.id_imagen
WHERE (id_catalogo = 1)
Muchas gracias por eso, ya leí un poco, pero parece que no le he entendido muy bien, intente lo siguiente:
$query=mysql_query("SELECT * FROM Catalogo INNER JOIN Imagenes ON Imagenes.rutaImagen = Catalogo.noArticulo WHERE noArticulo='".$busqueda."'",$link) or die(mysql_error());
Pero me devuelve: Column 'noArticulo' in where clause is ambiguous..
Que estoy haciendo mal? O que no entiendo?
Saludos
Si te fijas en el ejemplo que te deje, use el mismo campo (por el cual se relacionan las tablas), para poder identificar de cual registro es esa imagen. Lo que vos tenes no cumple con esa condición. Muestranos las estructuras de esas 2 tablas o mejor por que campo se relacionan.
Ok, pongo la estructura de las tablas.
-- Table structure for table `Catalogo`
--
CREATE TABLE `Catalogo` (
`id` bigint(20) NOT NULL auto_increment,
`propietarioArticulo` char(10) collate latin1_general_ci NOT NULL,
`noArticulo` char(45) collate latin1_general_ci NOT NULL,
`descripcion` varchar(350) collate latin1_general_ci NOT NULL,
`tipo` varchar(45) collate latin1_general_ci NOT NULL,
`fechaAltaArticulo` date NOT NULL,
`cantidad` int(3) NOT NULL,
`precio` decimal(6,2) NOT NULL,
`ipAltaArticulo` char(15) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=85 ;
-- Table structure for table `Imagenes`
--
CREATE TABLE `Imagenes` (
`id` bigint(4) NOT NULL auto_increment,
`usuarioImagen` varchar(10) collate latin1_general_ci NOT NULL,
`noArticulo` varchar(25) collate latin1_general_ci NOT NULL,
`rutaImagen` varchar(65) collate latin1_general_ci NOT NULL,
`dateUploadImage` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=27 ;
Y se relacionan por el nombre del articulo, que es noArticulo.
De verdad muchas gracias por tu ayuda :)
Entonces sería más o menos así.
SELECT Catalogo.id As 'Código', Catalogo.noArticulo As 'Código Articulo', Imagenes.rutaImagen As 'Ruta Imagen'
FROM Catalogo
INNER JOIN Imagenes ON Imagenes.noArticulo = Catalogo.noArticulo
WHERE(Catalogo.id = 1)
Printea la salida que te dá esta query.
Bueno este ya no me tira error, eso es bueno :) Muuuchas Gracias :)
Pero el codigo me queda inservible para la busqueda de los usuarios, en donde podria colocar $busqueda?
La verdad es que aun ando confundido :(
WHERE(Catalogo.noArticulo = '".$busqueda."')
???
Nop, no funciona asi :(
Debe de funcionar, en la variable $busqueda, que se almacena?. Supongo que es el código del articulo o no?
Almacena el nombre del articulo, por ejemplo, si yo busco "bebida" = $busqueda..
Mira de hecho si la sentencia es:
$query=mysql_query("SELECT Catalogo.id AS 'Código', Catalogo.noArticulo AS 'Código Articulo', Imagenes.rutaImagen AS 'Ruta Imagen'
FROM Catalogo
INNER JOIN Imagenes ON Imagenes.noArticulo = Catalogo.noArticulo
WHERE(Catalogo.noArticulo = '$busqueda')",$link)
Y doy en el buscador "BEBIDA" devuelve una fila pero con la imagen rota y los demas campos vacios.
Lo de la imagen es porque todavia no pongo bien el codigo de eso, pero lo demas no debe estar vacio :(
WTF? entonces las 2 tablas, se relacionan por medio del nombre? o.O!, debería ser por el ID!
PD: Est@s seguro de que estan relacionadas?
Ohh ok ok, ahora entiendoooo xD
Ok, bueno tengo que hacer un nuevo script..
Saludos.