Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/04/2011, 09:13
AitorLopez
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 15 años
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.