Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/11/2003, 16:44
josemi
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Bien, parece que tu PHP tiene magic_quotes_gpc a ON, lo que quiere decir que escapa automaticamente todas las variables que lleagan por POST (formularios), GET (URLs) o cookies.

En tu caso quieres sustituir los valores $f_ por los valores de sus variables. En este caso necesitaras la funcion eval() (www.php.net/eval). Algo asi:
Código PHP:
$sql=$_POST['f_value']; // si tu method es POST
eval("\$sql=\"$sql\";");

echo 
$sql;  // $sql tendra los valores sustituidos.

$result=mysql_query($sql); 
Asi deberia funcionar (lo he hecho de cabeza).

Pero antes de usar este metodo, piensa los riesgos que implica. Alguien podria simular el envio de un form y mandarte un "delete from tabla" o algo asi. Supongo que sera para un area de administracion, donde las paginas estan bien protegidas. Porque el riesgo es alto.

Una opcion seria que en ese campo oculto solo pasaras un identificativo del insert, y que en tu pagina insert.php tuvieses algo como:
Código PHP:
// definiciones de los inserts
$array_inserts[0]=array(
'tabla'=>'personal'
,'campos_tabla'=>array('nombre','login','pass')
,
'campos_form'=>array('f_nombre','f_login','f_pass')
);
$array_inserts[1]=array(
'tabla'=>'caballos',
,
'campos_tabla'=>array('nombre','raza')
,
'campos_form'=>array('f_nombre','f_raza')
);
$array_inserts[2]=array(
'tabla'=>'pagos',
,
'campos_tabla'=>array('referencia','cantidad')
,
'campos_form'=>array('f_referencia','f_cantidad')
);

// creacion de la consulta
$id=$_POST['f_value'];  // recogemos el campo oculto

$tabla=$array_inserts[$id]['tabla'];
$campos=implode(',',$array_inserts['$id]['campos_tabla']);
$valores='';
foreach($array_inserts[$id]['
campos_form'] as $campo_form) {
  if (''!=$valores) $valores .='
,';
  $valores .="'".$_POST[$campo_form]."";
}
$sql="
INSERT INTO $tabla ($camposVALUES ($valores)";
echo $sql; 
En caso de necesitar un nuevo insert, solo tienes que crear un elemento mas en el array $array_inserts.

Saludos.

PD: Puede que el codigo no funcione tal como esta, lo he hecho de cabeza.

PD2: Por supuesto, se deben añadir las comprobaciones de seguridad de que los parametros existen y tienen valor, etc.

PD3: Si hay alguna funcion que es nueva para ti, primero revisa el manual (www.php.net) y si sigues con dudas pregunta aqui.
__________________
Josemi

Aprendiz de mucho, maestro de poco.