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: 24 años, 9 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,