Foros del Web » Programando para Internet » PHP »

PHP - Comprobación de update.

Estas en el tema de PHP - Comprobación de update. en el foro de PHP en Foros del Web. Hola compañer@s Estoy haciendo un proyecto para terminar el Ciclo superior de ASI en PHP me gustaría saber como lanzar un mensaje/aviso si al realizar ...
  #1 (permalink)  
Antiguo 16/05/2011, 12:32
 
Fecha de Ingreso: mayo-2011
Ubicación: Jaén - [Andalucía]
Mensajes: 17
Antigüedad: 12 años, 11 meses
Puntos: 1
PHP - Comprobación de update.

Hola compañer@s Estoy haciendo un proyecto para terminar el Ciclo superior de ASI en PHP me gustaría saber como lanzar un mensaje/aviso si al realizar un update con los datos insertados "nuevos" son los mismos que los que ya están en lo que se quiere modificar... ¿entendéis? Os dejo el código:

<?
$v1=$_POST['dia']; //<- contiene la fecha introducida en el textbox.
$v2=$_POST['hora']; //<- contiene la hora seleccionada del combobox.
$v3=$_GET['vari']; //<- contiene el código de reserva del elemento a modificar seleccionado anteriormente.

$sentencia="update reserva set fecha='$v1', hora='$v2' where cod_reserva='$v3'";
mysql_query($sentencia) or die("No se puede realizar la consulta a la base de datos de modificación");

if($sentencia==true) //<- esto está mal no es así...
{
echo "<table border=0 cellpadding=0 cellspacing=0 align=center>";
echo "<tr><td><b>La reserva seleccionada ha sido modificada con éxito.</b></td></tr>";
echo "<tr><td>&nbsp;</td></tr>";
echo "<tr><td align=middle><a href='lista_propia.php' target=_self><img width=75 height=50 src=images/volver.png title='Volver a la lista propia de reservas'></a></td></tr>";
echo "</table>";
}
else
{
echo "<table border=0 cellpadding=0 cellspacing=0 align=center>";
echo "<tr><td><b>La reserva seleccionada no hay sido modificada.</b></td></tr>";
echo "<tr><td>&nbsp;</td></tr>";
echo "<tr><td align=middle><a href='lista_propia.php' target=_self><img width=75 height=50 src=images/volver.png title='Volver a la lista propia de reservas'></a></td></tr>";
echo "</table>";
}

?>

Muchas gracias de antemano. (:

Última edición por ogata99; 16/05/2011 a las 12:41
  #2 (permalink)  
Antiguo 16/05/2011, 13:17
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: PHP - Comprobación de update.

Holas,

Lo que podrias hacer es:

1. Antes de hacer un update (SQL), podrias hacer una consulta con los valores que tratas de hacer un update a tu base de datos si ya existe o no. Y luego ya vez recien si haces el update o no.

2. En tu base de datos podrias usar claves unicas, esto te evitaria y es mas recomendable, asi ya no dependerias de tu codigo. En otras palabras esa restriccion se manejaria directamente en tu base de datos.

Saludos
Gildus
__________________
.: Gildus :.
  #3 (permalink)  
Antiguo 16/05/2011, 13:21
Avatar de dmm84  
Fecha de Ingreso: marzo-2011
Mensajes: 164
Antigüedad: 13 años
Puntos: 13
Respuesta: PHP - Comprobación de update.

Código PHP:
Ver original
  1. $sql = 'SELECT * FROM `reserva` WHERE `fecha` = \''. $_POST['dia'] .'\' AND `hora` = \''. $_POST['hora'] .'\' AND `cod_reserva` = \''. $_GET['vari'] .'\' ';
  2. $resultado = mysql_query($sql);
  3. while ($fila = mysql_fetch_array($resultado, MYSQL_ASSOC)) {
  4.     $existe = true;
  5. }
  6. if($existe == false) {
  7.     $sentencia="update reserva set fecha='$v1', hora='$v2' where cod_reserva='$v3'";
  8.     mysql_query($sentencia);
  9.     if($sentencia==true) {
  10.         echo "<table border=0 cellpadding=0 cellspacing=0 align=center>";
  11.         echo "<tr><td><b>La reserva seleccionada ha sido modificada con éxito.</b></td></tr>";
  12.         echo "<tr><td>&nbsp;</td></tr>";
  13.         echo "<tr><td align=middle><a href='lista_propia.php' target=_self><img width=75 height=50 src=images/volver.png title='Volver a la lista propia de reservas'></a></td></tr>";
  14.         echo "</table>";
  15.     } else {
  16.         echo "<table border=0 cellpadding=0 cellspacing=0 align=center>";
  17.         echo "<tr><td><b>La reserva seleccionada no hay sido modificada.</b></td></tr>";
  18.         echo "<tr><td>&nbsp;</td></tr>";
  19.         echo "<tr><td align=middle><a href='lista_propia.php' target=_self><img width=75 height=50 src=images/volver.png title='Volver a la lista propia de reservas'></a></td></tr>";
  20.         echo "</table>";
  21.     }
  22. }

es algo asi lo que necesitas?
__________________
Mas vale un codigo que mil palabras
  #4 (permalink)  
Antiguo 16/05/2011, 16:12
 
Fecha de Ingreso: mayo-2011
Ubicación: Jaén - [Andalucía]
Mensajes: 17
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: PHP - Comprobación de update.

Hola gildus lo que me has comentado es algo parecido a lo que ha escrito el compañero dmm84? acabo de probar su código, pero no se creo es raro, porque si introduzco los mismos datos en lo que quiero modificar no muestra nada ¿Por qué no muestra nada si se supone que no modifica...? Si cambio datos como la hora o la fecha los cambia pero aparece el siguiente error:


Notice: Undefined variable: existe in C:\xampp\htdocs\proyecto\modificar.php on line 23

El error es en la linea donde está la parte del if || if($sentencia==true) ||
  #5 (permalink)  
Antiguo 16/05/2011, 16:35
 
Fecha de Ingreso: mayo-2011
Ubicación: Jaén - [Andalucía]
Mensajes: 17
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: PHP - Comprobación de update.

Compañer@s ya me funciona, pero una última cosa porque al modificar muestra en la linea del if if($existe==false) lo siguiente:

Notice: Undefined variable: existe in C:\xampp\htdocs\proyecto\modificar.php on line 23

Dejo el código que he usado gracias a dmm84 :D

<?
$v1=$_POST['dia']; //<- contiene la fecha introducida en el textbox.
$v2=$_POST['hora']; //<- contiene la hora seleccionada del combobox.
$v3=$_GET['vari']; //<- contiene el código de reserva del elemento a modificar seleccionado anteriormente.

$sql = 'select * from `reserva` where `fecha` = \''. $_POST['dia'] .'\' and `hora` = \''. $_POST['hora'] .'\' and `cod_reserva` = \''. $_GET['vari'] .'\' ';
$resultado=mysql_query($sql);

while ($fila=mysql_fetch_array($resultado, MYSQL_ASSOC))
{
$existe=true;
}
if($existe==false)
{
$sentencia="update reserva set fecha='$v1', hora='$v2' where cod_reserva='$v3'";
mysql_query($sentencia);

//if($sentencia==true)
//{
echo "<table border=0 cellpadding=0 cellspacing=0 align=center>";
echo "<tr><td><b>La reserva seleccionada ha sido modificada con éxito.</b></td></tr>";
echo "<tr><td>&nbsp;</td></tr>";
echo "<tr><td align=middle><a href='lista_propia.php' target=_self><img width=75 height=50 src=images/volver.png title='Volver a la lista propia de reservas'></a></td></tr>";
echo "</table>";

// }
}
else
{
echo "<table border=0 cellpadding=0 cellspacing=0 align=center>";
echo "<tr><td><b>Has introducido la misma fecha y hora para modificar la reserva. La reserva no ha sido modificada.</b></td></tr>";
echo "<tr><td>&nbsp;</td></tr>";
echo "<tr><td align=middle><a href='lista_propia.php' target=_self><img width=75 height=50 src=images/volver.png title='Volver a la lista propia de reservas'></a></td></tr>";
echo "</table>";
}
?>
  #6 (permalink)  
Antiguo 16/05/2011, 16:53
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: PHP - Comprobación de update.

Hola, te corrijo el codigo:


Código PHP:
<?
$v1
=$_POST['dia']; //<- contiene la fecha introducida en el textbox.
$v2=$_POST['hora']; //<- contiene la hora seleccionada del combobox.
$v3=$_GET['vari']; //<- contiene el código de reserva del elemento a modificar seleccionado anteriormente.

$sql 'select * from `reserva` where `fecha` = \''$_POST['dia'] .'\' and `hora` = \''$_POST['hora'] .'\' and `cod_reserva` = \''$_GET['vari'] .'\' ';
$resultado=mysql_query($sql);
if(
mysql_num_rows($resultado)<=0)
{    
$sentencia="update reserva set fecha='$v1', hora='$v2' where cod_reserva='$v3'";
    
mysql_query($sentencia);
    
    
//if($sentencia==true)
    //{
    
echo "<table border=0 cellpadding=0 cellspacing=0 align=center>";
    echo 
"<tr><td><b>La reserva seleccionada ha sido modificada con éxito.</b></td></tr>";
    echo 
"<tr><td>&nbsp;</td></tr>";
    echo 
"<tr><td align=middle><a href='lista_propia.php' target=_self><img width=75 height=50 src=images/volver.png title='Volver a la lista propia de reservas'></a></td></tr>";
    echo 
"</table>";
    
    
// }
    
}
    else
    {
    echo 
"<table border=0 cellpadding=0 cellspacing=0 align=center>";
    echo 
"<tr><td><b>Has introducido la misma fecha y hora para modificar la reserva. La reserva no ha sido modificada.</b></td></tr>";
    echo 
"<tr><td>&nbsp;</td></tr>";
    echo 
"<tr><td align=middle><a href='lista_propia.php' target=_self><img width=75 height=50 src=images/volver.png title='Volver a la lista propia de reservas'></a></td></tr>";
    echo 
"</table>";
}
?>
Solo como un detalle cuando hagas un SELECT *...., trata de usarlo con prudencia solo los campos que vas ha usarlos, sino seria un desperdicio traer todos los campos. Sobre el SQL anterior:
Código PHP:
$sql 'select * from `reserva` where `fecha` = \''$_POST['dia'] .'\'  and `hora` = \''$_POST['hora'] .'\' and `cod_reserva` = \''.  $_GET['vari'] .'\' '
Mejor en vez del * podrias solo seleccionar un solo campo, como podria ser el Id principal de la tabla reserva. Por ejmplo:
Código PHP:
$sql 'select cod_reserva  from `reserva` where `fecha` = \''$_POST['dia'] .'\'   and `hora` = \''$_POST['hora'] .'\' and `cod_reserva` = \''.   $_GET['vari'] .'\' '

Saludos
Gildus
__________________
.: Gildus :.
  #7 (permalink)  
Antiguo 17/05/2011, 09:40
 
Fecha de Ingreso: mayo-2011
Ubicación: Jaén - [Andalucía]
Mensajes: 17
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: PHP - Comprobación de update.

Gracias compañer@s! funciona perfectamente es un pasito más para terminar el proyecto! :D de nuevo muchas gracias.

Etiquetas: 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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 15:07.