Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: dimitrix en 19 Junio 2011, 02:31 am



Título: Pasar un array por una función
Publicado por: dimitrix en 19 Junio 2011, 02:31 am
Pues tengo algo parecido a esto:

Código
  1. <?php
  2.  
  3. function DatosDeCliente($ID){
  4. include("config.php");
  5. $sql="SELECT * FROM Clientes WHERE ID='".$ID."'";
  6. $resultado = mysql_db_query($db_name, $sql);
  7. $valor = mysql_fetch_array($resultado);
  8. return $valor;
  9. };
  10.  
  11.  
  12. $IDcliente=7;
  13. $valores=DatosDeCliente($IDcliente);
  14.  
  15. echo("Hola, el nombre de ese ID es: ");
  16. echo($valores["nombre"]);
  17.  
  18. ?>


El problema es que no me funciona: $valores["nombre"]
Lo he probado de varias formas y no se como se hace correctamente. (El SQL está bien, si pongo dentro de la funcion $valor["nombre"] si que va genial.

Gracias ^.^


Título: Re: Pasar un array por una función
Publicado por: ~ Yoya ~ en 19 Junio 2011, 05:28 am
En ese tipo de caso siempre hay que ir testeando y no programar todo de una.

Hazle un

Código
  1. print_r($valores);

Código
  1. <?php
  2.  
  3. function DatosDeCliente($ID){
  4. include("config.php");
  5. $sql="SELECT * FROM Clientes WHERE ID='".$ID."'";
  6. $resultado = mysql_db_query($db_name, $sql);
  7. $valor = mysql_fetch_array($resultado);
  8. return $valor;
  9. };
  10.  
  11.  
  12. $IDcliente=7;
  13. $valores=DatosDeCliente($IDcliente);
  14.  
  15. print_r($valores);
  16.  
  17. ?>
  18.  

Y muestra el resultado.

Saludos.


Título: Re: Pasar un array por una función
Publicado por: dimitrix en 19 Junio 2011, 12:33 pm
El problema es que como tú dices no puedo usar la consulta tipo:

$valores["nombre"]

$valores["Ciudad"]


¿Alguien sabe la solución?


Título: Re: Pasar un array por una función
Publicado por: madpitbull_99 en 19 Junio 2011, 14:03 pm
Cambia mysql_fetch_array() por mysql_fetch_assoc().


Título: Re: Pasar un array por una función
Publicado por: Shell Root en 19 Junio 2011, 19:48 pm
Yo tengo esta pequeña función que hace lo que tu quieres...

Código
  1.   function ejecutarQuery($sql, $retorno = true){
  2.      $conn = abrirConexion();
  3.      try{
  4.         $query = $conn->query( $sql );
  5.         if( $retorno ){
  6.            while( $fila = $query->fetch(PDO::FETCH_BOTH) ){
  7.               $datos[] = $fila;
  8.            }
  9.            cerrarConexion($conn);
  10.            return $datos;
  11.         }else{
  12.            return true;
  13.         }
  14.      }catch( PDOException $ex ){
  15.         print $ex->getMessage();
  16.         return false;
  17.      }
  18.   }

A lo que quedaría como resultado,
Código
  1. $PoC[0] = array(0 => "001", 'codigo' => "001", 2 => "Alex", 'nombre' => "Alex");
  2. $PoC[1] = array(0 => "001", 'codigo' => "001", 2 => "Juan", 'nombre' => "Juan");



Título: Re: Pasar un array por una función
Publicado por: dimitrix en 19 Junio 2011, 20:05 pm
Cambia mysql_fetch_array() por mysql_fetch_assoc().

Me funcionó genial con esa.

Shell Root gracias por el código. Nunca pensé hacer las consultas a través de una función... muy bueno, que grandre... Una pregunta, no entiendo lo de $retorno=TRUE ¿Me lo explicas?

Gracias.


Título: Re: Pasar un array por una función
Publicado por: Shell Root en 19 Junio 2011, 20:31 pm
Es que esa función la uso de forma general. Por ejemplo,
Código
  1. SELECT * FROM usuarios;
Esa consulta obviamente va a retornar unos valores.

Pero si realizo un INSERT o UPDATE no lo hará. Así que le paso por parámetro algo para que no intente devolverme datos cuando no los tiene que devolver. Me entiendes?

PD: Sí lo que estáis preguntando es el seteo de la variable cuando declaro los parámetros, pues es una inicialización de la variable con algún valor por defecto, así a la hora de llamarla no es necesario ponerle ese parámetros porque ya esta predefinido -amenos de que quieras darle otro valor-,

Por ejemplo, es lo mismo decir:
Código
  1. ejecutarQuery($sql);
qué:
Código
  1. ejecutarQuery($sql, true);


Título: Re: Pasar un array por una función
Publicado por: dimitrix en 19 Junio 2011, 21:47 pm
Anda, no sabía que podías llamar a una función con menos parametros de los que tiene la función.

Muchas gracias :-)


Título: Re: Pasar un array por una función
Publicado por: cassiani en 19 Junio 2011, 22:47 pm
lo que sucede es que en ese caso la variable tiene un valor por defecto, lo que hace al parámetro opcional y por eso puedes llamar a la función pasándole o no un valor para ese argumento.

saludos!