• Lunes 29 de Abril de 2024, 01:10

Autor Tema:  construir funciones propias  (Leído 3290 veces)

cesand

  • Miembro MUY activo
  • ***
  • Mensajes: 127
    • Ver Perfil
construir funciones propias
« en: Miércoles 24 de Febrero de 2010, 01:38 »
0
hola gente..

traigo una pregunta ya que estoy comenzando con el estudio de la construccion de funciones propias: el tema es que eentiendo la sintaxis e contruido algunas asi de prueba no mas pero sin ninguna utilidad para aprobechar.. y en esto esta mi pregunta ya que quiero darme ideas para construir peque;as funciones que despues pueda aprobechar..

por ejemplo me podran comentar alguna fin para una funcion? algo que por ahi se use comunmente nose..
espero se entienda mi comentario sobre este tema muchas gracias desde ya.

saludos

fonsi3

  • Miembro activo
  • **
  • Mensajes: 95
    • Ver Perfil
Re: construir funciones propias
« Respuesta #1 en: Miércoles 24 de Febrero de 2010, 02:30 »
0
Como vas con programacion? Leete algun pdf sobre programacion, la teoria. Porque tu duda es como preguntar porque se usan variables.
Cha che chi cho chu buenichimo!
http://mensoscripts.com

Links de interes: HTML | CCS2~CSS* | PHP
Indispensables tools]Firebug[/url] | Web Developer | FireFTP | Live Headers

cesand

  • Miembro MUY activo
  • ***
  • Mensajes: 127
    • Ver Perfil
Re: construir funciones propias
« Respuesta #2 en: Miércoles 24 de Febrero de 2010, 23:25 »
0
Esta bien amigo se que la pregunta no es lo mas constructiva ni apunta a resulver algo.. por ahi no me explique bien, no quiero saber porque se usa una funcion o para que... sino lo que me gustaria es ver cualquier funcion alguna simple con algun fin concreto.. y saber que dicha funcion puede se puede usar en determinada ocacion.. ya que lo que me gustaria por ahi hacer es p0obar de escrivir algunas funciones y tenerlas a mano para usarlas con require() eso   quiero probar.

pero bueno si no se entiendo lo que busco ver no hay drama gracias igual.

DriverOp

  • Miembro MUY activo
  • ***
  • Mensajes: 201
    • Ver Perfil
Re: construir funciones propias
« Respuesta #3 en: Jueves 25 de Febrero de 2010, 00:34 »
0
¿Cualquier función?, pues esta siempre me ha resultado útil:

[php:3itw8awz]
  1. function is_email($Addr) {
  2.    $p = '/^[a-z0-9!#$%&*+-=?^_`{|}~]+(.[a-z0-9!#$%&*+-=?^_`{|}~]+)*';
  3.    $p.= '@([-a-z0-9]+.)+([a-z]{2,3}';
  4.    $p.= '|info|arpa|aero|coop|name|museum)$/ix';
  5.    return preg_match($p, $Addr);
  6. } // is_email
[/php:3itw8awz]

Y se usa así:

[php:3itw8awz]
  1.  
  2. if (is_email($mail)) {
  3. echo "Era un email nomás.";
  4. } else {
  5. echo "Estás sanateando...";
  6. }
  7.  
[/php:3itw8awz]

cesand

  • Miembro MUY activo
  • ***
  • Mensajes: 127
    • Ver Perfil
Re: construir funciones propias
« Respuesta #4 en: Jueves 25 de Febrero de 2010, 05:24 »
0
Exacto eso mismo...

queria ver una funcion creada nada mas, y el uso de las expreciones regulares dentro de la funcion lo voy a tener encuenta para distintos fines..

a partir de ahi no tiene nada que ver pero pude hacer una que por lo menos a mi me va ayudar mucha y es una conexion a DB muy simple pero es por lo que estoy empezando aca la muestro..


FN :

Código: PHP
  1. <?php
  2. function conn($var1, $var2, $var3, $var4)
  3. {
  4. @$var1 = mysql_connect("$var2", "$var3", "$var4");
  5. if (!$var1)
  6. {
  7. echo "no se pudo conectar con la base de datos";
  8.     } else {
  9.                 echo "se conectar con la base de datos";
  10.                 }
  11. }
  12. ?>
  13.  
  14.  

utilizar fn :

Código: PHP
  1. <?php
  2. require("fn_conexion.php");
  3. conn($conn, "localhost", "root", "");
  4.  
  5. mysql_select_db("discos");
  6.  
  7. $sql = "select * from discos";
  8. $query = mysql_query($sql);
  9. $rows = mysql_num_rows($query);
  10.  
  11. for ($i=0; $i<$rows; $i++)
  12. {
  13. $ver = mysql_fetch_array($query);
  14. echo $ver['titulo_disco']."<br>";
  15.     }
  16.  
  17. ?>
  18.  

por lo menos logre lo que buscaba muchas gracias por las respuestas

suerte

DriverOp

  • Miembro MUY activo
  • ***
  • Mensajes: 201
    • Ver Perfil
Re: construir funciones propias
« Respuesta #5 en: Jueves 25 de Febrero de 2010, 18:47 »
0
El problema con esa función es que no devuelve el puntero a la conexión y al usarla estás confiando en la última conexión abierta. Aunque funciona esto no es deseable.

cesand

  • Miembro MUY activo
  • ***
  • Mensajes: 127
    • Ver Perfil
Re: construir funciones propias
« Respuesta #6 en: Viernes 26 de Febrero de 2010, 21:52 »
0
mmmmm driverOp como me hubiece gustado interpretar bien lo que quiciste decir con que dijiste que mi funcion no devuelve el puntero a la conexión me podras decir con otras palabras como es eso? que significa que no devuelve el puntero a la conexion?

saludos

DriverOp

  • Miembro MUY activo
  • ***
  • Mensajes: 201
    • Ver Perfil
Re: construir funciones propias
« Respuesta #7 en: Viernes 26 de Febrero de 2010, 23:48 »
0
La función mysql_connect() cuando es exitosa devuelve un puntero, ese puntero se usa en las siguientes operaciones a la base de datos para indicar que debe usar esa conexión abierta y no otra.

[php:3tc12f4l]
  1.  
  2. $link = mysql_connect("localhost","usuario", "contraseña");
  3.  
[/php:3tc12f4l]

$link es el puntero de la conexión.

En tu código la función conn(), el primer parámetro es ese puntero.

Entonces para cada operación con MySQL debes indicarle qué conexión usar:

[php:3tc12f4l]
  1.  
  2. $result = mysql_query($sql, $link);
  3.  
[/php:3tc12f4l]

Tu función debería devolver ese puntero:

[php:3tc12f4l]
  1.  
  2. function conn($var2, $var3, $var4) {
  3.    $var1 = mysql_connect("$var2", "$var3", "$var4");
  4.    if (!$var1) {
  5.          echo "no se pudo conectar con la base de datos";
  6.    } else {
  7.          echo "se conectar con la base de datos";
  8.    }
  9.   return $var1;
  10. }
  11.  
[/php:3tc12f4l]

Y así poder usarlo en las otras operaciones:

[php:3tc12f4l]
  1.  
  2. require("fn_conexion.php");
  3. $link = conn("localhost", "root", "");
  4.  
  5. mysql_select_db("discos", $link);
  6.  
  7. $sql = "select * from discos";
  8. $query = mysql_query($sql, $link);
  9. $rows = mysql_num_rows($query);
  10.  
  11. for ($i=0; $i<$rows; $i++) {
  12. $ver = mysql_fetch_array($query);
  13. echo $ver['titulo_disco']."<br>";
  14. }
  15.  
[/php:3tc12f4l]

Lo que ocurre es que las funciones donde se usa ese puntero, el puntero es opcional porque PHP mantiene internamente una conexión activa que puede usarla cualquier función que la requiera, esa conexión activa es la última que se pide. En tu caso, como has abierto una sola no hay problema porque se usa siempre esa, pero te tocará el caso donde tengas que abrir más de una y trabajar con ellas al mismo tiempo y no sabrás por qué saltan errores "misteriosos".

En definitiva: es buena práctica de programación indicar siempre cuál conexión a la base de datos estás usando.

cesand

  • Miembro MUY activo
  • ***
  • Mensajes: 127
    • Ver Perfil
Re: construir funciones propias
« Respuesta #8 en: Lunes 1 de Marzo de 2010, 04:44 »
0
Muy buena driverOp
demore un poco en contestar porque estaba probando lo que me comentas y queria probar antes de responderte por las dudas que quede alguna duda y te la planteaba pero me dejaste bastante claro el asunto por ahora.. y como decis quizas ahora no me estoy dando cuenta por que es verdad hast ahora en todos los script que hice e usado una sola conexion la cual dejo abierta y uso para las consultas..
voy a implementar como dijiste esta "buena practica de programacion"
mil gracias
suerte.

cesand

  • Miembro MUY activo
  • ***
  • Mensajes: 127
    • Ver Perfil
Re: construir funciones propias
« Respuesta #9 en: Domingo 14 de Marzo de 2010, 05:30 »
0
DriverOp una pregunta...

por ahi parece que comprendo bien el return y ahora me caen otra vez dudas.. el uso de return es para cortar la continuidad de la funcion.. es decir si ponemos una condicion en la funcion y esta se cumple y aparece un return listo esa funcion se va ejecutar hasta ahi, pero el caso de esta funcion para conectar con mysql que vos me arreglaste
 cuando usas return $var1; que estas haciendo en otras palabras que no sea devolver el puntero.. que es lo que se esta haciendo? se esta obligando a que $var1 quede sin ningun valor? es decir que quede vacia asi cuando despues si nos hace falta abrir otra conexion podemos tabrajar con una conexion nueva?

 function conn($var2, $var3, $var4) {
    $var1 = mysql_connect("$var2", "$var3", "$var4");
    if (!$var1) {
          echo "no se pudo conectar con la base de datos";
   } else {
          echo "se conectar con la base de datos";
    }
   return $var1;
 }
 

es eso o estoy mal en lo que interpreto?

saludos

DriverOp

  • Miembro MUY activo
  • ***
  • Mensajes: 201
    • Ver Perfil
Re: construir funciones propias
« Respuesta #10 en: Domingo 14 de Marzo de 2010, 15:22 »
0
No entiendo bien cuál es tu duda.

La sentencia return efectivamente finaliza la función y además, si existe, hace que la función devuelva el valor que return tiene enfrente (en el ejemplo, el valor de $var1). Y en el ejemplo lo que la función conn() hace es exactamente lo mismo que haría mysql_connect() excepto que imprime un mensaje de aviso de si pudo o no conectarse (el ejemplo es muy tonto, la verdad).

cesand

  • Miembro MUY activo
  • ***
  • Mensajes: 127
    • Ver Perfil
Re: construir funciones propias
« Respuesta #11 en: Lunes 22 de Marzo de 2010, 18:11 »
0
como estas driverOp?

sabes que ahora voy a probar la conexion con el requiere y me hace la consulta pero me tira un error  :huh:  te muestro como hago:

este es el achivo que despues voy a llamar con la funcion:

biblioteca.php:
function conn($var2, $var3, $var4)
 {
    @$var = mysql_connect("$var2", "$var3", "$var4");
    if (!$var) {
          die("error al conectar mysql");
                }
return $var;
 }

asi lo llamo:
require("biblioteca.php");
$puntero = conn("localhost", "root", "");
mysql_select_db("sistema_de_noticias", $puntero);

y me tira este error:

Fatal error: Cannot redeclare conn() (previously declared in C:xampphtdocsweb1biblioteca.php:9) in C:xampphtdocsweb1biblioteca.php  on line 16

porque puede ser amigo? la consulta me la hace igual y muestra resultados despues pero no logro sacar este error.. me podras dar una mano?

mil gracias.

DriverOp

  • Miembro MUY activo
  • ***
  • Mensajes: 201
    • Ver Perfil
Re: construir funciones propias
« Respuesta #12 en: Lunes 22 de Marzo de 2010, 20:54 »
0
Pues eso, que tienes declarada dos veces la misma función en biblioteca.php, o al menos estás usando el mismo identificador (conn) en dos funciones distintas.

cesand

  • Miembro MUY activo
  • ***
  • Mensajes: 127
    • Ver Perfil
Re: construir funciones propias
« Respuesta #13 en: Martes 23 de Marzo de 2010, 04:33 »
0
muchas gracias amigo.. algo parecido era pero me di cuenta por lo que me dijiste y era que estaba llamando dos veces al archivo biblioteca.php en el mismo escript  :D disculpas ahora si. pero lo bueno es aprender sobre el error no? ahora ya se que se llama solo una vez a un archivo externo.

gracias capo.