Foros del Web » Programando para Internet » PHP »

mostrar registros asociados por ID de registro

Estas en el tema de mostrar registros asociados por ID de registro en el foro de PHP en Foros del Web. hola amigos llevo liado en esto ya como 2 dias y no encuentro la forma correcta de hacer esta consulta : yo tengo 2 tablas ...
  #1 (permalink)  
Antiguo 09/07/2011, 13:04
 
Fecha de Ingreso: mayo-2011
Mensajes: 59
Antigüedad: 13 años, 6 meses
Puntos: 1
Sonrisa mostrar registros asociados por ID de registro

hola amigos llevo liado en esto ya como 2 dias y no encuentro la forma correcta de hacer esta consulta :

yo tengo 2 tablas

--------------------------------------------------
TABLA 1

ID l nombre l imagen

TABLA 2

id_capitulo l id_anime l nombre_capitulo

---------------------------------

id_anime esta relacionado con el ID de la TABLA 1 para identificar a q registro pertenece el otro ..

id_capitulo es el registro del episodio xx tal

el problema viene aqui cuando estoy listando una pagina por id_capitulo

- 6 formar parte de un registro de id_capitulo


yo quiero obtener los registros que hay para el ID de la TABLA 1 que esta relacionada con id_capitulo por medio del id_anime

Código MySQL:
Ver original
  1. SELECT * FROM animes INNER JOIN capitulos ON animes.id=capitulos.id_anime where id_capitulo =".$_id

cada vez que hago una consulta me muestra los registros correctamente pero por el id_capitulo (del episodio) ... yo quisiera que se muestre los registros que hay para el ID de la TABLA 1 pero que de una forma tienen relacion con id_capitulo

perdon si los maree me puedan ayudar con una logica para poder realizarlo ...
  #2 (permalink)  
Antiguo 09/07/2011, 13:09
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: mostrar registros asociados por ID de registro

Utiliza left join: http://www.tizag.com/mysqlTutorial/mysqlleftjoin.php
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 09/07/2011, 14:43
 
Fecha de Ingreso: mayo-2011
Mensajes: 59
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: mostrar registros asociados por ID de registro

la verdadera url de la pagina vendria a ser :

ahy viene el problema creo yo ... , ya que si me funciona perfecto por el id la idea de mi problema es como obtener el ID del id_capitulo que se esta viendo ...
  #4 (permalink)  
Antiguo 09/07/2011, 15:01
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mostrar registros asociados por ID de registro

SELECT * FROM animes,capitulos WHERE animes.id=capitulos.id

Saludos
  #5 (permalink)  
Antiguo 09/07/2011, 16:59
 
Fecha de Ingreso: mayo-2011
Mensajes: 59
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: mostrar registros asociados por ID de registro

gracias marco al final use una query para extraer el id_anime del episodio y luego la guarde en la variable $idx

la imprimi en mi php , y luego la depure en phpmyadmin y me muestra el numero correcto

Código MySQL:
Ver original
  1. SELECT * FROM capitulos WHERE id_anime= 1

yo creo que tengo una error de sintaxis cuando lo aplico en mi codigo

Código MySQL:
Ver original
  1. SELECT * FROM capitulos where id_anime = '".$idx."'");

no me muestra nada
  #6 (permalink)  
Antiguo 09/07/2011, 17:37
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: mostrar registros asociados por ID de registro

Podrías poner la query con todo y lo de mysql_query... blah blah blah?
Igual puede ser error de comillas

De una u otra forma, también debuggea (pon la query algo así):
Código PHP:
mysql_query("Tu query") or die (mysql_error()); 
Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #7 (permalink)  
Antiguo 09/07/2011, 18:34
 
Fecha de Ingreso: mayo-2011
Mensajes: 59
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: mostrar registros asociados por ID de registro

la query que realizo es esta... para sacar el id_anime

Código MySQL:
Ver original
  1. <?php
  2. $idepisodio = $_GET['id'];
  3. $sql = "SELECT * FROM capitulos WHERE( id_capitulo = '".$idepisodio."' );";
  4. $result= mysql_query($sql)or die (mysql_error());  
  5.  if(!$result){
  6.   print "Error al ejecutar la query.";
  7.  }
  8. $row = mysql_fetch_array($result, MYSQL_ASSOC);
  9. $idx=$row["id_anime"] ;
  10. ?>

hasta ahy me va bien luego imprimo $row["id_anime"] o $idx y me muestra el numero que quiero que muestre...

ahora lo pruebo en una funcion que usare para listar los registros que contenga
y no me va...

Código PHP:
function listar_v($_id=0){
$ex mysql_query("SELECT * FROM capitulos where id_anime = '".$idx."'");
if(
mysql_num_rows($ex) > 0){
while (
$i mysql_fetch_assoc($ex)){
$anime[] = array("CAPITULO"=>'si',"nom"=>$i['nombre'],"descrip"=>$i['descripccion'],"id_cap"=>$i['id_capitulo'],"img"=>$i['imagen'],"nom_capitulo"=>$i['nombre_capitulo'],"n_capitulo"=>$i['numero_capitulo'],"prox"=>$i['proximo_c'],"embed"=>$i['embed'],"url"=>$i['url'],"id_cap"=>$i['id_capitulo']);
}
}else{
$anime[] = array("CAPITULO"=>'no');
}
mysql_free_result($ex);
return 
$anime;

  #8 (permalink)  
Antiguo 09/07/2011, 18:40
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: mostrar registros asociados por ID de registro

Sabes como usar variables externas dentro de una función? Te recomiendo leer esto:
http://www.php.net/manual/es/languag...bles.scope.php

En la sección "La palabra clave global"

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #9 (permalink)  
Antiguo 09/07/2011, 19:05
 
Fecha de Ingreso: mayo-2011
Mensajes: 59
Antigüedad: 13 años, 6 meses
Puntos: 1
Pregunta Respuesta: mostrar registros asociados por ID de registro

gracias sourcegeek pero el problema no va por ahy ... ya he testeado muy bien esta consulta en esa funcion

Código MySQL:
Ver original
  1. SELECT * FROM animes INNER JOIN capitulos ON animes.id=capitulos.id_anime where id =2");

y si muestra los datos correctame para el numero 2

pero cuando hago esto..

Código MySQL:
Ver original
  1. SELECT * FROM animes INNER JOIN capitulos ON animes.id=capitulos.id_anime where id ='".$idx."'");

no me muestra nada , creo tener claramente un error de sintaxis en esa linea pero no lo hallo suponiendo que $idx me muestra un numero correcto con la query que mencione arriba

Última edición por simpleplan_874; 09/07/2011 a las 19:11
  #10 (permalink)  
Antiguo 09/07/2011, 19:23
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: mostrar registros asociados por ID de registro

Pero claro que 'va por ahí'. Leíste bien el link que te dí? Observas la diferencia entre ambas consultas?
En la primera NO usas variables, pero en la segunda si, incluso una variable que no haz globalizado. Por consecuencia, la función NO puede acceder a tal variable.
Y si sigues creyendo que eso no es, dentro de la función haz echo $idx, no imprimirá nada

Ahora sí te diste cuenta?
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #11 (permalink)  
Antiguo 09/07/2011, 22:48
 
Fecha de Ingreso: mayo-2011
Mensajes: 59
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: mostrar registros asociados por ID de registro

gracias sourcegeek con ese link que me diste de alguna forma logre comprender como globalizar una variable $ en todas las paginas o al menos eso creo

Código PHP:
Ver original
  1. function idepisodio() {
  2.    $idcapii = $_GET['id'];
  3. $sql = "SELECT * FROM capitulos WHERE( id_capitulo = '".$idcapi."' );";
  4. $result= mysql_query($sql)or die (mysql_error());  
  5.  if(!$result){
  6.   print "Error al ejecutar la query.";
  7.  }
  8. $row = mysql_fetch_array($result, MYSQL_ASSOC);
  9. $idx=$row["id_anime"] ;
  10.     return $idx;
  11. }
  12. $idx = idepisodio();
  13. echo $idx; //
  14. ?>
haciendo eso me imprime $idx en cualquier pagina , pero sigo sin que esta consulta me tome el numero que imprime $idx ahora creo que si ya seria un error de comillas mmm

Código MySQL:
Ver original
  1. SELECT * FROM animes INNER JOIN capitulos ON animes.id=capitulos.id_anime WHERE id ='".$idx."'");

un saludo hasta hora voy por buen camino solo eso
  #12 (permalink)  
Antiguo 10/07/2011, 02:37
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: mostrar registros asociados por ID de registro

Aquí:

Código PHP:
$idcapii $_GET['id'];
$sql "SELECT * FROM capitulos WHERE( id_capitulo = '".$idcapi."' );"
No crees que....
$idcapii != $idcapi ??
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #13 (permalink)  
Antiguo 10/07/2011, 11:47
 
Fecha de Ingreso: mayo-2011
Mensajes: 59
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: mostrar registros asociados por ID de registro

ups , ese fue un error mio al escribirlo aqui eran las 12 o mas cuando lo hize , de echo el codigo imprime bien en cualquier pagina que escriba echo $idx

por eso lo raro de que no funcione en mi consulta

Código MySQL:
Ver original
  1. SELECT * FROM animes INNER JOIN capitulos ON animes.id=capitulos.id_anime WHERE id ='".$idx."'");
  #14 (permalink)  
Antiguo 10/07/2011, 11:51
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mostrar registros asociados por ID de registro

Que error te tira ?
  #15 (permalink)  
Antiguo 10/07/2011, 12:04
 
Fecha de Ingreso: mayo-2011
Mensajes: 59
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: mostrar registros asociados por ID de registro

no hay ningun error solo simplemente lo muestra vacio...


si hago una consulta directamente por un numero x , me muestra el registro que quiero
Código MySQL:
Ver original
  1. SELECT * FROM animes INNER JOIN capitulos ON animes.id=capitulos.id_anime WHERE id =2");

pero si empiezo a usar una variable que ya esta globalizada $idx que da como resultado un numero no me muestra nada al ejecutar la siguiente consulta,
para ustedes estaria correcto hacer esta consulta cuando llaman a una variable ?
Código MySQL:
Ver original
  1. SELECT * FROM animes INNER JOIN capitulos ON animes.id=capitulos.id_anime WHERE id ='".$idx."'");
  #16 (permalink)  
Antiguo 10/07/2011, 12:49
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mostrar registros asociados por ID de registro

aver deja todo el código completo que tenes hasta ahora
  #17 (permalink)  
Antiguo 10/07/2011, 13:49
 
Fecha de Ingreso: mayo-2011
Mensajes: 59
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: mostrar registros asociados por ID de registro

pues es mas o menos asi

Funciones.php

Código PHP:
Ver original
  1. <?php
  2. require"Configurar.php";
  3.  
  4.  
  5. ///obtenemos el id del episodio
  6.  
  7. function idepisodio() {
  8.    $idVariable = $_GET['id'];
  9. $sql = "SELECT * FROM capitulos WHERE( id_capitulo = '".$idVariable."' );";
  10. $result= mysql_query($sql)or die (mysql_error());  
  11.  if(!$result){
  12.   print "Error al ejecutar la query.";
  13.  }
  14. $row = mysql_fetch_array($result, MYSQL_ASSOC);
  15. $idx=$row["id_anime"] ;
  16.     return $idx;
  17. }
  18. $idx = idepisodio();
  19. echo $idx;
  20.  
  21. //
  22. // funcion para listar episodios
  23. function listar_v($_id=0){
  24. $ex = mysql_query("SELECT * FROM animes INNER JOIN capitulos ON animes.id=capitulos.id_anime  WHERE id = '".$idx."'");
  25. if(mysql_num_rows($ex) > 0){
  26. while ($i = mysql_fetch_assoc($ex)){
  27. $anime[] = array("CAPITULO"=>'si',"nom"=>$i['nombre'],"descrip"=>$i['descripccion'],"id_cap"=>$i['id_capitulo'],"img"=>$i['imagen'],"nom_capitulo"=>$i['nombre_capitulo'],"n_capitulo"=>$i['numero_capitulo'],"prox"=>$i['proximo_c'],"embed"=>$i['embed'],"url"=>$i['url'],"id_cap"=>$i['id_capitulo']);
  28. }
  29. }else {
  30. $anime[] = array("CAPITULO"=>'no');
  31. }
  32. return $anime;
  33. }

y en Animes2.php

Código PHP:
Ver original
  1. <?php
  2. ### Seguridad ###
  3. if($_POST){
  4.     $_POST =& LimpiarTodo($_POST);
  5. }
  6. if($_GET){
  7.     $_GET =& LimpiarTodo($_GET);
  8. }
  9. ### Seguridad  ###
  10. //
  11. require_once"Procedi/Configurar.php";
  12. require_once"Procedi/Funciones.php";
  13.  
  14. $anime = episodio_v($_GET['id']);
  15. $animeX = $anime;
  16. $animex=$anime;
  17. foreach ($animex as $anime){}
  18. if($anime['CAPITULO'] == 'no'){
  19. redireccionar();
  20. }
  21. $anime1 = listar_v($_GET['id']);
  22. $animeX1 = $anime1;
  23. $animex1=$anime1;
  24. foreach ($animex1 as $anime1){}
  25. if($anime1['ANIME1'] == 'no'){
  26. redireccionar();
  27. }
  28. //
  29. ?>
  30. <!--- mostramos los registros construyendo las url amigables ---!>
  31. <?php
  32. foreach ($animeX1 as $x){
  33. echo "<a href=\"episodio/".$x['id_cap']."/".hacer_url($x['nom'])."_".hacer_url($x['nom_capitulo']).".html\">".$x['nom']." - ".ucwords($x['nom_capitulo'])."</a>";
  34. }
  35. ?>

un saludo

Última edición por simpleplan_874; 10/07/2011 a las 14:04
  #18 (permalink)  
Antiguo 10/07/2011, 15:11
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: mostrar registros asociados por ID de registro

Y volvemos a lo mismo...
Código PHP:
function listar_v($_id=0){
$ex mysql_query("SELECT * FROM animes INNER JOIN capitulos ON animes.id=capitulos.id_anime  WHERE id = '".$idx."'"); 
De dónde obtienes $idx si NO estás globalizando dicha variable?
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #19 (permalink)  
Antiguo 10/07/2011, 15:40
 
Fecha de Ingreso: mayo-2011
Mensajes: 59
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: mostrar registros asociados por ID de registro

Cita:
Iniciado por Sourcegeek Ver Mensaje
Y volvemos a lo mismo...
Código PHP:
function listar_v($_id=0){
$ex mysql_query("SELECT * FROM animes INNER JOIN capitulos ON animes.id=capitulos.id_anime  WHERE id = '".$idx."'"); 
De dónde obtienes $idx si NO estás globalizando dicha variable?
mmm no es suficiente con hacer ? esto , justo lo coloco en Funciones.php

Código PHP:
function idepisodio() {
   
$idVariable $_GET['id']; 
$sql "SELECT * FROM capitulos WHERE( id_capitulo = '".$idVariable."' );"
$resultmysql_query($sql)or die (mysql_error());  
 if(!
$result){ 
  print 
"Error al ejecutar la query."
 } 
$row mysql_fetch_array($resultMYSQL_ASSOC);
$idx=$row["id_anime"] ;
    return 
$idx;
}
$idx idepisodio();
echo 
$idx
o voy llegando muy equivocado ... gracias espero no te molestes
  #20 (permalink)  
Antiguo 10/07/2011, 15:49
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: mostrar registros asociados por ID de registro

Ten en cuenta que son funciones diferentes. En cada función que use una variable, debes globalizarla. Te dejo un ejemplo que parece que no viste el uso de global.

Código PHP:
$var1 "Hola!";

function 
imprime() {
    global 
$var1;
    return 
$var1;
}

function 
imprime2() {
    return 
$var1;
}

echo 
imprime(); //Imprime Hola!
echo imprime2(); //No imprime nada, pues la funcion no puede acceder a tal variable 
Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #21 (permalink)  
Antiguo 10/07/2011, 17:29
 
Fecha de Ingreso: mayo-2011
Mensajes: 59
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: mostrar registros asociados por ID de registro

ya logre solucionar mi problema gracias me fuyste de mucha ayuda sourcegeek tan solo era declarar global $idx en la funcion saludos
__________________
Hotmail Argentina |
Hotmail México

Última edición por simpleplan_874; 24/03/2012 a las 20:25

Etiquetas: registro, registros, tabla
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 14:45.