PHP - while ($row=mysql_fetch_array($result) anidadas

 
Vista:
sin imagen de perfil

while ($row=mysql_fetch_array($result) anidadas

Publicado por Joseba (2 intervenciones) el 30/08/2014 04:53:01
Buenas noches,

tengo el siguiente problema,

tengo una tabla, con 2 columnas, autor y obra. esta tabla se llama repertorio
y lo que quiero es escribir en la web, el autor con todas sus obras debajo, hago lo siguiente,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$result = mysql_query("SELECT * FROM repertorio WHERE tipo='1' ORDER BY autor"); // Saco la tabla repertorio
 
$result_comp= mysql_query("SELECT DISTINCT autor FROM repertorio WHERE tipo='1' ORDER BY autor"); // Saco los autores sin repetir
 
echo'<table width="350">';
 
while ($row_comp=mysql_fetch_array($result_comp)){
 
		echo '<tr><td class="listado1">'.str_replace("\n","<br>",$row_comp['autor']).'</td></tr>';
 
		while ($row=mysql_fetch_array($result)){
 
	if ($row_comp['autor'] == $row['autor']){
 
	echo '<tr><td class="texto">'.$row['obra'].'</td></tr>';
	}}}
 
echo '</table>';
 
mysql_free_result($result_comp);

y esto es lo que me sale: (sólo me hace bien, el segundo while en el primer registro del primer while)

-Bach, Juan S.
Matthäus Passion
Magnificat en RE

-Beethoven, Ludwig
-Berlioz, Hector
-Brahms, Johannes
-Dvorak, Antonin
-Elgar, Edward
-Falla, M. de - Halffter, E.
-Fauré, Gabriel
-Haendel, G. F.
-Haydn, Joseph
-Holst, Gustav
-Janacek, Leos
-Ketelbey, Albert
-Liszt, Franz
-Mahler, Gustav
-Mendelssohn, Felix
-Mozart, W.A.
-Nono, Luigi
-Orff , Carl
-Puccini, Giacomo
-Purcell, Henry
-Rossini, Gioacchino
-Schubert, Franz
-Schönberg, Arnold
-Shostakovitch, Dmitri
-Tschaikowsky, Pyotr
-Vaughan-Williams, R.
-Yoder, Paul


alguien sabría decirme el porque?

muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Salvador

while ($row=mysql_fetch_array($result) anidadas

Publicado por Salvador (125 intervenciones) el 30/08/2014 20:28:08
Te paso otra forma de anidarlo

1
2
3
4
5
6
7
8
9
$result = mysql_query('SELECT * FROM repertorio WHERE tipo="1" GROUP BY autor'); // Saco la tabla repertorio
 
while ($row_comp=mysql_fetch_array($result)){
                                   echo 'autor: '.$row_comp['autor'] ;
                                   $literatura = mysql_query('SELECT * FROM repertorio WHERE autor=".$row_comp['autor']."');
                                   while ($row_literatura=mysql_fetch_array($literatura)){
                                   echo 'libro: '.$row_literatura['obra'];
                                   }
                                   }


pruebalo y comentas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

while ($row=mysql_fetch_array($result) anidadas

Publicado por Gonzalo (615 intervenciones) el 02/09/2014 00:42:09
tal vez:
1
2
3
4
5
6
7
8
9
10
11
12
select * from tabla order by autor,obra.
$autor=""
(corres el query)
while(fetch)
{
if($autor!=$Record)
{
echo("(autor)".$record["autor"]);
$autor=$Record["autor"];
}
echo($record["obra"]."<br>");
}

debe quedar como
(autor) Planetas: mercurio
venus
tierra
(autor) Constelaciones: Acuario
Picis
Tauro
(autor) Paises: Peru
Bolibia
Chile
(etc)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

while ($row=mysql_fetch_array($result) anidadas

Publicado por Joseba (2 intervenciones) el 02/09/2014 01:39:17
Muchas gracias por contestar,

al final lo he hecho de otra manera,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$autor1 ="comienzo";
 
echo'<table width="325">';
 
while ($row=mysql_fetch_array($result)){
 
	if ($row['autor'] != $autor1){
	//echo'<tr><td class="texto">&nbsp;</td></tr>';
	echo'<tr><td class="listados">'.$row['autor'].'</td></tr>';$autorea = $row['autor'];}
 
	if ($row['autor'] == $autor1){
 
	echo '<tr><td class="texto">'.str_replace("\n","<br>",$row['obra']).'</td></tr>';
 
	}
	else
	{
	continue;

muchas gracias por tu atención.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de fernando carmona

while ($row=mysql_fetch_array($result) anidadas

Publicado por fernando carmona (1 intervención) el 02/10/2015 08:51:07
gracias por tu ayuda, resolvi un problema que tenia con tu codigo
impimes una tabla sin conocer el numero de columnas con mysqli fetch field y adentro tienes que volver a hacer una consulta mysqli query para obtener el valor de esa columna que acabas de obtener
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar