elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Me ayudan con una funcion de php
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Me ayudan con una funcion de php  (Leído 3,044 veces)
mark182


Desconectado Desconectado

Mensajes: 395


Ver Perfil WWW
Me ayudan con una funcion de php
« en: 11 Octubre 2010, 17:14 pm »

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):

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

Y en el codigo principal estoy haciendo esto:

Código:
<?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:

Código:
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.


En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Me ayudan con una funcion de php
« Respuesta #1 en: 11 Octubre 2010, 21:44 pm »

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

Ejemplo:
Código
  1. mysql> DESCRIBE nombres;
  2. +----------+----------+------+-----+---------+-------+
  3. | FIELD    | TYPE     | NULL | KEY | DEFAULT | Extra |
  4. +----------+----------+------+-----+---------+-------+
  5. | nombre   | CHAR(20) | YES  |     | NULL    |       |
  6. | apellido | CHAR(20) | YES  |     | NULL    |       |
  7. +----------+----------+------+-----+---------+-------+
  8. 2 ROWS IN SET (0.00 sec)


Código
  1. <?php
  2. $connect = mysql_connect('127.0.0.1','root','password');
  3. mysql_select_db('ejemplo',$connect);
  4.  
  5. $sql = mysql_query("select * from nombres limit 1");
  6.  
  7. while($row = mysql_fetch_array($sql)){
  8. echo $row['nombre'];
  9. }
  10.  
  11. ?>

Salida:
Código:
Juan

Pero lo que haces es lo siguiente:

Código
  1. <?php
  2. $connect = mysql_connect('127.0.0.1','root','password');
  3. mysql_select_db('ejemplo',$connect);
  4.  
  5. $sql = mysql_query("select * from nombres limit 1");
  6.  
  7.  
  8. while($row = mysql_fetch_array($sql)){
  9. echo $row;
  10. }
  11.  
  12. ?>

Salida:
Código:
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.


En línea

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


Desconectado Desconectado

Mensajes: 395


Ver Perfil WWW
Re: Me ayudan con una funcion de php
« Respuesta #2 en: 11 Octubre 2010, 22:53 pm »

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:

Código:
<?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;
}
 
?>

Código:
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

Código:
echo $alumnos;

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

Código:
while($row = mysql_fetch_array($sql)){
echo $row['nombre'];

Código:
Juan

y yo hago:

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

Código:
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"  :-\
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Me ayudan con una funcion de php
« Respuesta #3 en: 11 Octubre 2010, 23:31 pm »

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
  1. <?php
  2.  
  3. class ejemplo
  4. {
  5.   private $connect;
  6.  
  7.   public function query($sql)
  8.   {
  9.      $this->connect = mysql_connect('127.0.0.1','root','password');
  10.      mysql_select_db('ejemplo',$this->connect);
  11.  
  12.      $query = mysql_query($sql,$this->connect);
  13.      return $query;
  14.   }
  15.  
  16.  
  17.   public function resultadoQuery($sql)
  18.   {
  19.   return mysql_fetch_array($sql);
  20.   }
  21.  
  22. }
  23.  
  24.  
  25. $sql = new ejemplo;
  26. $result = $sql->query('select * from nombres limit 1');
  27. while($row = $sql->resultadoQuery($result)){
  28. echo $row['nombre'];
  29. }
  30.  
  31. ?>
En línea

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


Desconectado Desconectado

Mensajes: 395


Ver Perfil WWW
Re: Me ayudan con una funcion de php
« Respuesta #4 en: 12 Octubre 2010, 02:21 am »

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.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines