Foros del Web » Programando para Internet » PHP »

Manejo de Array (funciona para SQL server pero no para Mysql)

Estas en el tema de Manejo de Array (funciona para SQL server pero no para Mysql) en el foro de PHP en Foros del Web. saludos, tengo ya dos dias rompiendome la cabeza tratando de ver que estoy haciendo mal.. pero ya llego el momento de pedir refuerzos.. simple.. estoy ...
  #1 (permalink)  
Antiguo 25/10/2007, 08:01
 
Fecha de Ingreso: octubre-2007
Mensajes: 3
Antigüedad: 16 años, 6 meses
Puntos: 0
Manejo de Array (funciona para SQL server pero no para Mysql)

saludos, tengo ya dos dias rompiendome la cabeza tratando de ver que estoy haciendo mal.. pero ya llego el momento de pedir refuerzos.. simple.. estoy realziando un query a una BD en Mysql que me retorna unos Id's que necesito.. tengo una funcion que me pasa ese recorset a un array.. lo cumbre es que para SQL server 2000 funciona de lo lindo.. pero cuando trato de hacer lo mismo para una tabla de MySQL solo me da esto: Array le hago un hecho y me da Array pero le hago un print_r y me da todo el contenido del Array.. estoy que me arranco las greñas!!.. aqui coloco el respectivo codigo:
Código PHP:
/*
  Método que se emplea para la carga de la matriz que va a contener los datos a mostrar, se emplea solo para SQL Server y MySQL
  */
  
function cargarArray($rs ''$QRY=''$driver$dbase){     
    switch (
$driver){
      case 
"mysql"
        
$this->dbOpen("mysql"$dbase);
        if (
strlen($QRY) > 0){
          
$rsmysql_query($QRY$this->dsn) or die("Error: "."<BR>Query: $query");                    
        }
        
$totalFilas mysql_num_rows($rs);        
        
$totalCampos mysql_num_fields($rs);            
        break;
      default: 
        
$this->dbOpen();
        if (
strlen($QRY) > 0){
          
$rsmssql_query($QRY$this->dsn) or die("Error: "."<BR>Query: $query");          
         }     
        
$totalFilas mssql_num_rows($rs);
        
$totalCampos mssql_num_fields($rs);          
      break;      
    }
            
    
$this->arrayRs = array(0); 
    for (
$i 0$i $totalFilas$i++ ) {
        switch (
$driver){
          case 
"mysql"
              
$row =  mysql_fetch_array($rs);  
              
            break;
          default:
              
$row =  mssql_fetch_array($rs); 
            break;
        }            
        
$this->arrayRs[$i] = $row
        
    }
    
    switch (
$driver){
      case  
"mysql"
        
mysql_free_result($rs);
        
$this->dbClose("mysql");
        break;
      default: 
        
mssql_free_result($rs);
        
$this->dbClose();
      break;    
      }    
  } 
para ejecutarlo en SQL server uso lo siguiente:
Código PHP:
//generar etiquetas        
      
case 99
      
$this->PDF();
      
$this->AddPage();    
        
$query"SELECT DISTINCT nombreEquipo as Equipo, sbn as Serial, nroEquipo as Nro, nombreLab as Lab 
                      FROM equipo, estados, laboratorio
                      WHERE equipo.idLab = laboratorio.idLab 
                              AND laboratorio.idLab = '"
.$_REQUEST['id']."'  
                              AND equipo.idEstado = estados.idEstado
                            AND estados.idEstado NOT IN ('-1')
                      ORDER BY Nro"
;
                      
        
$this->cargarArray('',$query);
        
$totalRows count($this->arrayRs);
        
$j=0;
        
        foreach(
$this->arrayRs as $key){                                      
          
$this->dbOpen();    
          
$j++;
          if (
$j === 11){      
            
$this->AddPage();  
            
$j=0
          }    
                                  
          
$cad "";  
          
$cad $key
          
$this->Tags($cad,true);
                                                                                                                    
          
$this->dbClose();    
          
$this->Ln();
          
$i++;         
        }
        
        break; 
con este codigo me funciona muy bien y me genera las etiquetas en un pdf dinámico.. todo OK, pero ahora que deseo hacer una simple consulta para MySQL el bendito array no me quiere devolver lo que yo quiero.. estoy tratando de probar con este codigo:

Código PHP:
//Ficha de Perfil del Laboratorio            
      
case 310
                
$this->AddPage();    
        
//Cargos
        
$this->SetFont('Arial','',5);    
                
        
$query"SELECT DISTINCT idGrupo
                 FROM grupos"
;
        
        
$this->cargarArray('',$query,'mysql','seguridad');    
                
reset ($this->arrayRs);
                foreach(
$this->arrayRs as $key => $value){
          
$cad "";  
          
$cad $value
          echo(
$cad);
               }
               
print_r($this->arrayRs);
               break; 
al hacerle echo($cad) me sale: ArrayArrayArrayArray
y al hacerle print_r($this->arrayRs): Array ( [0] => Array ( [0] => 1 [idGrupo] => 1 ) [1] => Array ( [0] => 2 [idGrupo] => 2 ) [2] => Array ( [0] => 3 [idGrupo] => 3 ) [3] => Array ( [0] => 4 [idGrupo] => 4 ) )

¡¡¡¡ALGUNA AYUDA PLEASE!!!!
  #2 (permalink)  
Antiguo 26/10/2007, 06:54
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Manejo de Array (funciona para SQL server pero no para Mysql)

No me fijé en el detalle del código, solo veo que arrayRS es una matriz multidimensional, cada una de sus entradas es una matriz a su vez.
basta que hagas $cad[0] para obtener el número del grupo.


Saludos.
  #3 (permalink)  
Antiguo 26/10/2007, 09:18
 
Fecha de Ingreso: octubre-2007
Mensajes: 3
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Manejo de Array (funciona para SQL server pero no para Mysql)

ok, gracias.. bueno yo el mismo dia de ayer me di cuenta que era una matriz.. lo que no explico es porque me devuelve una matriz en vez de un vector como es caso para SQL server.. no se si las funciones mysql_fetch_array y la mssql_fetch_array tengan retornos diferentes.. en fin.. ya esta resuelto.. gracias!!
  #4 (permalink)  
Antiguo 26/10/2007, 10:55
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: Manejo de Array (funciona para SQL server pero no para Mysql)

mssql_fetch_array
Cita:
Iniciado por www.php.net
Devuelve: Un array que corresponde a la fila capturada, o FALSE si no hay más filas.
mysql_fetch_array
Cita:
Iniciado por www.php.net
Devuelve una matriz que corresponde a la sentencia extraida, o falso si no quedan más filas.
Eso pasa :D

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
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 03:16.