Foros del Web » Programando para Internet » PHP »

diferenciar de insert y update

Estas en el tema de diferenciar de insert y update en el foro de PHP en Foros del Web. Hola, tengo problemas con un formulario de creacion de vehiculos, noc como distingir entre insertarlo o updatear un nuevo contenido contenido con esto primero me ...
  #1 (permalink)  
Antiguo 21/03/2011, 14:40
Avatar de xamilo  
Fecha de Ingreso: febrero-2010
Mensajes: 120
Antigüedad: 14 años, 2 meses
Puntos: 1
diferenciar de insert y update

Hola,

tengo problemas con un formulario de creacion de vehiculos, noc como distingir entre insertarlo o updatear un nuevo contenido contenido
con esto primero me inserta, luego solo me updatea el mismo conetenido
formulario:
Código PHP:
Ver original
  1. <form id="form" name="form" method="post" action="agregar_vehiculo.php" enctype="multipart/form-data">
  2. <input type="hidden" name="accion" value="agregar" />
  3.  
  4.     <div id="inf-puesto" align="center">
  5.    
  6.     <table width="945" border="0" cellpadding="5" cellspacing="0">
  7.    
  8.     <tr><ul id="navlist">
  9.          <td width="156" rowspan="3" ><span>Patente :</span></td>
  10.          <td width="189" rowspan="3"align="left"><input name="vehi_patente" class="caja-vehi"/></td>
  11.          <td width="122" rowspan="3" ><span>Due&ntilde;o :</span></td>
  12.          <td width="122" align="left"><input name="vehi_dueno" type="text" class="caja-vehi" /></td>
  13.          <td width="122" rowspan="3" ><span>Estado :</span></td>
  14.          <td width="130" align="left"><input name="vehi_estado" type="text" class="caja-vehi" /></td>
  15.          </ul> </tr>
  16.     </table>
  17.    <br />
  18.     <ul id="navlist">
  19.     <li><span>Observaciones</span><textarea name="vehi_observaciones" class="cajaobs" rows="4" cols="80"></textarea></li>
  20.     </ul>
  21.     </div>
  22.            
  23.     <br/><br/><br/>
  24.     <div id="inf-puesto" align="center">
  25.         <input name="enviar2" type="submit" value="Enviar" />
  26.         <input name="limpiar" type="reset" value="Limpiar">
  27.     </div> 
  28. </div>
  29.  
  30. </form>

query's :
Código PHP:
Ver original
  1. function seleccionaVehiculo()
  2. {  
  3.     $sqlvehi = "select vehi_patente, vehi_dueno, vehi_estado, vehi_observaciones from flotas.vehiculos";    //falta condicional where = id                         
  4.     $resvehi = pg_query($sqlvehi);     
  5.     return pg_fetch_array($resvehi);
  6. }
  7. if ($_POST['enviar2'] == "Enviar")
  8. {  
  9.     $vehi_pat = $_POST['vehi_patente'];
  10.     $vehi_due = $_POST['vehi_dueno'];
  11.     $vehi_est = $_POST['vehi_estado'];
  12.     $vehi_obs = $_POST['vehi_observaciones'];
  13.  
  14.         $rowvehi = seleccionaVehiculo();
  15.         if($rowvehi == "")
  16.         {
  17.             $sqlins ="insert into flotas.vehiculos (vehi_patente, vehi_dueno, vehi_estado, vehi_observaciones)
  18.                       values ('$vehi_pat','$vehi_due','$vehi_est','$vehi_obs')";   
  19.             $regins = pg_query($sqlins);
  20.         }
  21.         else
  22.         {
  23.             $sqlup ="update flotas.vehiculos set vehi_patente = '$vehi_pat',
  24.                      vehi_dueno = '$vehi_due', vehi_estado = '$vehi_est', vehi_observaciones = '$vehi_obs'";
  25.             $regup = pg_query($sqlup);     
  26.         }
  27. }

alguna ayuda?
__________________
- Ingeniero en Informática -
  #2 (permalink)  
Antiguo 21/03/2011, 14:48
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: diferenciar de insert y update

Lo que se suele hacer es tener un un campo hidden donde se guarda el id del elemento a editar, si esta el id seteado buscas el registro y haces el update sino creas un registro nuevo, te comento que a las querys de select como update les falta el where id = $id tal cual lo tenes ahora te va a hacer un select y update de todos los registros.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 21/03/2011, 14:53
Avatar de xamilo  
Fecha de Ingreso: febrero-2010
Mensajes: 120
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: diferenciar de insert y update

ejemplifica plz
__________________
- Ingeniero en Informática -
  #4 (permalink)  
Antiguo 21/03/2011, 14:55
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: diferenciar de insert y update

Mejor dicho a todas tus querys le faltan los where
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #5 (permalink)  
Antiguo 21/03/2011, 14:59
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: diferenciar de insert y update

es algo como esto :

Código PHP:
Ver original
  1. function seleccionaVehiculo()
  2.      {  
  3.           $sqlvehi = "select vehi_patente, vehi_dueno, vehi_estado, vehi_observaciones from flotas.vehiculos WHERE id_vehiculo='$id' " ; //falta condicional where = id
  4.           $resvehi = pg_query($sqlvehi);    
  5.           return pg_fetch_array($resvehi);
  6.       }
  7.       if ($_POST['enviar2'] == "Enviar")
  8.       {  
  9.           $vehi_pat = $_POST['vehi_patente'];
  10.           $vehi_due = $_POST['vehi_dueno'];
  11.           $vehi_est = $_POST['vehi_estado'];
  12.           $vehi_obs = $_POST['vehi_observaciones'];
  13.               $rowvehi = seleccionaVehiculo();
  14.               if($rowvehi == "")
  15.               {
  16.                   $sqlins ="insert into flotas.vehiculos (vehi_patente, vehi_dueno, vehi_estado, vehi_observaciones)
  17.                            values ('$vehi_pat','$vehi_due','$vehi_est','$vehi_obs') WHERE id_vehiculo='$id'";  
  18.                   $regins = pg_query($sqlins);
  19.               }
  20.               else
  21.               {
  22.                   $sqlup ="update flotas.vehiculos set vehi_patente = '$vehi_pat',
  23.                           vehi_dueno = '$vehi_due', vehi_estado = '$vehi_est', vehi_observaciones = '$vehi_obs' WHERE id_vehiculo='$id'";
  24.                   $regup = pg_query($sqlup);    
  25.               }
  26.       }

tu le debes pasar la variable $id a tu funcion,asi podras diferemciar los datos almacenados en tu bd
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #6 (permalink)  
Antiguo 22/03/2011, 07:51
Avatar de xamilo  
Fecha de Ingreso: febrero-2010
Mensajes: 120
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: diferenciar de insert y update

ok, pero tengo una duda.... mi id es autoincremental en la BD

como lo guardo en una variable para preguntar por el?
__________________
- Ingeniero en Informática -
  #7 (permalink)  
Antiguo 22/03/2011, 07:59
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: diferenciar de insert y update

cuando es autoincrementable no se guarda por variable en el insert , para consultar por el , este debe ser fk en otra tabla para poder realizar la comparacion y que devuelva los datos, por ejemplo tienes una tabla compra, que guarde el monto de la compra, el id de la persona que compro, el id del vendedor y el id de la tabla que aloja los productos, despues le dices que traiga los datos de la tabla productos, donde el id de venta es igual al id de productos y en venta donde el id de la persona que compro sea igual a el id de la persona que quieres revisar la compra, espero haberme explicado bien, saludos
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #8 (permalink)  
Antiguo 22/03/2011, 10:05
Avatar de xamilo  
Fecha de Ingreso: febrero-2010
Mensajes: 120
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: diferenciar de insert y update

algún ejemplo en código me seria más claro
__________________
- Ingeniero en Informática -
  #9 (permalink)  
Antiguo 22/03/2011, 10:47
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: diferenciar de insert y update

Bueno tu problema es muy facil de solucionar, pero a su ves ni vos entendes tu propio problema.

ese codigo lo que deberia hacer es validar que id exista en la base de datos.
SI existe hace un UPDATE teniendo en cuenta el ID que le llego por GET o POST o alguna otra forma x SESSION x ej.
si NO existe hace un INSERT
  #10 (permalink)  
Antiguo 22/03/2011, 10:50
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: diferenciar de insert y update

otra cosa muy importante es que tenes un solo formulario que solo sirve para crear un nuevo registro.
O es parte de una lista de vehiculos?
  #11 (permalink)  
Antiguo 22/03/2011, 13:21
Avatar de xamilo  
Fecha de Ingreso: febrero-2010
Mensajes: 120
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: diferenciar de insert y update

este formulario es para crear nuevos vehiculos y en otro formulario para viajes, es donde selecciono los vehiculos creados para asignarlos a viajes
Código PHP:
Ver original
  1. $sql5 = "select vehi_patente from flotas.vehiculos order by vehi_patente asc";
  2. $res5 = pg_query($sql5);
  3.  
  4.  
  5. <select name="patente" class="caja-select">
  6.                                     <?php while($row5 = pg_fetch_array($res5))
  7.                                      {  ?>
  8.                                      <option value="<?php echo( $row5["vehi_patente"] )?>" <? echo "selected=\"selected\""  ?> ><?php echo( $row5["vehi_patente"] )?></option>
  9.                                      <?php } ?>
  10.                                      </select>
__________________
- Ingeniero en Informática -

Etiquetas: insert, update
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 14:05.