Comunidad de diseño web y desarrollo en internet online

2 Bubles while de distintas tablas

Citar            
MensajeEscrito el 04 Dic 2013 07:36 am
Resulta que tengo 2 tablas las cuales son asi:

PELICULA:
-id
-titulo
-etc

REPARTO:
-id
-idpelicula
-actor

He echo un bucle while de todas mis películas, pero dentro de cada registro de película, quiero que me bote consigo todos los registros de REPARTO cuyo "idpelicula" es igual al "id" del registro de PELICULA:

Algo parecido a esto:

Por miguelsirna

315 de clabLevel



Genero:Masculino  

Hacker & Programmer

chrome
Citar            
MensajeEscrito el 06 Dic 2013 12:31 am
Nadie me da alguna idea? :c

Por miguelsirna

315 de clabLevel



Genero:Masculino  

Hacker & Programmer

chrome
Citar            
MensajeEscrito el 06 Dic 2013 12:30 pm
SELECT actor FROM reparto WHERE idpelicula = el_id_que_vos_quieras

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox
Citar            
MensajeEscrito el 06 Dic 2013 01:33 pm
vale eso si ya lo se, pero mi pregunta va en como hacer un bucle while dentro de otro pero de otra tabla que solo este vinculada con el id del registro de la primera tabla

Por miguelsirna

315 de clabLevel



Genero:Masculino  

Hacker & Programmer

chrome
Citar            
MensajeEscrito el 06 Dic 2013 05:31 pm
Pasa el while que tenes hecho a ver si te entiendo...

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox
Citar            
MensajeEscrito el 06 Dic 2013 06:09 pm

Código PHP :

while($row_ListarPeliculas = mysqli_fetch_array($results))
{?>
<li>
 <div class="datos">
  <?php echo $row_ListarPeliculas['titulo']; ?>
 </div>
 <reparto>
  <?php echo sacarreparto(reparto($row_ListarPeliculas['id'])); ?></reparto>
</li>
<?php } ?>


Aca te dejo las funciones:

Código PHP :

function sacarreparto ($reparto){
global $database_conexion, $conexion;
mysql_select_db($database_conexion, $conexion);
$query_SacarReparto = sprintf ("SELECT m_reparto.nombre FROM m_reparto WHERE m_reparto.id = %s", GetSQLValueString($reparto, "int"));
$SacarReparto = mysql_query($query_SacarReparto, $conexion) or die(mysql_error());
$row_SacarReparto = mysql_fetch_assoc($SacarReparto);
$totalRows_SacarReparto = mysql_num_rows($SacarReparto);

return $row_SacarReparto ["nombre"];
mysql_free_result($SacarReparto);
}

function reparto ($reparto){
global $database_conexion, $conexion;
mysql_select_db($database_conexion, $conexion);
$query_SacarReparto = sprintf ("SELECT reparto.idreparto FROM reparto WHERE reparto.idmovie = %s", GetSQLValueString($reparto, "int"));
$SacarReparto = mysql_query($query_SacarReparto, $conexion) or die(mysql_error());
$row_SacarReparto = mysql_fetch_assoc($SacarReparto);
$totalRows_SacarReparto = mysql_num_rows($SacarReparto);

return $row_SacarReparto ["idreparto"];
mysql_free_result($SacarReparto);
}

Por miguelsirna

315 de clabLevel



Genero:Masculino  

Hacker & Programmer

chrome
Citar            
MensajeEscrito el 06 Dic 2013 10:50 pm
Hola Buen día la verdad no logro comprender que es lo que intentas realizar con el código


Tus primeras lineas estan claras, lo que no comprendo son tus funciones

Código PHP :

while($row_ListarPeliculas = mysqli_fetch_array($results))
{?>
<li>
 <div class="datos">
  <?php echo $row_ListarPeliculas['titulo']; ?>
 </div>
 <reparto>
  // no comprendo estas lineas.


  <?php echo sacarreparto(reparto($row_ListarPeliculas['id'])); ?></reparto>
</li>
<?php } ?>



Lo que yo haria y en base a la descripcion de tablas que presentaste haria lo siguiente:


Código PHP :

while($row_ListarPeliculas = mysqli_fetch_array($results))
{?>
<li>
 <div class="datos">
  <?php echo $row_ListarPeliculas['titulo']; ?>
 </div>
 <reparto>

  <?php echo imprimeReparto(reparto($row_ListarPeliculas['id'])); ?></reparto>
</li>
<?php } ?>





Código PHP :


function reparto ( $id_pelicula ){

global $database_conexion, $conexion;

mysql_select_db($database_conexion, $conexion);

$query_SacarReparto = sprintf ("SELECT reparto.actor FROM reparto WHERE reparto.idmovie = %s", GetSQLValueString($reparto, "int"));

$reparto = mysql_query($query_SacarReparto, $conexion) or die(mysql_error());

$resultado = array();

while($row_ListarPeliculas = mysqli_fetch_array($reparto)){
  $resultado[]  = $row_ListarPeliculas ;

}


return $resultado;



}




Código PHP :

function imprimeReparto( $reparto ){
 
   $lista = "<ul>";
  if( $reparto ){
     
     foreach( $reparto as $key => $actor )
     $lista .=  '<li> '. $actor .' </li>'; 
     
 }

$lista .= "</li>";

return $lista;

}


Bueno espero este un poco claro... no verifique el código. pero creo que la idea esta en el código. Si salen dudas checo mas tarde esta publicación.

Saludos~

Por fcarrizalest

8 de clabLevel



Genero:Masculino  

Programador Web

chrome
Citar            
MensajeEscrito el 08 Dic 2013 07:21 am
He colocado las siguientes funciones:

Código PHP :

function sacarreparto ( $id_pelicula ){
global $database_conexion, $conexion;
mysql_select_db($database_conexion, $conexion);
$query_SacarReparto = sprintf ("SELECT m_reparto.nombre FROM m_reparto WHERE m_reparto.id = %s", GetSQLValueString($reparto, "int"));
$reparto = mysql_query($query_SacarReparto, $conexion) or die(mysql_error());
$resultado = array();
while($row_ListarPeliculas = mysqli_fetch_array($reparto)){
  $resultado[]  = $row_ListarPeliculas ;
}
return $resultado;

}

function imprimeReparto( $reparto ){
   $lista = "<ul>";
  if( $reparto ){
     foreach( $reparto as $key => $actor )
     $lista .=  '<li> '. $actor .' </li>'; 
 }
$lista .= "</ul>";
return $lista;
}


Parece que todo esta bien pero me sale este error:

Código :

mysqli_fetch_array() expects parameter 1 to be mysqli_result, resource given in /home/radiomyh/public_html/include/funciones.php on line 7


Al parecer el problema es aqui:

Código PHP :

while($row_ListarPeliculas = mysqli_fetch_array($reparto)){
  $resultado[]  = $row_ListarPeliculas ;
}


A que se debe me imagino porque derrepente al llamar el row listarPeliculas no lo encuentra o algo así ya que es una función y no se liga :S

Por miguelsirna

315 de clabLevel



Genero:Masculino  

Hacker & Programmer

chrome
Citar            
MensajeEscrito el 08 Dic 2013 04:34 pm
Solo para probar intenta cambiar mysqli_fetch_array por mysql_fetch_assoc para ver que pasa...

creo que yo use otra función a la que tu normalmente estabas usando...

Espero y con esto se solucione. (Ya para empezar a ver peliculas, bajarlas o rentarlas sea lo que sea que estes programando ^_^)


Saludos

Por fcarrizalest

8 de clabLevel



Genero:Masculino  

Programador Web

chrome
Citar            
MensajeEscrito el 08 Dic 2013 08:41 pm
Ahora ya no me bota ningún error, pero tampoco me bota ninguna lista de actores :/

El código que puse antes el cual me botaba el ultimo actor es el siguiente:

Código PHP :

function sacarreparto ($reparto){
global $database_conexion, $conexion;
mysql_select_db($database_conexion, $conexion);
$query_SacarReparto = sprintf ("SELECT m_reparto.nombre FROM m_reparto WHERE m_reparto.id = %s", GetSQLValueString($reparto, "int"));
$SacarReparto = mysql_query($query_SacarReparto, $conexion) or die(mysql_error());
$row_SacarReparto = mysql_fetch_assoc($SacarReparto);
$totalRows_SacarReparto = mysql_num_rows($SacarReparto);
return $row_SacarReparto ["nombre"];
mysql_free_result($SacarReparto);
}

Ahora lo he cambiado por los tuyos

Código PHP :

function sacarreparto ($id_pelicula){
global $database_conexion, $conexion;
mysql_select_db($database_conexion, $conexion);
$query_SacarReparto = sprintf ("SELECT m_reparto.nombre FROM m_reparto WHERE m_reparto.id = %s", GetSQLValueString($reparto, "int"));
$reparto = mysql_query($query_SacarReparto, $conexion) or die(mysql_error());
$resultado = array();
while($row_ListarPeliculas = mysql_fetch_assoc($reparto)){
  $resultado[]  = $row_ListarPeliculas ;
}
return $resultado;
}
function imprimeReparto($reparto){
   $lista = "<ul>";
  if($reparto){
     foreach($reparto as $key => $actor)
     $lista .=  '<li> '. $actor .' </li>'; 
 }
$lista .= "</ul>";
return $lista;
}

Solo que no sabia como hacer un blucle while en una funcion, te paso el link:
http://goo.gl/3sl7Av Cuando pasas el mouse por las películas sale un cuadro donde en la parte de abajo debería listarse los actores y ahorita sale en blanco

Por miguelsirna

315 de clabLevel



Genero:Masculino  

Hacker & Programmer

chrome
Citar            
MensajeEscrito el 08 Dic 2013 11:01 pm
bueno solo es cuestion de ver el código y comprenderlo... fue un error mio, al hacer el codigo.

Código PHP :

sacarreparto ($id_pelicula // <--- aqui estoy usando  $id_pelicula 

GetSQLValueString($reparto, "int") // <--- y aqui puse reparto.


Bueno lo escribi rapido.

Saludos

Por fcarrizalest

8 de clabLevel



Genero:Masculino  

Programador Web

chrome
Citar            
MensajeEscrito el 09 Dic 2013 02:01 am
Lo cambie a $reparto, pero ahora me sale un mensaje que dice "Array"

Por miguelsirna

315 de clabLevel



Genero:Masculino  

Hacker & Programmer

chrome
Citar            
MensajeEscrito el 09 Dic 2013 10:13 pm
nuevamente un error de mi parte :P


en esta parte

Código PHP :

$lista .=  '<li> '. $actor .' </li>'; 


debe ser

Código PHP :

$lista .=  '<li> '. $actor['nombre'] .' </li>';


ya espero a tinarle haha
Saludos~

Por fcarrizalest

8 de clabLevel



Genero:Masculino  

Programador Web

chrome
Citar            
MensajeEscrito el 09 Dic 2013 10:28 pm
Ahora si :D solo que no veo el bucle while XD sale solo el ultimo nombre

Por miguelsirna

315 de clabLevel



Genero:Masculino  

Hacker & Programmer

chrome
Citar            
MensajeEscrito el 09 Dic 2013 10:34 pm

Por miguelsirna

315 de clabLevel



Genero:Masculino  

Hacker & Programmer

chrome
Citar            
MensajeEscrito el 17 Dic 2013 09:07 am
En tu consulta por que tienes:

m_reparto.id = $idreparto.

si lo que estas recibiendo es un idMovie

que es lo que tienes en:

<?php echo sacarreparto(reparto($row_ListarPeliculas['id'])); ?></reparto>

en dado caso. deberías cambiar la consulta. para obtener los repartos en base a ese id de pelicula

Por fcarrizalest

8 de clabLevel



Genero:Masculino  

Programador Web

chrome
Citar            
MensajeEscrito el 17 Dic 2013 09:19 am

Código PHP :

<?php echo sacarreparto(reparto($row_ListarPeliculas['id'])); ?>


Estas funciones lo que hacen es tomar el id de la pelicula, y darselo primero a la funcion reparto lo que hace es botarme los idreparto que esten vinculados con el idmovie y el sacarreparto me saca el nombre del actor

Código PHP :

function reparto ($reparto){

global $database_conexion, $conexion;
mysql_select_db($database_conexion, $conexion);
$query_SacarReparto = sprintf ("SELECT reparto.idreparto FROM reparto WHERE reparto.idmovie = %s", GetSQLValueString($reparto, "int"));
$SacarReparto = mysql_query($query_SacarReparto, $conexion) or die(mysql_error());
$row_SacarReparto = mysql_fetch_assoc($SacarReparto);
$totalRows_SacarReparto = mysql_num_rows($SacarReparto);

return $row_SacarReparto ["idreparto"];
mysql_free_result($SacarReparto);

}


Código PHP :

function sacarreparto ($idmovie){
global $database_conexion, $conexion;
mysql_select_db($database_conexion, $conexion);
$query_SacarReparto = sprintf ("SELECT m_reparto.nombre FROM m_reparto WHERE m_reparto.id = %s", GetSQLValueString($idmovie, "int"));
$reparto = mysql_query($query_SacarReparto, $conexion) or die(mysql_error());
$resultado = array();
while($row_ListarPeliculas = mysql_fetch_assoc($reparto)){
  $resultado[]  = $row_ListarPeliculas ;
}
return $resultado;
}
function imprimeReparto($reparto){
  if($reparto){
     foreach($reparto as $key => $actor)
     $lista .= $actor['nombre']; 
 }
return $lista;
}


En pocas palabras son 3 tablas

Tabla 1: m_movie (PELICULAS)
id
titulo

Tabla 2: m_peparto (ACTORES)
id
nombreactor

Tabla3: reparto (UNION)
id
idmovie
idactor

Por miguelsirna

315 de clabLevel



Genero:Masculino  

Hacker & Programmer

chrome
Citar            
MensajeEscrito el 17 Dic 2013 09:23 am
Al menos el código que me has dado si me funciona pero me bota solo el nombre de 1 actor

Por miguelsirna

315 de clabLevel



Genero:Masculino  

Hacker & Programmer

chrome
Citar            
MensajeEscrito el 17 Dic 2013 09:27 am
Vez como decir hay 2 tablas, a ahora decir tengo 3 tablas.. Con esto todo cambia. Por ello no comprendia lo que intentabas realizar.


pero bueno, creo que se podría solucionar con un join. para evitar tanto bucle.
pero ya es tarde. mañana llegando al trabajo. le doy una analizada.

saludos~

Por fcarrizalest

8 de clabLevel



Genero:Masculino  

Programador Web

chrome
Citar            
MensajeEscrito el 17 Dic 2013 09:32 am
Dale gracias opino lo mismo suerte :D

Por miguelsirna

315 de clabLevel



Genero:Masculino  

Hacker & Programmer

chrome
Citar            
MensajeEscrito el 17 Dic 2013 09:39 pm
Mira, lee este post. estoy seguro que te ayudara a relacionar las tablas

http://www.jhav.net/mysql/Relacionar-Tablas-Mysql_20.html

Te deja una consulta, con esto espero que se te facilite... ya solo tendrias que hacer un while o un for.

SELECT `reparto`.idpelicula , `m_reparto`.* FROM `reparto` , `m_reparto` WHERE `reparto`.idpelicula = '1' AND `reparto`.idactor = `m_reparto`.id

Para ya depende de ti.

Saludos~

Por fcarrizalest

8 de clabLevel



Genero:Masculino  

Programador Web

chrome
Citar            
MensajeEscrito el 18 Dic 2013 12:47 am
Si te entiendo, pero te olvidas que estoy haciendo un juego de registros de películas y dentro de ella la de actores no por separado

he leído acerca del inner join he tratado creando una consulta por cada registro pero me suma todo los actores y al final en la ultima pelicula me bota todos

He tratado de hacer algo asi:

Código PHP :

function imprimeReparto($reparto){
  if($reparto){
   foreach($reparto as $key => $actor)
   do {
      $lista .= $actor['nombre'];
   }while ($row_ListarPeliculas = mysql_fetch_assoc($ListarPeliculas));
 }
return $lista;
}
Pero me vota error

Sigo preguntándome porque si antes hemos declarado un bucle while no bota la lista de todos los actores

Código PHP :

function sacarreparto ($idmovie){
global $database_conexion, $conexion;
mysql_select_db($database_conexion, $conexion);
$query_SacarReparto = sprintf ("SELECT m_reparto.nombre FROM m_reparto WHERE m_reparto.id = %s", GetSQLValueString($idmovie, "int"));
$reparto = mysql_query($query_SacarReparto, $conexion) or die(mysql_error());
$resultado = array();
while($row_ListarPeliculas = mysql_fetch_assoc($reparto)){
  $resultado[]  = $row_ListarPeliculas ;
}
return $resultado;
}

Por miguelsirna

315 de clabLevel



Genero:Masculino  

Hacker & Programmer

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.