Foros del Web » Programando para Internet » PHP »

optimizando codigo php

Estas en el tema de optimizando codigo php en el foro de PHP en Foros del Web. Existe alguna forma de optimizar: $sql="INSERT INTO personal(nombre,login,pass) VALUES('$f_nombre','$f_login','$f_pass')"; A algo parecido a: $sql="INSERT INTO nombre=$f_nombre login=$f_login pass=$f_pass "; Para lo que quiero hacer no ...
  #1 (permalink)  
Antiguo 11/11/2003, 15:46
 
Fecha de Ingreso: noviembre-2003
Ubicación: Málaga
Mensajes: 293
Antigüedad: 14 años, 1 mes
Puntos: 1
optimizando codigo php

Existe alguna forma de optimizar:

$sql="INSERT INTO personal(nombre,login,pass) VALUES('$f_nombre','$f_login','$f_pass')";

A algo parecido a:

$sql="INSERT INTO
nombre=$f_nombre
login=$f_login
pass=$f_pass
";



Para lo que quiero hacer no me funciona si el codigo php tiene comillas simples

  #2 (permalink)  
Antiguo 11/11/2003, 15:52
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Si no recuerdo mal, MySQL (o cualquier BD) necesita que las cadenas de texto esten limitadas por comillas. Ya no se si pueden ser simples o dobles.

Por curiosidad, ¿que es lo que te impide que tenga ' ? Si es para guardarla en una base de datos, escapas la cadena con addslashes() (www.php.net/addslashes), la guardas escapada, y luego al leerla la "deescapas" con stripslashes() (www.php.net/stripslashes).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 11/11/2003, 16:03
 
Fecha de Ingreso: noviembre-2003
Ubicación: Málaga
Mensajes: 293
Antigüedad: 14 años, 1 mes
Puntos: 1
Tengo varior ficheros inser_personal.php inser_producto.php etc... etc ..
todos ellos desde varios formularios html y queria desde los formularios html hacer esto:

<input type="hidden" name="f_value" value= 'INSERT INTO personal(nombre,login,pass) VALUES ("$f_nombre","$f_login","$f_pass") '>

de tal modo de solo tendria un fichero inser.php y no 20 que es lo que tengo ahora, ¿es posible?

LO QUE ME SALE ES:

INSERT INTO personal(nombre,login,pass) VALUES(\"$f_nombre\",\"$f_login\",\"$f_pass\")
GRACIAS POR ESTA PRONTA RESPUESTA
__________________

diseño web

Última edición por concric; 11/11/2003 a las 16:14
  #4 (permalink)  
Antiguo 11/11/2003, 16:44
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 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.
  #5 (permalink)  
Antiguo 12/11/2003, 07:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Como bien dice josemi .. pasar por parámetro el SQL completo de tu consulta es muyyyyyyyyyyyyyyyyyyyyyyy peligroso ..

En tus formularios/links .. etc .. lo único que debes "propagar" o pedir son referencias a tus variables que intervengan por ejemplo en tus consultas SQL .. pero nunca la consulta SQL en sí entera.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 12/11/2003, 08:11
 
Fecha de Ingreso: noviembre-2003
Ubicación: Málaga
Mensajes: 293
Antigüedad: 14 años, 1 mes
Puntos: 1
Ya lo tengo resuelto y lo tengo optimizado sin tener que acudir a in fechero insertar_loquesea cada vez, todo en el mismo fichero html !!! si html ¡¡¡ cadenas de comandos php en html y funciona ¿como? pues desde un mismo fichero php las variaves no son las de la bd sino las que hace las llamadas a los html de las modo que los trasforma en php, de este modo puesdo optimizarlo y no acudir a un fechero insertar.php uno por cada formulario.html (todo en uno)<? include("$verbd");?>

Esta solucion funciona muy bien pero seguro que existe mil formas de optimizar el codigo php, en fin otra cosa que es en lo que estoy ahora: tengo desarrollado el insertar foto pero quiero hacer lo siguiente: el poder que procese la imagen (1) que cambie el nombre por el del campo codigo o id (ejemplo: tengo una foto llamada foto_perro.jpg la inserto y se pasa a llamar automaticamente 1.jpg) otro tema es (2) que si la foto es en un CD o disquet mueva la imagen a una carpeta concreta automaticamente, y lo mas complicado (3) que le asigne un tamaño concreto si la imagen es de 500px de ancho lo cambie a 300px a si con todas, tela marinera aqui quea esto, tendria que abrir un foro nuevo con este problema, no se, bueno ¿ALGUNA PISTA? GRACIAS
__________________

diseño web
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 19:40.