Foros del Web » Programando para Internet » PHP »

php select inner join

Estas en el tema de php select inner join en el foro de PHP en Foros del Web. Hola muchachos, soy nuevo en el foro estoy aprendiendo a programar y es por eso que los molesto con una pavada, y los voy a ...
  #1 (permalink)  
Antiguo 12/04/2011, 13:06
Avatar de elpibe_tigre  
Fecha de Ingreso: abril-2011
Mensajes: 15
Antigüedad: 13 años
Puntos: 0
php select inner join

Hola muchachos, soy nuevo en el foro
estoy aprendiendo a programar y es por eso que los molesto con una pavada, y los voy a seguir consultando si es que me lo permiten

les cuento, tengo una base de datos en la cual tengo cargado las provincias y otra tabla en la cual tengo cargadas localidades.
la tabla localidades tiene una clave foranea que relaciona a esta, con la tabla provincias.

necesito poder seleccionar de un combobox una provincia cualquiera y me tiene que devolver en otra pagina las localidades existentes de esa provincia
tengo hecho lo siguiente (ya se que esta super incompleto pero por eso les consulto porque no se como seguir y quiero aprender)

Código PHP:
<?php
    $conexion
=mysql_connect('localhost','root','');
    
mysql_select_db('videoclub',$conexion)
    or die (
"no se ha podido conectar"); 
?>

<select name= provincias>
    <?php
        $consulta
=mysql_query('SELECT id_provincia, nombre FROM PROVINCIAS',$conexion);
        while (
$fila=mysql_fetch_array($consulta))
        {
            echo
"<option value=".$fila['id_provincia'].">".$fila['nombre']."</option>";
        }
        
mysql_close($conexion);
    
?>
</select>
ahi esta hecha la conexion con la base de datos y el combobox que me carga perfectamente las provincias.
el temas es qe no se como hacer para que pase el id_provincia, los compare en la tabla de localidades y las muestre

hice esto pero me sale error

Código PHP:
<?php
    $consul
=mysql_query('SELECT LOCALIDADES.NOMBRE FROM LOCALIDADES INNER JOIN PROVINCIAS ON LOCALIDADES.ID_PROVINCIA = PROVINCIAS.ID_PROVINCIA WHERE PROVINCIAS.ID_PROVINCIA == 1',$conexion);
    while (
$con=mysql_fetch_array($consul))
    {
        echo 
$con['nombre'];
    }
?>
puse ese 1 para ver si me mostraba algo pero no pasa nada, solo el mensaje de error que dice:

Warning: mysql_query(): 3 is not a valid MySQL-Link resource in C:\xampp\htdocs\consultas.php on line 19
(linea 19--> $consul=mysql_query('SELECT LOCALIDADES.NOMBRE FROM LOCALIDADES INNER JOIN PROVINCIAS ON LOCALIDADES.ID_PROVINCIA = PROVINCIAS.ID_PROVINCIA WHERE PROVINCIAS.ID_PROVINCIA == 1',$conexion);
)

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\consultas.php on line 20

Gracias por su ayuda!
  #2 (permalink)  
Antiguo 12/04/2011, 16:39
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: php select inner join

elpibe_tigre, bienvenido a FDW.

El problema es que la consulta no se ejecuta porque hay un error, para saber de que se trata:

$consul = mysql_query($consulta) or die('Error en la consulta: ' . myxql_error());
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 13/04/2011, 05:49
Avatar de elpibe_tigre  
Fecha de Ingreso: abril-2011
Mensajes: 15
Antigüedad: 13 años
Puntos: 0
Respuesta: php select inner join

Hola, bueno antes que nada, gracias por responder.
Hice varios cambios, por empezar, me di cuenta que el inner join era inncesario, asique lo eliminé, y ahora comparo la provincia con lo que selecciona el usuario de un combobox
me quedo esto

mostrarciudades.php
Código PHP:
Ver original
  1. <form action="pag3.php" method="post">
  2.     seleccione una provincia<br>
  3.     <select name= provincias>
  4.     <?php
  5.         $consulta=mysql_query('SELECT id_provincia, nombre FROM PROVINCIAS',$conexion);
  6.         while ($fila=mysql_fetch_array($consulta))
  7.         {
  8.             echo"<option value=".$fila['id_provincia'].">".$fila['nombre']."</option>";
  9.         }
  10.         mysql_close($conexion);
  11.     ?>
  12.     </select>
  13.     <input type="submit" value="enviar">
  14. </form>

pag3.php
Código PHP:
Ver original
  1. <?php
  2.     $conexion=mysql_connect('localhost','root','');
  3.     mysql_select_db('videoclub',$conexion)
  4.     or die ("no se ha podido conectar");
  5.  
  6.     $query=mysql_query("SELECT NOMBRE FROM LOCALIDADES WHERE ID_PROVINCIA == '$_REQUEST[provincias]",$conexion);
  7.         while ($fila=mysql_fetch_array($query))
  8.         {
  9.             echo $fila['nombre'];
  10.         }
  11.        
  12.     mysql_close($conexion);
  13. ?>

Pero tengo un error en este ultimo archivo

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\pag3.php on line 7

linea 7-->while ($fila=mysql_fetch_array($query))

alguna sugerencia?
  #4 (permalink)  
Antiguo 13/04/2011, 06:47
 
Fecha de Ingreso: diciembre-2010
Mensajes: 28
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: php select inner join

Disculpa por la pregunta ... pero lo que quieres es hacer una lista de provincias y de localidades... de tal forma que el listado de localidades sea segun la provincia q escoja ???
  #5 (permalink)  
Antiguo 13/04/2011, 06:51
Avatar de elpibe_tigre  
Fecha de Ingreso: abril-2011
Mensajes: 15
Antigüedad: 13 años
Puntos: 0
Respuesta: php select inner join

Cita:
Iniciado por royerromero Ver Mensaje
Disculpa por la pregunta ... pero lo que quieres es hacer una lista de provincias y de localidades... de tal forma que el listado de localidades sea segun la provincia q escoja ???
Hola. gracias por responderme

mira la idea es que seleccione una provinca y que arroje como resultado las localidades de ella.
  #6 (permalink)  
Antiguo 13/04/2011, 07:05
 
Fecha de Ingreso: diciembre-2010
Mensajes: 28
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: php select inner join

Dame nombres de las tablas y nombre de las columnas y te ayudo...
  #7 (permalink)  
Antiguo 13/04/2011, 07:10
Avatar de elpibe_tigre  
Fecha de Ingreso: abril-2011
Mensajes: 15
Antigüedad: 13 años
Puntos: 0
Respuesta: php select inner join

Cita:
Iniciado por royerromero Ver Mensaje
Dame nombres de las tablas y nombre de las columnas y te ayudo...
muchisimas gracias!!

bueno estas son las tablas

Provincias
ID_PROVINCIA int(11)
NOMBRE varchar(30)

Localidades

ID_LOCALIDAD int(11)
ID_PROVINCIA int(11)
NOMBRE varchar(30)
CODIGO_POSTAL varchar(10)
  #8 (permalink)  
Antiguo 13/04/2011, 07:29
 
Fecha de Ingreso: diciembre-2010
Mensajes: 28
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: php select inner join

LISTO MEN .... PROBADO Y FUNCIONANDO !!!!!
asi ?? [URL="http://www.royerssuperclassic.com/R&RContadores/Datos.php"]http://www.royerssuperclassic.com/R&RContadores/Datos.php[/URL]
chequealo !!!


y este es el codigo


<?php

mysql_select_db($BaseDeDatos, $Conexion);
echo "<script language='JavaScript'>\n";
$sql="SELECT ID_PROVINCIA FROM provincias";
$rs= mysql_query($sql);
while ($reg=mysql_fetch_array($rs)){
$cd=$reg['ID_PROVINCIA'];
echo "var localidades_".$cd."=new Array(";
$sql1="SELECT NOMBRE FROM localidades WHERE ID_PROVINCIA=".$cd;
$rs1=mysql_query($sql1);
$filas=mysql_num_rows($rs1);
for ($i=0;$i<$filas;$i++) {
$Ciu=mysql_result($rs1,$i,'NOMBRE');
$Ciuhtml=htmlentities($Ciu);
if ($i==0)
echo "'".$Ciu."'";
else
echo ",'".$Ciu."'";
};
echo ");\n";
}
echo "
function ver_localidades(){\n
var dpto
dpto = f1.sDep[document.f1.sDep.selectedIndex].value
mis_localidadess=eval('localidades_' + dpto)
num_Ciu = mis_localidadess.length
document.f1.sCiu.length = num_Ciu
for(i=0;i<num_Ciu;i++){
f1.sCiu.options[i].value=mis_localidadess[i]
f1.sCiu.options[i].text=mis_localidadess[i]
}
}\n";
echo "</script>";
?>

//LISTADO PROVINCIA
<form name="f1" id="f1">

<select name="sDep" id="sDep" onchange='ver_localidades()'>
<option value="-1">Seleccione</option>
<?php
$rs=mysql_query("SELECT * FROM provincias");
while ($reg=mysql_fetch_assoc($rs)) {
$cd=$reg['ID_PROVINCIA'];
$dd=$reg['NOMBRE'];
echo "<option value=$cd>$dd</option>";
}
?>
</select>

<br>
//LISTADO LOCALIDAD
<br>
<select name='sCiu' id="sCiu">
</select>

</form>
  #9 (permalink)  
Antiguo 13/04/2011, 07:32
 
Fecha de Ingreso: diciembre-2010
Mensajes: 28
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: php select inner join

si te sirve ... dame karma !!!! =D
  #10 (permalink)  
Antiguo 13/04/2011, 07:48
Avatar de elpibe_tigre  
Fecha de Ingreso: abril-2011
Mensajes: 15
Antigüedad: 13 años
Puntos: 0
Respuesta: php select inner join

Cita:
Iniciado por royerromero Ver Mensaje
LISTO MEN .... PROBADO Y FUNCIONANDO !!!!!
asi ?? [URL="http://www.royerssuperclassic.com/R&RContadores/Datos.php"]http://www.royerssuperclassic.com/R&RContadores/Datos.php[/URL]
chequealo !!!


y este es el codigo


<?php

mysql_select_db($BaseDeDatos, $Conexion);
echo "<script language='JavaScript'>\n";
$sql="SELECT ID_PROVINCIA FROM provincias";
$rs= mysql_query($sql);
while ($reg=mysql_fetch_array($rs)){
$cd=$reg['ID_PROVINCIA'];
echo "var localidades_".$cd."=new Array(";
$sql1="SELECT NOMBRE FROM localidades WHERE ID_PROVINCIA=".$cd;
$rs1=mysql_query($sql1);
$filas=mysql_num_rows($rs1);
for ($i=0;$i<$filas;$i++) {
$Ciu=mysql_result($rs1,$i,'NOMBRE');
$Ciuhtml=htmlentities($Ciu);
if ($i==0)
echo "'".$Ciu."'";
else
echo ",'".$Ciu."'";
};
echo ");\n";
}
echo "
function ver_localidades(){\n
var dpto
dpto = f1.sDep[document.f1.sDep.selectedIndex].value
mis_localidadess=eval('localidades_' + dpto)
num_Ciu = mis_localidadess.length
document.f1.sCiu.length = num_Ciu
for(i=0;i<num_Ciu;i++){
f1.sCiu.options[i].value=mis_localidadess[i]
f1.sCiu.options[i].text=mis_localidadess[i]
}
}\n";
echo "</script>";
?>

//LISTADO PROVINCIA
<form name="f1" id="f1">

<select name="sDep" id="sDep" onchange='ver_localidades()'>
<option value="-1">Seleccione</option>
<?php
$rs=mysql_query("SELECT * FROM provincias");
while ($reg=mysql_fetch_assoc($rs)) {
$cd=$reg['ID_PROVINCIA'];
$dd=$reg['NOMBRE'];
echo "<option value=$cd>$dd</option>";
}
?>
</select>

<br>
//LISTADO LOCALIDAD
<br>
<select name='sCiu' id="sCiu">
</select>

</form>
muchisimas gracias por la ayuda, el script esta buenisimo, pero no es justamente lo que necesito...

yo lo que tengo es un combo donde estan cargadas las provincias al seleccionar una de ellas envio hacia otra pagina (pag3.php) el id de esa provincia y tengo que buscar ahi mismo las localidades cuyo ip_provincia sea igual al que viene del la pagina anterior (mostrarciudades.php)

yo tengo hecho esto
mostrarciudades.php
Código PHP:
<form action="pag3.php" method="post">
    seleccione una provincia<br>
    <select name= provincias>
    <?php
        $consulta
=mysql_query('SELECT id_provincia, nombre FROM PROVINCIAS',$conexion);
        while (
$fila=mysql_fetch_array($consulta))
        {
            echo
"<option value=".$fila[id_provincia].">".$fila['nombre']."</option>";
        }
        
mysql_close($conexion);
    
?>
    </select>
    <input type="submit" value="enviar">
</form>
pag3.php

Código PHP:
$consulta=mysql_query("SELECT NOMBRE FROM LOCALIDADES WHERE ID_PROVINCIA = $_REQUEST[provincias]",$conexion);
        
$resultado mysql_query($consulta)or die( "Error en $consulta: " mysql_error() );
        while (
$fila mysql_fetch_array($resultado))
        {
            echo 
$fila['nombre']."<br>";
        }
        
    
mysql_close($conexion); 
pero cuando lo ejecuto me sale el siguiente error

Warning: mysql_query() expects parameter 1 to be string, resource given in C:\xampp\htdocs\pag3.php on line 15
Error en Resource id #4:

linea 15 --> $resultado = mysql_query($consulta)or die( "Error en $consulta: " . mysql_error() );

bueno desde ya Muchas GRACIAS por la mano que me estas dando!!
  #11 (permalink)  
Antiguo 13/04/2011, 08:04
 
Fecha de Ingreso: diciembre-2010
Mensajes: 28
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: php select inner join

ps men lo q puedo ver .. es q no se bn sobre JOIN pero en este caso no hay necesidad .. lo unico que hay q hacer es en

mostrarciudades.php

<form action="pag3.php?id_provincia=<?php echo $fila[id_provincia];?>" method="post">

lo que hace es pasar un parametro por la URL q en este caso seria el ID de la provincia

y en la otra pagina pag3.php hay que recojerlo


pag3.php

$consulta=mysql_query("SELECT NOMBRE FROM LOCALIDADES WHERE ID_PROVINCIA = $_GET['id_provincia'],$conexion);

avisame si te sirve !!!
  #12 (permalink)  
Antiguo 13/04/2011, 09:06
Avatar de elpibe_tigre  
Fecha de Ingreso: abril-2011
Mensajes: 15
Antigüedad: 13 años
Puntos: 0
Respuesta: php select inner join

Cita:
Iniciado por royerromero Ver Mensaje
ps men lo q puedo ver .. es q no se bn sobre JOIN pero en este caso no hay necesidad .. lo unico que hay q hacer es en

mostrarciudades.php

<form action="pag3.php?id_provincia=<?php echo $fila[id_provincia];?>" method="post">

lo que hace es pasar un parametro por la URL q en este caso seria el ID de la provincia

y en la otra pagina pag3.php hay que recojerlo


pag3.php

$consulta=mysql_query("SELECT NOMBRE FROM LOCALIDADES WHERE ID_PROVINCIA = $_GET['id_provincia'],$conexion);

avisame si te sirve !!!
hice los cambios que me sugeriste y quedo asi

mostrarciudades.php
Código PHP:
<form action="pag3-2.php?id_provincia=<?php echo $fila[id_provincia];?>" method="post">
    seleccione una provincia<br>
    <select name= provincias>
    <?php
        $consulta
=mysql_query('SELECT id_provincia, nombre FROM PROVINCIAS',$conexion);
        while (
$fila=mysql_fetch_array($consulta))
        {
            echo
"<option value=".$fila['id_provincia'].">".$fila['nombre']."</option>";
        }
        
mysql_close($conexion);
    
?>
    </select>
    <input type="submit" value="enviar">
</form>
pag3-2.php
Código PHP:
<?php
    $conexion
=mysql_connect('localhost','root','');
    
mysql_select_db('videoclub',$conexion)
    or die (
"no se ha podido conectar"); 
    
    
    
$consulta=mysql_query("SELECT NOMBRE FROM LOCALIDADES WHERE ID_PROVINCIA = $_GET['id_provincia']",$conexion);
        
$resultado mysql_query($consulta)or die( "Error en $consulta: " mysql_error() );
        while (
$fila mysql_fetch_array($resultado))
        {
            echo 
$fila['nombre']."<br>";
        }
        
    
mysql_close($conexion);
?>
pero sigo teniendo problemas...
esto es lo que me dice
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\htdocs\pag3-2.php on line 7
  #13 (permalink)  
Antiguo 13/04/2011, 14:18
 
Fecha de Ingreso: diciembre-2010
Mensajes: 28
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: php select inner join

men primero q todo tienes un error en pag3-2.php


elimina la linea

$resultado = mysql_query($consulta)or die( "Error en $consulta: " . mysql_error() );


y en la siguiente arregla

$resultado ---> $consulta


y por otro lado fijate si esta trayendo el id_provincia en la URL
  #14 (permalink)  
Antiguo 13/04/2011, 14:41
 
Fecha de Ingreso: diciembre-2010
Mensajes: 28
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: php select inner join

mira men este es el codigo funcionando

---mostrarciudades.php---

<form action="pag3-2.php?$_POST['provincias']">
seleccione una provincia
<select name="provincias">
<?php

mysql_select_db($database, $Conexion);
$consulta=mysql_query('SELECT id_provincia, nombre FROM PROVINCIAS',$RRContadores);
while ($fila=mysql_fetch_array($consulta))
{
echo"<option value=".$fila['id_provincia'].">".$fila['nombre']."</option>";
}
mysql_close($Conexion);
?>
</select>
<input type="submit" value="enviar">
</form>


-----pag3-2.php----


<?php

mysql_select_db($database, $Conexion);
$consulta=mysql_query("SELECT NOMBRE FROM LOCALIDADES WHERE ID_PROVINCIA=$_GET[provincias]", $Conexion);
while ($fila = mysql_fetch_array($consulta))
{
echo $fila['NOMBRE']."<br>";
}

mysql_close($Conexion);
?>
  #15 (permalink)  
Antiguo 13/04/2011, 14:42
 
Fecha de Ingreso: diciembre-2010
Mensajes: 28
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: php select inner join

este es el resultado ... avisame !!!


http://www.royerssuperclassic.com/R&RContadores/mostrarciudades.php
  #16 (permalink)  
Antiguo 13/04/2011, 19:36
Avatar de elpibe_tigre  
Fecha de Ingreso: abril-2011
Mensajes: 15
Antigüedad: 13 años
Puntos: 0
Respuesta: php select inner join

Cita:
Iniciado por royerromero Ver Mensaje
este es el resultado ... avisame !!!


http://www.royerssuperclassic.com/R&RContadores/mostrarciudades.php
eso es exactamente lo que estaba intentando hacer!!!!

pero sigo teniendo problema, y creo que esta en la comparacion ya el parametro que viene de mostrarciudades, es decir el id de la provincia, lo pasa perfectamente y para comprobarlo hice que lo imprima en pantalla antes del select

me sale este error

Notice: Undefined index: nombre in C:\xampp\htdocs\pag4.php on line 17

asi quedo
Código PHP:
Ver original
  1. <?php
  2.     $conexion=mysql_connect('localhost','root','');
  3.     mysql_select_db('videoclub',$conexion)
  4.     or die ("no se ha podido conectar");
  5.  
  6.    
  7.     echo $_REQUEST['provincias'];
  8.    
  9.     echo $_REQUEST['provincias'];
  10.    
  11.     echo $_REQUEST['provincias'];
  12.    
  13.    
  14.     $consulta=mysql_query('SELECT NOMBRE FROM LOCALIDADES WHERE ID_PROVINCIA= 7', $conexion);
  15.         while ($fila = mysql_fetch_array($consulta))
  16.         {
  17.             echo $fila['nombre']."<br>";
  18.         }
  19.        
  20.     mysql_close($conexion);
  21. ?>


desde ya quiero agradecer a todos uds que me han dado esta mano.
los voy a calificar como se merecen!
  #17 (permalink)  
Antiguo 14/04/2011, 06:58
 
Fecha de Ingreso: diciembre-2010
Mensajes: 28
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: php select inner join

men ... revisa el codigo q te habia dejado ...

es el mismo q tengo en el ejemplo funcionando y todo ..


Código PHP:
<form action="pag3-2.php?$_POST['provincias']">
seleccione una provincia
<select name="provincias">
<?php

mysql_select_db
($database$Conexion);
$consulta=mysql_query('SELECT id_provincia, nombre FROM PROVINCIAS',$RRContadores);
while (
$fila=mysql_fetch_array($consulta))
{
echo
"<option value=".$fila['id_provincia'].">".$fila['nombre']."</option>";
}
mysql_close($Conexion);
?>
</select>
<input type="submit" value="enviar">
</form>


-----pag3-2.php----


<?php

mysql_select_db
($database$Conexion);
$consulta=mysql_query("SELECT NOMBRE FROM LOCALIDADES WHERE ID_PROVINCIA=$_GET[provincias]"$Conexion);
while (
$fila mysql_fetch_array($consulta))
{
echo 
$fila['NOMBRE']."<br>";
}

mysql_close($Conexion);
?>
  #18 (permalink)  
Antiguo 14/04/2011, 07:30
Avatar de elpibe_tigre  
Fecha de Ingreso: abril-2011
Mensajes: 15
Antigüedad: 13 años
Puntos: 0
Respuesta: php select inner join

Hola, bueno te cuento que ahora lo hice andar, gracias por la ayuda que me dieron!!!
tenia un error ortografico! MUCHAS GRACIAS

Etiquetas: join, select
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:53.