Foros del Web » Programando para Internet » PHP »

MySQL Query en array

Estas en el tema de MySQL Query en array en el foro de PHP en Foros del Web. Hola Necesito guardar los valores de una búsqueda en un array. Hago esto: Código PHP: $config   = array(); $sql  =  "select * from `interfaces` " ; $result  =  mysql_query ( ...
  #1 (permalink)  
Antiguo 19/05/2009, 00:50
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
MySQL Query en array

Hola
Necesito guardar los valores de una búsqueda en un array. Hago esto:

Código PHP:
$config  = array();
$sql "select * from `interfaces` ";
$result mysql_query($sql) or die(mysql_error()); 
if (
$myrow mysql_fetch_array($result)) {
        
do  {

if(
ereg($myrow['status'],"1")) {
$myarr=$config[$myrow['iname']];
            
      }
            
} while (
$myrow mysql_fetch_array($result));
     echo 
$myarr// obtengo: aol, truveo, yahoo, youtube, metacafe, blip, vimeo
//Y necesito hacer un array_merge sobre eso
     
$video = @array_merge($myarr);
     
print_r($video);
     if(
is_array($video)) {
     echo 
"OK, it's array"//PERO NO ES UN ARRAY
    
}
    } else {
         
PageError ('ALERT: 12 There was an error with your request');
    } 
Ven donde puse 'Y necesito hacer un array_merge sobre eso ?
Bueno, ese es justamente el problema no lo puedo hacer porque $myarr NO es un array.
Se entendió ?
Cómo puedo hacer ? Por qué NO es un array $myarr ?
  #2 (permalink)  
Antiguo 19/05/2009, 01:39
 
Fecha de Ingreso: noviembre-2008
Mensajes: 44
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: MySQL Query en array

Es curioso, que $config lo declares como un array y sin embargo $myarr no. Lo más adecuado, seria en primer lugar declarte $myarr como array ( aunque bien es cierto que en php no hace falta, pero ya que lo haces con $config, pues para tenerlo todo igual). O bien no declarar ninguno de los dos como vectores.

En segundo lugar; y lo más importante es que al hacer "$myarr=$config[$myrow['iname']]; ", estás creandote una variable $myarr, que en cada iteración coge un valor distinto, eliminando el valor anterior a cada iteración. Lo más adecuado es que hiceras "$myarr[]=$config[$myrow['iname']];".
Al indicar el "[]", le estás indicando que se trata de un vector ( aun que no lo hayas declarado como tal antes) , y que te guarde en la siguiente posición libre de dicho vector el valor de la asignación. De esta forma al acabar el bucle tendrias que $myarr es un vector con los resultados esperados.

nota: tb puedes utilizar una variable contadora para acceder al vector:
"$myarr[$varibale_contadora]=$config[$myrow['iname']];", si te resulta más fácil de entender.

En tercer lugar en $myarr ya tendrias un vector asi que no se si te haria falta pasarselo al vector $video. La asignación entre vectores es simplemente $video = $myarr, aunque no creo que sea esto lo que kieras hacer.

Espero que te sirva de ayuda. Un saludo.

Última edición por El_Barba; 19/05/2009 a las 01:45
  #3 (permalink)  
Antiguo 19/05/2009, 01:52
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: MySQL Query en array

Me sirve muchísimo, te agradezco infinitamente.
Sin embargo a partir de tu explicación me doy cuenta que estoy haciendo mal las cosas y, por lo tanto, me expliqué re-mal.
La cosa es así: estoy usando el api de diferentes sitios como Truveo, Aol, Youtube, etc.
Para que se entienda el proceso pego la parte del código que creo alcanza para explicar lo que busco:
Código PHP:
if(!in_array("aol"$apis)) {
     
$aol $this->AOLObject->search($str$num);
    } else {
     
     
$aol = array();
     }
if(!
in_array("truveo"$apis)) {
     
$truveo $this->TruveoObject->search($str$num);
    } else {
     
     
$truveo = array();
     }
//y así con los demás hasta llegar a:
$video = @array_merge($youtube$aol$yahoo$blip$metacafe$vimeo$truveo); 
OK, hasta ahí todo bien. Ahora lo que yo quiero es poder apagar y prender los apis's. Entonces tomo valores desde una tablita mysql:
Código PHP:
$config  = array();
$sql "select * from `interfaces` ";
$result mysql_query($sql) or die(mysql_error()); 
    if (
$myrow mysql_fetch_array($result)) {
        do  {
            
$config[$myrow['iname']] = $myrow['status'];
            
        } while (
$myrow mysql_fetch_array($result));
    } else {
         
PageError ('ALERT: 12 There was an error with your request');
    } 
Lo que necesito entonces es hacer:
Código PHP:
//(if $config['aol'] == 1) incluyo $aol en mi merge, si (if $config['yahoo'] == 1) incluyo $yahoo en mi merge y así con el resto
$video = @array_merge($youtube$aol$yahoo$blip$metacafe$vimeo$truveo); 
Eso es lo que intento hace miles de horas
Muchas gracias otra vez.
  #4 (permalink)  
Antiguo 19/05/2009, 02:04
 
Fecha de Ingreso: noviembre-2008
Mensajes: 44
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: MySQL Query en array

A priori, no le veo ningún fallo al código que acabas de poner, suponiendo que la estructrua do-while que estas utilizando esté bien utilzada, yo no suelo utilizarla. Cualquier duda, pregunta.
  #5 (permalink)  
Antiguo 19/05/2009, 02:15
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: MySQL Query en array

nada, no sale.
Lo soluciono de una manera muy burda:

Código PHP:
if($config['aol']==0){
        
$video = @array_merge($youtube$yahoo$blip$metacafe$vimeo$truveo);
    }
    if(
$config['aol']==&& $config['youtube']==0){
    {
    
$video = @array_merge($yahoo$blip$metacafe$vimeo$truveo);
    }
//y así con todas las posibles combinaciones 
Un pelotazo esto suerte que uso 7 api's solamente sino estaría hasta Navidad.
  #6 (permalink)  
Antiguo 19/05/2009, 02:37
 
Fecha de Ingreso: noviembre-2008
Mensajes: 44
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: MySQL Query en array

Creo q por fin acabo de entender lo que tienes q hacer.
Ahí va un poco de código a la primera y sin revisar, por lo que sólo es una orientación:

$config_arr = array();

for($i=0;$i<sizeof($config);$i++)
{
if ($config[$i])!=0)
{
$config_arr[] = $$config[$i];
}
}
if (sizeof($config_arr[])>1)
{
$video = @array_merge($config_arr[] );
}
else
{

}

Última edición por El_Barba; 19/05/2009 a las 02:47 Razón: Se me fue el enter :D
  #7 (permalink)  
Antiguo 19/05/2009, 02:46
 
Fecha de Ingreso: noviembre-2008
Mensajes: 44
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: MySQL Query en array

Creo q por fin acabo de entender lo que tienes q hacer ( siento mi torpeza). Si todavia sigues pendiente al foro, ahí va un poco de código a la primera y sin revisar, por lo que sólo es una orientación:

$config_arr = array();

for($i=0;$i<sizeof($config);$i++)
{
if ($config[$i])!=0)
{
$config_arr[] = $$config[$i]; // Al poner $$, si por ejemplo,$config[$i] vale 'youtube', a la siguiente posición libre del vector $config_arr, le estarias asignando $youtube. Por lo que al final del bucle tendrias un vector de vectores (o matriz) para pasarselo al array_merge.
}
}
if (sizeof($config_arr[])>1) // Habria que mirar como se comporta el array merge con un único array con un único array dentro.
{
$video = @array_merge($config_arr);
}
else
{
$video = $config_arr;
}

Código sin comentarios:

$config_arr = array();

for($i=0;$i<sizeof($config);$i++)
{
if ($config[$i])!=0)
{
$config_arr[] = $$config[$i]; // Al poner $$, si por ejemplo,$config[$i] vale '
}
}
if (sizeof($config_arr[])>1)
{
$video = @array_merge($config_arr);
}
else
{
$video = $config_arr;
}
  #8 (permalink)  
Antiguo 19/05/2009, 03:12
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: MySQL Query en array

seeeeeeeeeeeeeeeeeeee

Mil gracias !!!!

Torpeza ?
no solamente sos un maestro sino que sos adivino porque para entender mis explicaciones... :) gracias de nuevo !
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:18.