Me ayudan con una funcion de php

Iniciado por mark182, 11 Octubre 2010, 17:14 PM

0 Miembros y 1 Visitante están viendo este tema.

mark182

Hola como estan?

Estoy haciendo una web y al momento de recorrer un Array con un while, me aparece la palabra "Array" en al web  :-\

Lo estoy haciendo de la siguiente forma:

Tengo una clase donde esta la funcion "mysql_fetch_array" (la clase ya esta instanciada en otra parte del codigo):


public function resultadoQuery($busqueda)
    {
        $this->busq=mysql_fetch_array($busqueda);
        return $this->busq;       
    }


Y en el codigo principal estoy haciendo esto:


<?php
$busq
=$conexion->ejecutarQuery("SELECT nombre,apellido FROM alumnos WHERE 
colegio='
$_POST[colegio]' ORDER BY apellido,nombre ASC");   
           
                        if( 
$_POST['colegio'] == "Pedro B. Palacios 1º (ESB)")
                        {
                          echo 
'<table border="1px">
                                    <thead>
                                        <tr>
                                            <th>Apellido y Nombre</th>
                                            <th>Nota</th>
                                        </tr>
                                    </thead>'
;  
                          while(
$alumnos$conexion->resultadoQuery($busq))
                          {                          
  
                             echo  
'<tr>
                                       <td>'
.$alumnos['apellido'].' '.$alumnos['nombre'].'</td>
                                       <td><input type="text" maxlength="2" name="nota" /></td>
                                    </tr>'
;                                                                                                                           
                          }
                          echo 
'</table>';  
                        }
                    
?>



Lo que esta ocurriendo es que antes de imprimir la tabla, imprimer 2 veces la palabra "Array", yo creo que la imprime 2 veces a la palabra porque tambien son 2 los registros que se imprimen por la consulta a la BD.
Probando, descubri que si al while lo modifico de la siguiente forma:

while($alumnos= mysql_fetch_array($busq))

O sea, si pongo directamente la funcion la palabra "Array" no aparece. Pero la idea es usas la clase.
Tambien lo que me parece raro es que "Array" aparezca antes de la tabla.

No se si se entendio del todo mi consulta. Cualquier cosa avisenme que pongo los detalles que necesiten.

Muchas gracias.

~ Yoya ~

La funcion mysql_fetch_array devuelve una matriz asociativa por defecto...

Ejemplo:
Código (sql) [Seleccionar]
mysql> describe nombres;
+----------+----------+------+-----+---------+-------+
| Field    | Type     | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| nombre   | char(20) | YES  |     | NULL    |       |
| apellido | char(20) | YES  |     | NULL    |       |
+----------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)



Código (php) [Seleccionar]
<?php
$connect 
mysql_connect('127.0.0.1','root','password');
mysql_select_db('ejemplo',$connect);

$sql mysql_query("select * from nombres limit 1");

while(
$row mysql_fetch_array($sql)){
echo 
$row['nombre'];
}

?>


Salida:
Juan

Pero lo que haces es lo siguiente:

Código (php) [Seleccionar]
<?php
$connect 
mysql_connect('127.0.0.1','root','password');
mysql_select_db('ejemplo',$connect);

$sql mysql_query("select * from nombres limit 1");


while(
$row mysql_fetch_array($sql)){
echo 
$row;
}

?>


Salida:
Array




Te recomiendo que al metodo resultadoQuery le agreges otro parametro que puede ser un parametro opcional que devuelva el tipo de matriz que devolvera la funcion mysql_fetch_array.

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

mark182

Gracias por tu respuesta ~ Yoya ~ pero segun tu explicacion de porque esta saliendo la palabra Array es porque estoy haciendo algo como lo que pusiste en tu ejemplo:


<?php
$connect 
mysql_connect('127.0.0.1','root','password');
mysql_select_db('ejemplo',$connect);
 
$sql mysql_query("select * from nombres limit 1");
 
while(
$row mysql_fetch_array($sql)){
echo 
$row;
}
 
?>


Array

Pero comparando este codigo con el mio, yo en ningun momento hago un echo de la matriz.

En mi ejemplo, la matriz se llama $alumnos y en ningun lado hago

echo $alumnos;

Es mas, lo que estoy haciendo es lo que hiciste vos:

while($row = mysql_fetch_array($sql)){
echo $row['nombre'];


Juan

y yo hago:

while($alumnos= $conexion->resultadoQuery($busq))
                          {                               
                             echo  '<tr>
                                       <td>'.$alumnos['apellido'].' '.$alumnos['nombre'].'</td>
                                       <td><input type="text" maxlength="2" name="nota" /></td>
                                    </tr>';                                                                                                                               
                          }


Perez Juan

Además, esta misma clase la estoy usando en otro codigo y tambien me aparece "Array". Que no creo que en ese otro codigo este haciendo "echo $matriz"  :-\

~ Yoya ~

Ps disculpa, me fije que mostraba array y mire xD....

si pones directamente y funciona ps seria problema de la clase o pueda ser que tengas un error...

Puedes poner la clase que hiciste y el source original pero quitandole las tablas, divs, etc...

Yo hice una clase similar para ver si me sucedia lo mismo y ps no, salio todo normal...
Código (php) [Seleccionar]
<?php

class ejemplo
{
   private 
$connect;

   public function 
query($sql)
   {
      
$this->connect mysql_connect('127.0.0.1','root','password');
      
mysql_select_db('ejemplo',$this->connect);

      
$query mysql_query($sql,$this->connect);
      return 
$query;
   }


   public function 
resultadoQuery($sql)
   {
   return 
mysql_fetch_array($sql);
   }

}


$sql = new ejemplo;
$result $sql->query('select * from nombres limit 1');
while(
$row $sql->resultadoQuery($result)){
echo 
$row['nombre'];
}

?>

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

mark182

Ya lo pude resolver, muchas gracias igualmente ~ Yoya ~
El problema era que una propiedad tenia el mismo nombre que una metodo y cuando ponia $this->(nombre de la propiedad) se confundia con el metodo. Algo loco porque ese metodo necesita parametro y en ningun momento imprime algo jeje. Pero bue parece que era eso porque lo modifique y ahora anda.