Foros del Web » Programando para Internet » PHP »

Problema con array

Estas en el tema de Problema con array en el foro de PHP en Foros del Web. Buenas amigos, Tengo un problema con un array: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original $result = mysql_query ( "SHOW TABLE STATUS FROM xxx;" ) ; ...
  #1 (permalink)  
Antiguo 02/02/2012, 01:37
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
De acuerdo Problema con array

Buenas amigos,

Tengo un problema con un array:

Código PHP:
Ver original
  1. $result = mysql_query("SHOW TABLE STATUS FROM xxx;");
  2. while($array = mysql_fetch_array($result)) {
  3. $cadena = "$array[Name]";
  4. if (preg_match ("/album_/", $cadena))
  5. {
  6. $mar=  " UNION ALL SELECT votos, portada FROM " . $cadena;
  7. $_SESSION["albumesRanking"] = $mar;
  8. echo "$arrayEnd";
  9. }
  10. }

vale, hasta ahi bien, esto me imprime:

UNION ALL SELECT votos, portada FROM album_a UNION ALL SELECT votos, portada FROM album_aaa UNION ALL SELECT votos, portada FROM album_bas UNION ALL SELECT votos, portada FROM album_firmo66 UNION ALL SELECT votos, portada FROM album_guillermoylu UNION ALL SELECT votos, portada FROM album_real

hasta aqui todo va de lujo, pero es que despues, hago lo siguiente:

Código PHP:
Ver original
  1. $resultado=mysql_query('SELECT votos, portada FROM album_real '.$arrayEnd.' ORDER BY votos DESC LIMIT 3');
  2. while ($array = mysql_fetch_array($resultado) ) {
  3. $portada = $array[portada];
  4. $votos = $array[votos];
  5. echo "<img src='$portada'/>";
  6. echo "<br/>";
  7. }
  8.  
  9.  
  10.  
  11. echo "$arrayEnd";


y no funciona, es decir solo pilla las portadas del primer album, y al imprimir el $arrayEnd, efectivamente no me imprime toda la cadena del array, si no solo el primer valor...

UNION ALL SELECT votos, portada FROM album_real


Mi pregunta es:
Sabe alguien como puedo hacer para que la variable $arrayEnd contenga toda la informacion???

Gracias!
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #2 (permalink)  
Antiguo 02/02/2012, 01:47
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problema con array

Suponiendo que arrayEnd contenga realmente la información:


Código PHP:
Ver original
  1. $resultado=mysql_query("SELECT votos, portada FROM album_real $arrayEnd ORDER BY votos DESC LIMIT 3");

Saludos,
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 02/02/2012, 02:44
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Problema con array

Hola repara2,

asi deberia ser, pero la informacion del array se me pierde, no se porque! y solo me muestra el primer valor!

no entiendo que estoy haciendo mal... :(
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #4 (permalink)  
Antiguo 02/02/2012, 03:37
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problema con array

Es el mismo script o son dos diferentes??
__________________
Fere libenter homines, id quod volunt, credunt.
  #5 (permalink)  
Antiguo 02/02/2012, 03:48
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: Problema con array

Para comenzar tienes serios problemas sobre el uso de comillas simples y dobles, ahora, obvio que solo te va a imprimir un item porque no estas concatenando, al contrario, cada vez que hace un recorrido el loop (while) remplazas el valor anterior por el siguiente, para evitar eso debes concatenar como te había dicho, ahora, lee y analiza el código que dejare...

Código PHP:
Ver original
  1. //Siempre debes pasar la variable que contenga la cónexión, así evitas hacer trabajar de mas a PHP
  2. //buscando una conexión abierta, así mismo, usa SIEMPRE mysql_error()...
  3. $resultado=mysql_query('SELECT votos, portada FROM album_real '.$arrayEnd.' ORDER BY votos DESC LIMIT 3',$conexion) or die(mysql_error());
  4. while ($array = mysql_fetch_array($resultado) ) {
  5.  
  6. //MAL, cuando te refieras a un item dentro de un array debes usar comillas!!!
  7. //Ahora, para no remplazar el valor hay que concatenar con el . antes del =, aparte
  8. //agregamos un espacio al final para que se separen los datos y se pueda leer con claridad
  9. $portada .= $array['portada'].' ';
  10. $votos = $array['votos'];
  11.  
  12. echo "<img src='$portada'/>";
  13. echo "<br/>";
  14. }
  15.  
  16. //MAL, cuando no vas a imprimir texto directamente no se usan comillas
  17. //ni sencillas ni dobles, solo se indica la variable, las comillas solo se usan para
  18. //encerrar texto, ejem: echo 'esto es una cadena'.$esto_es_una_variable;
  19. echo $arrayEnd;
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #6 (permalink)  
Antiguo 02/02/2012, 06:30
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Problema con array

Hola amigos,

Si efectivamente es el mismo script:

La primera parte hace una pesquisa de todos los albumes que existen, para ello busca las tablas que empiecen por "album_" les suma " UNION ALL SELECT votos, portada FROM " y mete todo en una variable "$arrayend".
y lo vivualizo y sale bien en pantalla osea sale:

UNION ALL SELECT votos, portada FROM album_a UNION ALL SELECT votos, portada FROM album_aaa UNION ALL SELECT votos, portada FROM album_bas UNION ALL SELECT votos, portada FROM album_firmo66 UNION ALL SELECT votos, portada FROM album_guillermoylu UNION ALL SELECT votos, portada FROM album_real

y la segunda parte recoge hace una pesquisa SQL con la variable con todas los albumes, osea:


$resultado=mysql_query('SELECT votos, portada FROM album_real '.$arrayEnd.' ORDER BY votos DESC LIMIT 3');

lo que equivaldria a :

$resultado=mysql_query('SELECT votos, portada FROM album_real UNION ALL SELECT votos, portada FROM album_a UNION ALL SELECT votos, portada FROM album_aaa UNION ALL SELECT votos, portada FROM album_bas UNION ALL SELECT votos, portada FROM album_firmo66 UNION ALL SELECT votos, portada FROM album_guillermoylu ORDER BY votos DESC LIMIT 3');


Pero y ahi viene el problema la variable:

$arrayEnd

Solo contiene un album, y es porque como cita Nemutagk
Cita:
obvio que solo te va a imprimir un item porque no estas concatenando
El tema es que no se como hacer para que se muestren todos, ya que en el primer while la variable si contiene toda la informacion pero en el 2º while no...solo contiene el ultimo album, y no se que estoy haciendo mal?
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #7 (permalink)  
Antiguo 02/02/2012, 06:57
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: Problema con array

mmmm, te dije que leyeras el código y lo analizaras, te deje claro como guardar todos los datos en la variable $arrayEnd, pero veo que ni si quiera leiste los comentarios que deje en el código....
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 02/02/2012, 07:10
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Problema con array

eee si los he leido / aplicado pero el problema persiste...

esto que me has indicado lo tengo igual:

$resultado=mysql_query('SELECT votos, portada FROM album_real '.$arrayEnd.' ORDER BY votos DESC LIMIT 3',$conexion) or die(mysql_error());
while ($array = mysql_fetch_array($resultado) ) {



y esto que tambien me has indicado:

$portada .= $array['portada'].' ';
$votos = $array['votos'];

echo "<img src='$portada'/>";
echo "<br/>";


no es el problema ya que las imagenes y el numero de votos me los saca bien, el problema esta aqui:

<?

$result = mysql_query("SHOW TABLE STATUS FROM xxx;");
while($array = mysql_fetch_array($result)) {
$cadena = "$array[Name]";
if (preg_match ("/album_/", $cadena))
{
$mar= " UNION ALL SELECT votos, portada FROM " . $cadena;
$arrayEnd = $mar;
echo "$arrayEnd";
}

}

$resultado=mysql_query('SELECT votos, portada FROM album_real '.$arrayEnd.' ORDER BY votos DESC LIMIT 3');
while ($array = mysql_fetch_array($resultado) ) {
$portada = $array[portada];
$votos = $array[votos];
echo "<img src='$portada'/>";
echo "<br/>";
}
echo "$arrayEnd";
?>

la variable que esta en verde $arrayEnd conmtiene todos los datos, ya que la imprimo mas abajo , marcada en azul y me saca todo bien... pero un poco mas abajo la vuelvo a usar, marcada en rojo y no funcina, porque ha perdido todos los datos y solo conserva uno, el ultimo.

Si se trata de la misma variable no entiendo que es lo que esta mal?
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #9 (permalink)  
Antiguo 02/02/2012, 07:16
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: Problema con array

O.o estas 100% seguro que leíste bien y que leíste todo? por si no lo notas te lo volveré a decir, debes concatenar la variable AGREGANDO UN PUNTO ANTES DEL SIGNO IGUAL...

Código PHP:
Ver original
  1. $arrayEnd .= $mar.' ';
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #10 (permalink)  
Antiguo 02/02/2012, 07:22
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Problema con array

brother! perdona! no habia leido bien Funciona! mil gracias! te subo el Karma ...thanks!
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....

Etiquetas: mysql, sql, variables
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 06:33.