Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Ayuda consulta a 2 tablas con campo comun

Estas en el tema de Ayuda consulta a 2 tablas con campo comun en el foro de Mysql en Foros del Web. Hola amigos Quisiera algo de orientación en como quedaría la consulta que necesito hacer: Tengo una tabla PROPIEDADES... `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ...
  #1 (permalink)  
Antiguo 24/09/2009, 09:27
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Ayuda consulta a 2 tablas con campo comun

Hola amigos

Quisiera algo de orientación en como quedaría la consulta que necesito hacer:

Tengo una tabla PROPIEDADES...

`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`codigo` VARCHAR( 20 ) NOT NULL ,
`categoria` VARCHAR( 35 ) NOT NULL ,
`intro` TEXT NOT NULL ,
`descripcion` TEXT NOT NULL ,
`zona` VARCHAR( 35 ) NOT NULL ,
`sector` VARCHAR( 35 ) NOT NULL ,
`ubicacion` VARCHAR( 35 ) NOT NULL ,
`tipo` VARCHAR( 35 ) NOT NULL ,
`precio` VARCHAR( 35 ) NOT NULL ,
`admin` VARCHAR( 35 ) NOT NULL ,
`estrato` VARCHAR( 20 ) NOT NULL ,
`area` VARCHAR( 20 ) NOT NULL ,
`antiguedad` VARCHAR( 20 ) NOT NULL ,
`habitaciones` VARCHAR( 20 ) NOT NULL ,
`banos` VARCHAR( 20 ) NOT NULL ,
`muebles` VARCHAR( 20 ) NOT NULL ,
`seguridad` VARCHAR( 20 ) NOT NULL ,
`info` TEXT NOT NULL

Tengo otra tabla FOTOS...

`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`codigo` VARCHAR( 20 ) NOT NULL ,
`imagen` VARCHAR( 200 ) NOT NULL,
`dir` varchar( 200 ) NOT NULL,
`ancho` varchar( 20 ) NOT NULL,
`alto` varchar( 20 ) NOT NULL,
`peso` varchar( 20 ) NOT NULL

Subo las imágenes a una carpeta y los datos de la imagen a la tabla FOTOS. Todo me funciona OK, subo datos a PROPIEDADES, subo imágenes a FOTOS, muestro resultados, muestro imágenes, etc.

AHORA BIEN...

En una sección de la página, muestro el código de la propiedad y debajo muestro la información contenida en el campo "intro" de la tabla PROPIEDADES.

Lo que quisiera es que también pueda mostrar a la izquierda de la información "intro", alguna de las imágenes que correspondan a esa propiedad, tipo portal inmobiliario.

Para mostrar lo que dije arriba hago esto:

Código PHP:
<?php
include ("inc/connect.inc.php");

$sSQL "SELECT * FROM propiedades WHERE categoria = 'Arriendo' ORDER BY codigo DESC"
$result mysql_query($sSQL);

if (
mysql_num_rows($result) == 0) {
    echo 
"<div id='msj_prop'><span>No hay propiedades en arriendo registradas</span></div>";
}

while (
$row mysql_fetch_array($result)) {
    echo 
"<div id='view_prop'>";
    echo 
"<h4>Código de propiedad No. $row[codigo]</h4>";
    echo 
"<p>$row[intro]";
    echo 
"</div>";
    echo 
"<div id='view_prop_link'>";
    echo 
"<span>ver detalles </span><a href='arriendo_rslt.php?id=$row[id]&&codigo=$row[codigo]'>+</a></p>";
    echo 
"</div>";
    
}
?>
Cómo entonces realizo mis consultas en este codigo para mostrar también una imagen de la propiedad cuyo "codigo" corresponda a la(s) propiedad(es) arrojada(s) de la consulta anterior?

Gracias por su colaboración!
  #2 (permalink)  
Antiguo 25/09/2009, 02:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Ayuda consulta a 2 tablas con campo comun

Código sql:
Ver original
  1. SELECT pr.id,
  2. pr.codigo,
  3. pr.categoria,
  4. pr.intro,
  5. pr.descripcion,
  6. pr.zona,
  7. pr.sector,
  8. pr.ubicacion,
  9. pr.tipo,
  10. pr.precio,
  11. pr.admin,
  12. pr.estrato,
  13. pr.area,
  14. pr.antiguedad,
  15. pr.habitaciones,
  16. pr.banos,
  17. pr.muebles,
  18. pr.seguridad,
  19. pr.info,
  20.  
  21. ft.id,
  22. ft.codigo,
  23. ft.imagen,
  24. ft.dir,
  25. ft.ancho,
  26. ft.alto,
  27. ft.peso
  28.  
  29. FROM propiedades pr
  30.                  LEFT JOIN fotos ft
  31.                  ON pr.codigo=ft.codigo
  32. WHERE pr.categoria = 'Arriendo'
  33. ORDER BY pr.codigo DESC

Así te dara todas las propiedades combinadas con todas sus fotos....

Para limitar a una foto por propiedad yo agregaria un campo en la tabla fotos para marcar la foto que quieres mostrar...

Supongamos

´principal´ boolean

Código sql:
Ver original
  1. ...
  2. WHERE pr.categoria = 'Arriendo'  AND ft.principal=TRUE
  3. ...

Quim
  #3 (permalink)  
Antiguo 25/09/2009, 09:41
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Respuesta: Ayuda consulta a 2 tablas con campo comun

Muchas gracias Quim, voy a probar y comento resultados
  #4 (permalink)  
Antiguo 25/09/2009, 10:30
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Respuesta: Ayuda consulta a 2 tablas con campo comun

Quim funciona lo que me dijiste, investigue en mysql lo de los campos booleanos y ya se como se tratan, pero tengo un problema:

El formulario para insertar las fotos en la DB me genera "n" campos tipo FILE por medio de javascript y en el codigo de insertar fotos, los trato con [$i], por lo que no se como insertar desde ese codigo el campo booleano en la DB

Me toco insertarlo manualmente con phpMyAdmin para probar y si, en la página de resultados se ve la foto con booleano = 1 (true)



Este es el formulario y el código con el que inserto las fotos

form:
Código HTML:
<div id="formulario">
    <form id="form_img" name="form_img" method="POST" enctype="multipart/form-data" action="ins_img.php">
      <div>
        <label for="codigo">Código</label><br />
        <p>El código de la propiedad a la que pertenecen las fotos.</p>
        <input type="text" size="3" maxlength="10" name="codigo" id="codigo" />
      </div>
      <div id="adjuntos">
        <label for="archivo">Fotos</label><br />
        <p>Solo se permiten imágenes .jpg con peso menor a 2000Kb</p>
        <input type="file" size="35" name="archivo[]" id="archivo[]" /><br />
        <h4><a href="#" class="fotos" onClick="addCampo()">Click aquí para agregar otra foto</a></h4>
      </div>
      <div>
        <input type="submit" id="submit" value="Agregar fotos a la propiedad" />
      </div>
    </form>
  </div> 
ins_img.php:
Código PHP:
<?php
include ("inc/connect.inc.php");

//$ruta = "../fotos/";

if (isset ($_FILES['archivo']) && $_FILES['archivo']['size'] > 0) {
    
$tamanomax 2000000;
    
$ruta "fotos";
    
$sub $_POST['codigo'];
    
    if (
is_dir($sub)) {
        
$dir $ruta."/".$sub."/".$archivo;
        } else {
            
$dir_new "fotos/".$sub;
            @
mkdir($dir_new0700);
            
$dir $ruta."/".$sub."/".$archivo;
            } 
    
    
$total count($_FILES['archivo']['name']);
         for (
$i 0$i $total$i++) {

    
$nombretemp $_FILES['archivo']['tmp_name'][$i];
    
$nombrearchivo $_FILES['archivo']['name'][$i];
    
$tamanoarchivo $_FILES['archivo']['size'][$i];
    
$tipoarchivo GetImageSize ($nombretemp);
    
$ancho $tipoarchivo[0];
    
$alto $tipoarchivo[1];
    
    if (
$tipoarchivo[2] == || $tipoarchivo[2] == 3) {
    if (
$tamanoarchivo <= $tamanomax) {
    
    if (
move_uploaded_file ($nombretemp$dir $nombrearchivo)) {
        
$sSQL "INSERT INTO fotos (id, codigo, imagen, dir, ancho, alto, peso) VALUES ('', '".$_POST['codigo']."', '$nombrearchivo', '$dir', '$ancho', '$alto', '$tamanoarchivo')";
        
$result mysql_query($sSQL);
        
header ("Location: admin_area.php");
    } else {
        echo 
"No se ha podido cargar la imagen";
    }
    } else {
        echo 
"La imagen tiene más de $tamanomax bytes y es muy pesada!";
    }
    } else {
        echo 
"No es una imagen JPG o PNG";
    }
    }
}
    
$filehandle opendir($ruta);

    while (
$file readdir($filehandle)) {
        if (
$file != "." && $file != "..") {
            
$tamano GetImageSize ($ruta $file);
            echo 
"<p><img src='$ruta$file' $tamano[3]><br></p>\n";
        }
    }
    
closedir($filehandle);
?>
Obviamente debo insertarlo en la consulta
Código PHP:
<?php
        $sSQL 
"INSERT INTO fotos (id, codigo, imagen, dir, ancho, alto, peso, ppal) VALUES ('', '".$_POST['codigo']."', '$nombrearchivo', '$dir', '$ancho', '$alto', '$tamanoarchivo', '')";
        
$result mysql_query($sSQL);
?>
Pero no se, debo declarar alguna variable para ese campo o algo así?
  #5 (permalink)  
Antiguo 25/09/2009, 12:56
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Respuesta: Ayuda consulta a 2 tablas con campo comun

He encontrado mucha info sobre campos booleanos pero no termino de encontrar la manera de guardar si viene de un array
  #6 (permalink)  
Antiguo 28/09/2009, 01:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Ayuda consulta a 2 tablas con campo comun

Mandanos "addCampo()" para ver como creas el array....

Mientras esto te puede dar pistas....

Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
var matriu=new Array(5);
function inserta(){
for (i=0;i<5;i++){
	var parell=new Array(2);
	parell[0]=document.getElementById("c"+i).value;
	if (document.getElementById("v"+i).checked){
		parell[1]=true;
	}else{
	parell[1]=false;
	}
	matriu[i]=parell;
}
}

function mostra(){
var resultat="";
for (i=0;i<5;i++){
	resultat+=matriu[i][0] + "&nbsp;" +  matriu[i][1] + "<br>";
}
document.getElementById("resultats").innerHTML=resultat;
}
</script>
</head>
<body>
<form action="" method="get" name="form1">
<input name="c0" type="text" id="c0" value="1">&nbsp;<input name="v0" type="checkbox" id="v0" value="false"><br>
<input name="c1" type="text" id="c1" value="2">&nbsp;<input name="v1" type="checkbox" id="v1" value="false"><br>
<input name="c2" type="text" id="c2" value="3">&nbsp;<input name="v2" type="checkbox" id="v2" value="false"><br>
<input name="c3" type="text" id="c3" value="4">&nbsp;<input name="v3" type="checkbox" id="v3" value="false"><br>
<input name="c4" type="text" id="c4" value="5">&nbsp;<input name="v4" type="checkbox" id="v4" value="false"><br>
<input name="" type="button" onClick="inserta();mostra()" value="Enter">
</form>
<span id="resultats">&nbsp;</span>
</body>
</html> 
Quim
  #7 (permalink)  
Antiguo 07/12/2010, 07:51
 
Fecha de Ingreso: agosto-2010
Ubicación: Bogotá
Mensajes: 1
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Ayuda consulta a 2 tablas con campo comun

Lastimosamente Tengo que usar este medio para por lo menos evitar que alguien más termine robado y engañado en su buena fe.

Este Sr. Irving Arrieta de Venezuela, que en la actualidad vive en Colombia prometió realizar un trabajo Web y yo en mi ignorancia le adelante un dinero (1.100 dólares americanos) y este Sr. lo único que me dejo fue el bolsillo con menos dinero. No hagan negocios con él; pueden investigar más y verán que no soy el único al que ha robado.

Espero no les suceda lo mismo

Gracias
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 16:11.