Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => 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 (php) [Seleccionar]
<?php

function DatosDeCliente($ID){
include("config.php");
$sql="SELECT * FROM Clientes WHERE ID='".$ID."'";
$resultado mysql_db_query($db_name$sql);
$valor mysql_fetch_array($resultado);
return $valor;
};


$IDcliente=7;
$valores=DatosDeCliente($IDcliente);

echo(
"Hola, el nombre de ese ID es: ");
echo(
$valores["nombre"]);

?>



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 (php) [Seleccionar]
print_r($valores);

Código (php) [Seleccionar]
<?php
 
function DatosDeCliente($ID){
include("config.php");
$sql="SELECT * FROM Clientes WHERE ID='".$ID."'";
$resultado mysql_db_query($db_name$sql);
$valor mysql_fetch_array($resultado);
return $valor;
};
 
 
$IDcliente=7;
$valores=DatosDeCliente($IDcliente);
 
print_r($valores);
 
?>



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 (php) [Seleccionar]
   function ejecutarQuery($sql, $retorno = true){
      $conn = abrirConexion();
      try{
         $query = $conn->query( $sql );
         if( $retorno ){
            while( $fila = $query->fetch(PDO::FETCH_BOTH) ){
               $datos[] = $fila;
            }
            cerrarConexion($conn);
            return $datos;
         }else{
            return true;
         }
      }catch( PDOException $ex ){
         print $ex->getMessage();
         return false;
      }
   }


A lo que quedaría como resultado,
Código (php) [Seleccionar]
$PoC[0] = array(0 => "001", 'codigo' => "001", 2 => "Alex", 'nombre' => "Alex");
$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
Cita de: madpitbull_99 en 19 Junio 2011, 14:03 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 (sql) [Seleccionar]
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 (php) [Seleccionar]
ejecutarQuery($sql);
qué:
Código (php) [Seleccionar]
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!