Foros del Web » Programando para Internet » PHP »

Unificar una funcion

Estas en el tema de Unificar una funcion en el foro de PHP en Foros del Web. Hola. En un select, para mostrar los valores del mismo, hago una consulta a una bd. He realizado una funcion para que, sobre estos datos ...
  #1 (permalink)  
Antiguo 05/04/2011, 09:13
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 14 años, 10 meses
Puntos: 6
Unificar una funcion

Hola. En un select, para mostrar los valores del mismo, hago una consulta a una bd.
He realizado una funcion para que, sobre estos datos de esta consulta, haga una serie de campos y me devuelva un array con los cambios realizados.
Despues, en el select, recorro el array llamando a la consulta mostrar los datos.
Hasta aqui todo perfecto, lo tengo conseguido y funciona perfectamente.

Lo que quiero es unificar la funcion para que me valga para otros select y me encuentro con el problema de que, a la hora de llamar a los campos de la consulta, como la consulta será diferente se llaman de distinta manera, por lo que tendria que hacer una funcion para cada selecto y esto no es operativo.

Aqui os dejo los codigos, a ver que me podeis contar.

Select

Código PHP:
Ver original
  1. <select id="cbo_forma_pago" name="cbo_forma_pago<?php echo $a; ?>" tabindex="9" class="formulario2">
  2.               <option selected='selected'><?php echo primera_mayuscula($forma1['forma']).' '.$forma1['pago'];?></option>
  3.               <?php
  4.                                 $valores_combo = valores_combo(c_formas_pago_empresas($id_empresa),primera_mayuscula($forma1['forma']).' '.$forma1['pago']);
  5.                                 for ($i=0;$i<sizeof($valores_combo);$i++)
  6.                                 {
  7.                                     echo "<option>".$valores_combo[$i]."</option>";
  8.                                 }
  9.               ?>
  10.               </select>

La funcion
Código PHP:
Ver original
  1. function valores_combo($sql,$defecto)
  2. {
  3.     $rs = mysql_query($sql);
  4.     //Guardo el resultado de la consulta en un array
  5.     while ($rs1 = mysql_fetch_assoc($rs))
  6.     {
  7.         if (isset($i))
  8.         {
  9.             $valores[$i] = primera_mayuscula($rs1['forma']).' '.$rs1['pago'];
  10.             $i++;
  11.         }
  12.         else
  13.         {
  14.             $i = 0;
  15.             $valores[$i] = primera_mayuscula($rs1['forma']).' '.$rs1['pago'];
  16.             $i++;
  17.         }
  18.     }
  19.     //Quito del array el valor por defecto
  20.     for ($i=0;$i<=count($valores);$i++)
  21.     {
  22.         if ($valores[$i] == $defecto)
  23.         {
  24.             unset($valores[$i]);
  25.             break;
  26.         }
  27.     }
  28.     //Quito el elemento que ha quedado vacio en el array.
  29.     $valores = array_values($valores);
  30.  
  31.     return $valores;
  32. }
  33.  
  34. ?>

Como podeis ver, en el select, el parametro defecto sería la mismo que el valor del array en la funcion, a excepción de la forma de llamar a la consulta, que en el select es forma1 y en la funcion es rs.
Se podría cambiar el nombre en la funcion y poner a todos los rs, forma1, pero claro, me encontraré con otros select, que en de llamar forma 1, serán activ1, por ejemplo.

Bueno, espero que me entedais y gracias por vuestra ayuda. Un saludo.
  #2 (permalink)  
Antiguo 06/04/2011, 02:39
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Unificar una funcion

Y si le envias el nombre del campo??

Basicamente estarias usando la misma funcion para todos los select o cualquiera que quieras, agregando como variables los nombres de los campos.
Código PHP:
Ver original
  1. valores_combo($sql,$defecto,$titulo_uno,$titulo_dos)
Aunque tambien podrias tratando de enviar un array y luego modificar la funcion para cargar todas las variables que lleguen por ahi en el select.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 06/04/2011, 05:06
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 14 años, 10 meses
Puntos: 6
Respuesta: Unificar una funcion

Hola Marvin, así es como lo he hecho y me ha servido para todos los casos.

Un saludo.

Etiquetas: funcion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:58.