Foros del Web » Programando para Internet » PHP »

Delete registro

Estas en el tema de Delete registro en el foro de PHP en Foros del Web. Hola a todos. Tengo un pequeño problema con un formulario escrito en php. El formulario se compone de un pequeño buscador en el que busco ...
  #1 (permalink)  
Antiguo 08/01/2012, 08:44
(Desactivado)
 
Fecha de Ingreso: enero-2004
Mensajes: 136
Antigüedad: 20 años, 4 meses
Puntos: 0
Delete registro

Hola a todos.

Tengo un pequeño problema con un formulario escrito en php.


El formulario se compone de un pequeño buscador en el que busco el registro por su ID y atraves de POST (formulario1)

El registro se me muestra en el segundo formulario (formulario2) que he diseñado, y luego tengo un boton para borrarlo.

El problema se me plantea cuando busco el registro, se muestra correctamente, pero automaticamente se borra de la base de datos (mysql), sin que yo haya oprimido el boton de borrar.
  #2 (permalink)  
Antiguo 08/01/2012, 08:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Delete registro

Cita:
El problema se me plantea cuando busco el registro, se muestra correctamente, pero automaticamente se borra de la base de datos (mysql), sin que yo haya oprimido el boton de borrar.
La única forma en que una base de datos borre un registro que ya está correctamente grabado es si le estás enviando la sentencia DELETE. Las bases de datos no hacen, en ese nivel, cosas automáticas.
Verifica tu consulta a la base, o el proceso completo del script. En alguna parte4 le estás diciendo a la base que borre el registro, sin previamente confirmarlo, o bien, el script no se detiene por errores de variables, y dispara el borrado sin esperar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 08/01/2012, 09:15
(Desactivado)
 
Fecha de Ingreso: enero-2004
Mensajes: 136
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: Delete registro

Este es el codigo que utilizo

<?php require_once('Connections/aluxbd.php'); ?>

<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

if ((isset($_POST['ID_PUBLICIDAD'])) && ($_POST['ID_PUBLICIDAD'] != "")) {
$deleteSQL = sprintf("DELETE FROM ads WHERE ID_PUBLICIDAD=%s",
GetSQLValueString($_POST['ID_PUBLICIDAD'], "int"));

mysql_select_db($database_aluxbd, $aluxbd);
$Result1 = mysql_query($deleteSQL, $aluxbd) or die(mysql_error());
}


$colname_General = "-1";
if (isset($_POST['ID_PUBLICIDAD'])) {
$colname_General = $_POST['ID_PUBLICIDAD'];
}
$colname2_General = "-1";
if (isset($_POST['TELEFONO'])) {
$colname2_General = $_POST['TELEFONO'];
}
mysql_select_db($database_aluxbd, $aluxbd);
$query_General = sprintf("SELECT * FROM ads WHERE (ID_PUBLICIDAD like %s) or (TELEFONO LIKE %s) ", GetSQLValueString($colname_General, "int"),GetSQLValueString($colname2_General, "int"));
$General = mysql_query($query_General, $aluxbd) or die(mysql_error());
$row_General = mysql_fetch_assoc($General);
$totalRows_General = mysql_num_rows($General);


$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}




mysql_select_db($database_aluxbd, $aluxbd);
$query_Autonomia = "SELECT * FROM autonomia";
$Autonomia = mysql_query($query_Autonomia, $aluxbd) or die(mysql_error());
$row_Autonomia = mysql_fetch_assoc($Autonomia);
$totalRows_Autonomia = mysql_num_rows($Autonomia);

mysql_select_db($database_aluxbd, $aluxbd);
$query_Bandera = "SELECT * FROM bandera";
$Bandera = mysql_query($query_Bandera, $aluxbd) or die(mysql_error());
$row_Bandera = mysql_fetch_assoc($Bandera);
$totalRows_Bandera = mysql_num_rows($Bandera);

mysql_select_db($database_aluxbd, $aluxbd);
$query_casa_club = "SELECT ID_LOCAL, LOCAL_CLUB FROM casa_club";
$casa_club = mysql_query($query_casa_club, $aluxbd) or die(mysql_error());
$row_casa_club = mysql_fetch_assoc($casa_club);
$totalRows_casa_club = mysql_num_rows($casa_club);

mysql_select_db($database_aluxbd, $aluxbd);
$query_categoria = "SELECT * FROM categoria";
$categoria = mysql_query($query_categoria, $aluxbd) or die(mysql_error());
$row_categoria = mysql_fetch_assoc($categoria);
$totalRows_categoria = mysql_num_rows($categoria);

mysql_select_db($database_aluxbd, $aluxbd);
$query_grupo_edad = "SELECT * FROM grupo_edad";
$grupo_edad = mysql_query($query_grupo_edad, $aluxbd) or die(mysql_error());
$row_grupo_edad = mysql_fetch_assoc($grupo_edad);
$totalRows_grupo_edad = mysql_num_rows($grupo_edad);

mysql_select_db($database_aluxbd, $aluxbd);
$query_lugar_trabajo = "SELECT * FROM lugar_trabajo";
$lugar_trabajo = mysql_query($query_lugar_trabajo, $aluxbd) or die(mysql_error());
$row_lugar_trabajo = mysql_fetch_assoc($lugar_trabajo);
$totalRows_lugar_trabajo = mysql_num_rows($lugar_trabajo);

mysql_select_db($database_aluxbd, $aluxbd);
$query_orientacion = "SELECT * FROM orientacion";
$orientacion = mysql_query($query_orientacion, $aluxbd) or die(mysql_error());
$row_orientacion = mysql_fetch_assoc($orientacion);
$totalRows_orientacion = mysql_num_rows($orientacion);

mysql_select_db($database_aluxbd, $aluxbd);
$query_pais = "SELECT * FROM pais";
$pais = mysql_query($query_pais, $aluxbd) or die(mysql_error());
$row_pais = mysql_fetch_assoc($pais);
$totalRows_pais = mysql_num_rows($pais);

mysql_select_db($database_aluxbd, $aluxbd);
$query_poblacion = "SELECT ID_CIUDAD, CIUDAD FROM poblacion";
$poblacion = mysql_query($query_poblacion, $aluxbd) or die(mysql_error());
$row_poblacion = mysql_fetch_assoc($poblacion);
$totalRows_poblacion = mysql_num_rows($poblacion);

mysql_select_db($database_aluxbd, $aluxbd);
$query_provincia = "SELECT ID_PROVINCIA, PROVINCIA FROM provincia";
$provincia = mysql_query($query_provincia, $aluxbd) or die(mysql_error());
$row_provincia = mysql_fetch_assoc($provincia);
$totalRows_provincia = mysql_num_rows($provincia);

mysql_select_db($database_aluxbd, $aluxbd);
$query_tarifas = "SELECT * FROM tarifas";
$tarifas = mysql_query($query_tarifas, $aluxbd) or die(mysql_error());
$row_tarifas = mysql_fetch_assoc($tarifas);
$totalRows_tarifas = mysql_num_rows($tarifas);

mysql_select_db($database_aluxbd, $aluxbd);
$query_Recordset1 = "SELECT * FROM grupo_tarifa";
$Recordset1 = mysql_query($query_Recordset1, $aluxbd) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

mysql_select_db($database_aluxbd, $aluxbd);
$query_edad = "SELECT EDAD FROM edad";
$edad = mysql_query($query_edad, $aluxbd) or die(mysql_error());
$row_edad = mysql_fetch_assoc($edad);
$totalRows_edad = mysql_num_rows($edad);

mysql_select_db($database_aluxbd, $aluxbd);
$query_pais_residencia = "SELECT PAIS FROM pais";
$pais_residencia = mysql_query($query_pais_residencia, $aluxbd) or die(mysql_error());
$row_pais_residencia = mysql_fetch_assoc($pais_residencia);
$totalRows_pais_residencia = mysql_num_rows($pais_residencia);

mysql_select_db($database_aluxbd, $aluxbd);
$query_ESTATURA = "SELECT ESTATURA FROM estatura";
$ESTATURA = mysql_query($query_ESTATURA, $aluxbd) or die(mysql_error());
$row_ESTATURA = mysql_fetch_assoc($ESTATURA);
$totalRows_ESTATURA = mysql_num_rows($ESTATURA);

mysql_select_db($database_aluxbd, $aluxbd);
$query_COLOR_PIEL = "SELECT COLOR_PIEL FROM color_piel";
$COLOR_PIEL = mysql_query($query_COLOR_PIEL, $aluxbd) or die(mysql_error());
$row_COLOR_PIEL = mysql_fetch_assoc($COLOR_PIEL);
$totalRows_COLOR_PIEL = mysql_num_rows($COLOR_PIEL);

mysql_select_db($database_aluxbd, $aluxbd);
$query_OJOS = "SELECT COLOR_OJOS FROM colo_ojos";
$OJOS = mysql_query($query_OJOS, $aluxbd) or die(mysql_error());
$row_OJOS = mysql_fetch_assoc($OJOS);
$totalRows_OJOS = mysql_num_rows($OJOS);

mysql_select_db($database_aluxbd, $aluxbd);
$query_CABELLO = "SELECT COLOR_PELO FROM color_pelo";
$CABELLO = mysql_query($query_CABELLO, $aluxbd) or die(mysql_error());
$row_CABELLO = mysql_fetch_assoc($CABELLO);
$totalRows_CABELLO = mysql_num_rows($CABELLO);

mysql_select_db($database_aluxbd, $aluxbd);
$query_PESO = "SELECT PESO FROM peso";
$PESO = mysql_query($query_PESO, $aluxbd) or die(mysql_error());
$row_PESO = mysql_fetch_assoc($PESO);
$totalRows_PESO = mysql_num_rows($PESO);

mysql_select_db($database_aluxbd, $aluxbd);
$query_PECHO = "SELECT PECHO FROM pecho";
$PECHO = mysql_query($query_PECHO, $aluxbd) or die(mysql_error());
$row_PECHO = mysql_fetch_assoc($PECHO);
$totalRows_PECHO = mysql_num_rows($PECHO);

mysql_select_db($database_aluxbd, $aluxbd);
$query_COMPLEXION = "SELECT COMPLEXION FROM complexion";
$COMPLEXION = mysql_query($query_COMPLEXION, $aluxbd) or die(mysql_error());
$row_COMPLEXION = mysql_fetch_assoc($COMPLEXION);
$totalRows_COMPLEXION = mysql_num_rows($COMPLEXION);

mysql_select_db($database_aluxbd, $aluxbd);
$query_TARIFA_MINIMA = "SELECT TARIFA_MINIMA FROM tarifa_minima";
$TARIFA_MINIMA = mysql_query($query_TARIFA_MINIMA, $aluxbd) or die(mysql_error());
$row_TARIFA_MINIMA = mysql_fetch_assoc($TARIFA_MINIMA);
$totalRows_TARIFA_MINIMA = mysql_num_rows($TARIFA_MINIMA);

mysql_select_db($database_aluxbd, $aluxbd);
$query_HORARIO = "SELECT HORARIO FROM horario";
$HORARIO = mysql_query($query_HORARIO, $aluxbd) or die(mysql_error());
$row_HORARIO = mysql_fetch_assoc($HORARIO);
$totalRows_HORARIO = mysql_num_rows($HORARIO)
  #4 (permalink)  
Antiguo 08/01/2012, 09:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Delete registro

Muy bonito, pero ¿revisaste lo que te dije? ¿A qué conclusión llegaste? ¿Hay algún defecto que tu mismo hayas encontrado en tu código?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 08/01/2012, 09:27
(Desactivado)
 
Fecha de Ingreso: enero-2004
Mensajes: 136
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: Delete registro

Lo que he comprobado es que si mantengo el codigo asi, y la busqueda la realizado en vez de por el ID_PUBLICIDAD, por el TELEFONO, me muestra el registro y yo elijo cuando borrarlo. Si la búsqueda la realizo por ID_PUBLICIDAD lo muestra en pantalla pero al mismo tiempo lo borra.

gracias.
  #6 (permalink)  
Antiguo 08/01/2012, 09:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Delete registro

Obvio, porque estás metiendo en el mismo proceso el borrado que la consulta...
Lo que tienes es un error de lógica. Yo nunca pondría en la misma función las consultas que los borrados. Un simple error como el que $_POST['ID_PUBLICIDAD']) entre con un valor, lo primero que hace es borrar...
Para que eso tuviese sentido, no sólo debería entrar con un valor válido, también deberías evaluar otro argumento tal que ese si indicase el borrado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 08/01/2012, 09:46
(Desactivado)
 
Fecha de Ingreso: enero-2004
Mensajes: 136
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: Delete registro

Estoy echo un lio. Yo lo que quiero es buscar un registro por us ID, y luego borrar dicho registro si lo necesito borrar.
  #8 (permalink)  
Antiguo 08/01/2012, 09:47
(Desactivado)
 
Fecha de Ingreso: enero-2004
Mensajes: 136
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: Delete registro

no se le podria asignar la funcio de borrado al boton que tengo a tal efecto???
  #9 (permalink)  
Antiguo 08/01/2012, 11:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Delete registro

De todos modos tienes que corregir esa función de borrado para que sólo se ejecute cuando le envíes el parámetro que indique borrado.
No pierdas las perspectiva: El error es de lógica de programación. El script entero está mal estructurado, porque la acción de borrado está contenida dentro de un bloque que no corresponde.
Da la impresión de que nunca hubieses asistido a una clase de programación... Ni en la escuela.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 08/01/2012, 11:19
(Desactivado)
 
Fecha de Ingreso: enero-2004
Mensajes: 136
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: Delete registro

Pues ese es el problema. Jamas he ido a una clase de programacion. Estoy lo estoy haciendo con Dreamweaver y con cosillas que voy aprendiendo.
  #11 (permalink)  
Antiguo 08/01/2012, 11:35
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Delete registro

Ufff!
Bueno. Por lo pronto, si vas a hacer tareas completamente diferentes, como consultar, escribir, borrar o actualizar, no pongas todas esas tareas en la misma llamada, y menos en la misma función. Es una muy mala práctica.
En todo caso, comienza por hacer un script que permita derivar cada operación a la función adecuada, sobre la base de algún parámetro o valor que le envíes. Luego haz un script o una función donde cada tarea distinta se encuentre completamente encapsulada.
Y no te confundas al Dreamweaver con el PHP. Son cosas independientes.
El HTML y JavaScript se ejecutan en el navegador, el PHP en el servidor y el PHP no interactua con los elementos del formulario, por lo que no puede leer botones.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 08/01/2012, 12:31
(Desactivado)
 
Fecha de Ingreso: enero-2004
Mensajes: 136
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: Delete registro

Hola.

Gracias por los consejos.

Por ahora he conseguido resolver el problema, pero se me ha planteado otro:

Como puedo redireccionar cuando aprieto al boton BORRAR a otra pagina?


Muchas gracias.

Etiquetas: delete, formulario, mysql, registro
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 20:47.