elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 04:22  


Tema destacado: Últimos eventos sobre seguridad/inseguridad

+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP
| | | |-+  Pasar un array por una función
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pasar un array por una función  (Leído 925 veces)
dimitrix


Desconectado Desconectado

Mensajes: 4.059



Ver Perfil WWW
Pasar un array por una función
« en: 19 Junio 2011, 02:31 »

Pues tengo algo parecido a esto:

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


En línea




~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Re: Pasar un array por una función
« Respuesta #1 en: 19 Junio 2011, 05:28 »

En ese tipo de caso siempre hay que ir testeando y no programar todo de una.

Hazle un

Código
print_r($valores);

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


En línea

dimitrix


Desconectado Desconectado

Mensajes: 4.059



Ver Perfil WWW
Re: Pasar un array por una función
« Respuesta #2 en: 19 Junio 2011, 12:33 »

El problema es que como tú dices no puedo usar la consulta tipo:

$valores["nombre"]

$valores["Ciudad"]


¿Alguien sabe la solución?
En línea




madpitbull_99
Moderador Global
***
Desconectado Desconectado

Mensajes: 1.898



Ver Perfil WWW
Re: Pasar un array por una función
« Respuesta #3 en: 19 Junio 2011, 14:03 »

Cambia mysql_fetch_array() por mysql_fetch_assoc().
En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
Shell Root


Desconectado Desconectado

Mensajes: 2.456


Alex Jurado


Ver Perfil WWW
Re: Pasar un array por una función
« Respuesta #4 en: 19 Junio 2011, 19:48 »

Yo tengo esta pequeña función que hace lo que tu quieres...

Código
   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
$PoC[0] = array(0 => "001", 'codigo' => "001", 2 => "Alex", 'nombre' => "Alex");
$PoC[1] = array(0 => "001", 'codigo' => "001", 2 => "Juan", 'nombre' => "Juan");

« Última modificación: 19 Junio 2011, 19:56 por Shell Root » En línea

---
dimitrix


Desconectado Desconectado

Mensajes: 4.059



Ver Perfil WWW
Re: Pasar un array por una función
« Respuesta #5 en: 19 Junio 2011, 20:05 »

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




Shell Root


Desconectado Desconectado

Mensajes: 2.456


Alex Jurado


Ver Perfil WWW
Re: Pasar un array por una función
« Respuesta #6 en: 19 Junio 2011, 20:31 »

Es que esa función la uso de forma general. Por ejemplo,
Código
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
ejecutarQuery($sql);
qué:
Código
ejecutarQuery($sql, true);
« Última modificación: 19 Junio 2011, 20:34 por Shell Root » En línea

---
dimitrix


Desconectado Desconectado

Mensajes: 4.059



Ver Perfil WWW
Re: Pasar un array por una función
« Respuesta #7 en: 19 Junio 2011, 21:47 »

Anda, no sabía que podías llamar a una función con menos parametros de los que tiene la función.

Muchas gracias :-)
En línea




cassiani


Desconectado Desconectado

Mensajes: 946


« Anterior | Próximo »


Ver Perfil WWW
Re: Pasar un array por una función
« Respuesta #8 en: 19 Junio 2011, 22:47 »

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines