Ver Mensaje Individual
  #10 (permalink)  
Antiguo 14/03/2006, 15:47
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Creo que deberías replantear el tema ..

En principio en SQL tienes funciones como IN(lista de valores) para extraer (consultar) por cierto rango o ID's en tu caso individuales (justos los que seleccionas en tus select's y así los obtienes como un array de valores).

Esto optimizaría mucho tu proceso .. en el cual en esa función nada menos y nada más que conectas cada vez a tu BBDD haces todas las operaciones y obienes un resultado cuando podrías hacer que tu función "devuelva" un array de resultados.

Código PHP:
<?php 
        
include("conexion.php"); 
        
$conec mysql_connect($servidor$usuario$clave); 
        
mysql_select_db($db$conec); 

function 
getvalores($select) {
    
// se inicializa el array que vamos a poblar.
    
$valor_ok=array(); 
    
// concateno todos los "id" recibidos en un string separados por comas. Así lo define la sintax SQL de "IN()" en Mysql:
    
$recibimos implode(',',$_POST['id']); 
        
// Ejecutas tu consulta SQL 
        
$consulta "SELECT valor FROM" $select "WHERE ID IN(".$recibimos.")"
        
$query mysql_query($consulta$conec) or die (mysql_error());
             
// Recorres los resultados si hay más de 0 .. 
            
if (mysql_num_rows($query) > 0){ 
              while (
$row=mysql_fetch_array($query)) { 
                  
// creamos un array con los resultados (valores).
                  
$valor_ok[] = $row['valor']; 
              } 
            }
    
// devuelves un array con los resultados .. si no hay resultados, obtendras un array con ningún elemento en ella.
    
return ($valor_ok); 
}
Su uso:

Código PHP:
<?
foreach (getvalores($select) as $valor){
  echo 
$valor."<br>";
}
?>
Como generamos un array .. así lo tratamos (lo leemos) o accedemos a sus resultados (por los que se obtubieron).

Ya que quieres usar funciones y al parecer separar "procesos" .. esta sería una técnica. Por otro lado podrías llamar a otro proceso en el bucle que ya se hace en esa función.

No está de más decir que todo esto depende de que tu generes esos N "<select>" como un array (no pusistes el código de como lo haces actualmente).

Algo así:

<select name="id[]">
<option value="1">blabala</option>
<option value="2">blabala</option>
</select>

<select name="id[]">
<option value="1">blabala</option>
<option value="2">blabala</option>
</select>

<select name="id[]">
<option value="1">blabala</option>
<option value="2">blabala</option>
</select>

Un saludo,