Foros del Web » Programando para Internet » PHP »

funcion para insertar

Estas en el tema de funcion para insertar en el foro de PHP en Foros del Web. hola que tal... he tenido problemas con mi hosting que solo tiene el mysql 4 y no permite procedimientos almacenados en phpmyadmin ... y bueno ...
  #1 (permalink)  
Antiguo 03/03/2009, 08:34
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 2 meses
Puntos: 9
funcion para insertar

hola que tal... he tenido problemas con mi hosting que solo tiene el mysql 4 y no permite procedimientos almacenados en phpmyadmin ... y bueno como he estado trabajando mis proyectos con sp, deberé cambiar mi forma de trabajar.

Por lo que me veo obligado a crear sp con el php, pero quisiera que me enseñen por favor a crear una sola funcion que ejecute un insert para registros por ejemplo.... pero que esta funcion sea aplicable para todos formularios en que tenga que registrar data, en vez de estar haciendo grandes querys con insert.

se que tendria como parametros el nombre de la tabla y los campos, pero los campos de las diferentes tablas varian y como haria para saber cuantos campos entrarian en ese insert... meterlo en un array? me podrian dar un ejemplo, con esta ayuda podria aplicarlo para los updates y deletes tambien, espero me ayuden... saludos
__________________
Quitenme la vida pero no la bebida.
  #2 (permalink)  
Antiguo 03/03/2009, 09:41
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 7 meses
Puntos: 70
Respuesta: funcion para insertar

Hola cesarpunk, cómo vas?

En mysql hay una forma abreviada de hacer inserts:
Código mysql:
Ver original
  1. insert into tabla values (0, 'tit', 'sdfsdf');

Ten en cuenta que no puede faltar ni un sólo valor de los respectivos campos porque sino mysql te arrojará error sintáctico.

De esta manera abreviada, solo necesitarías pasar dos parámetros a la función, la tabla y los valores, nada mas...

Código php:
Ver original
  1. function insert_db($tabla, $valores)
  2. {
  3. $q_sql = "insert into $tabla values ($valores);";
  4. $e_sql = mysql_query($q_sql);
  5. }

Esa sería la forma mas básica...

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #3 (permalink)  
Antiguo 03/03/2009, 09:56
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 2 meses
Puntos: 9
Respuesta: funcion para insertar

hola carlx gracias por tu respuesta, disculpa mi ignorancia pero podria darme un ejemplo de como aplicarlo??? por ejemplo tengo una tabla clientes con 20 campos
y otra tabla productos con 14 campos... como aplicaria esa sola funcion en ambos casos? hago un $_POST pasando todos mis datos, ahora al querer ejecutar esa funcion como genero esos parametros? supongo que en el parametro $tabla debo simplemente escribir el nombre de la tabla que necesito, pero el parametro valor es variable....

espero tu respuesta, gracias nuevamente
__________________
Quitenme la vida pero no la bebida.
  #4 (permalink)  
Antiguo 03/03/2009, 10:13
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 7 meses
Puntos: 70
Respuesta: funcion para insertar

Es breve cesarpunk...

Debes armar la cadena por tu cuenta...

Supón:
Código php:
Ver original
  1. $_POST['numero'] = 2;
  2. $_POST['nombre'] = "carxl";
  3. $_POST['fecha'] = "2008-03-03";
  4.  
  5. $cadena = implode (",", $_POST);
  6. //la cadena: "2, carxl, 2008-03-03";
  7. insert_db("alguna_tabla", $cadena);

Esa es la idea general cesarpunk... pero ojo!! Ojo que te falta tratar las variables para que queden con sintáxis mysql, osea las comillas simples...

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #5 (permalink)  
Antiguo 03/03/2009, 10:29
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 2 meses
Puntos: 9
Respuesta: funcion para insertar

perfecto, pero no me quedo claro lo del implode(",", $_POST) ahi le estas adjuntando la coma a todos los POST, en mi caso yo paso el post a otra pagina y los recojo con variables:

$nombre = $_POST['nombre'];
$categoria = $_POST['lcategoria'];
$subcategoria = $_POST['lsubcategoria'];
$direccion = $_POST['direccion'];
$telefono = $_POST['telefono'];
$telefono2 = $_POST['telefono2'];
$email = $_POST['email'];
$website = $_POST['website'];

osea deberia primero armar la cadena manualmente?

Código PHP:
$cadena='"'.$nombre.'","'.$categoria.'","'....'","'.$website.'"'
si es asi seria muy trabajoso
__________________
Quitenme la vida pero no la bebida.
  #6 (permalink)  
Antiguo 03/03/2009, 10:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: funcion para insertar

Pues es lo mismo puedes usar el implode de la misma forma directo del POST sin tener que descargarlos a variables. Solamente recuerda lo que ya te dijo Carxl, tienes que limpiar tu input.

Saludos
  #7 (permalink)  
Antiguo 03/03/2009, 11:14
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 2 meses
Puntos: 9
bien lo voy a aplicar, en breve les comento como me fue, gracias

bueno lo probe y al parecer funciona.... pero lo que genera el implode me impide grabar,sale algo asi:

Código:
nombre,apellido,1,1,1902,0,D.N.I.,33333,44444,,[email protected],, Guardar ,1
1.ese 1,1,1902 es la fecha de nacimiento por eso recibia el POST y lo ponia en variable para convertir eso al formato de fecha
2.No se porque sale ese guardar pero lo demas esta bien
3.bueno ahi faltaria como escribio carlx, el poner comillas a cada dato

saludos
__________________
Quitenme la vida pero no la bebida.

Última edición por GatorV; 03/03/2009 a las 11:54
  #8 (permalink)  
Antiguo 03/03/2009, 11:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: funcion para insertar

El guardar debe de ser el botón de Submit, por lo que vas a tener que realizar más limpieza para no guardarlo.

La fecha lo más recomendable es guardar el timestamp o en su defecto el formato que MySQL te pide que es YYYY-MM-DD

Saludos
  #9 (permalink)  
Antiguo 03/03/2009, 12:03
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 1 mes
Puntos: 20
Respuesta: funcion para insertar

Recibes la fecha en 3 campos distintos?

No importa, solo es cuestión de ajustarlo a tus métodos. Puedes hacerlo así:

Código PHP:
//Suponiendo que son $_POST['dia']  $_POST['mes'] y $_POST['anyo'];

//Recopilas todos los datos
$datos $_POST;

//Juntas la fecha
$datos['fecha'] = $datos['dia']."-".$datos['mes']."-".$datos['anyo'];

//Te deshaces de las 3 partes porque ya tienes la entera
unset ($datos['dia']);
unset (
$datos['mes']);
unset (
$datos['fecha']); 
Y el implode, insert y demás a continuación, lo haces con $datos en lugar de $_POST
  #10 (permalink)  
Antiguo 03/03/2009, 12:08
 
Fecha de Ingreso: noviembre-2005
Ubicación: Torreon Coahuila
Mensajes: 100
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: funcion para insertar

Aqui otra forma de hacerlo e insertas solo las campos que utilices

Código PHP:
$query ="INSERT INTO";
$query.=" tabla ";
$query. =" SET ";
$query.="fecha_registro=now(),";
$query.="campo1=$dato1,";
$query.="campo2=$dato2,";
$query.="campo3=$dato3,";
$query.="campo4=$dato4";
$query = @mysql_query($query);
        if (!
$query
        {
        
$error=mysql_error();
        echo 
"Insert Incorrecto , Error=".$error;
        }
      else
         {
               echo 
"Insert Correcto";
             } 
  #11 (permalink)  
Antiguo 03/03/2009, 12:28
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 2 meses
Puntos: 9
Respuesta: funcion para insertar

lo ultimo esta interesante... pero a mi me recomendaron meter los campos en un array y solo poner como parametro la tabla y el array, lo de david_M_G funciono muy bien solo me falta quitar ese guardar de ahi xd (nose a que se refiere Gatorv con la limpieza, si siquiera es un submit es un button :S). Va a ser muy trabajoso pero lo lograre, de todas maneras gracias.
__________________
Quitenme la vida pero no la bebida.
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 16:59.