Foros del Web » Programando para Internet » PHP »

texfield, llamado clave delete

Estas en el tema de texfield, llamado clave delete en el foro de PHP en Foros del Web. No tengo bien definido el texfield, llamado clave, el cual al ingresar el numero de clave elimine la fila. porfavor me ayudan Codigo: <html> <head> ...
  #1 (permalink)  
Antiguo 23/08/2008, 15:21
 
Fecha de Ingreso: agosto-2008
Mensajes: 587
Antigüedad: 15 años, 8 meses
Puntos: 6
texfield, llamado clave delete

No tengo bien definido el texfield, llamado clave, el cual al ingresar el numero de clave elimine la fila.




porfavor me ayudan

Codigo:

<html>
<head>
<title>Eliminar PHP</title>

</head>

<body>
<form name="form1" method="post" action="eliminar.php">
ingrese el ID a eliminar:
<input type="text" name="clave">
<input type="submit" name="Submit" value="Enviar">
</form>

<?php

$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("my_db", $con);

if($_POST['Submit']){

mysql_query("DELETE FROM Person WHERE ID='".$_POST['clave']"'";

}

mysql_close($con);
?>

</body>
</html>


Codigo BD

CREATE TABLE IF NOT EXISTS `personas` (
`ID` int(11) NOT NULL auto_increment,
`nombre` varchar(15) default NULL,
`region` varchar(15) default NULL,
`comuna` varchar(15) default NULL,
`telefono` varchar(15) default NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
  #2 (permalink)  
Antiguo 23/08/2008, 15:36
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: texfield, llamado clave delete

mysql_query("DELETE FROM Person WHERE ID='".$_POST['clave']."'";
Mira esta linea. Estas llamando a una base de datos llamada "Person".

Y tu base de datos se llama: personas. -_-

CREATE TABLE IF NOT EXISTS `personas` (
  #3 (permalink)  
Antiguo 23/08/2008, 17:03
 
Fecha de Ingreso: agosto-2008
Mensajes: 587
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: texfield, llamado clave delete

le cambia el nombre de la tabla, pero continua con el error en esa linea

mysql_query("DELETE FROM personas WHERE ID='".$_POST['clave']"'";
  #4 (permalink)  
Antiguo 23/08/2008, 17:24
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: texfield, llamado clave delete

Cita:
Iniciado por flashtkd Ver Mensaje
le cambia el nombre de la tabla, pero continua con el error en esa linea

mysql_query("DELETE FROM personas WHERE ID='".$_POST['clave']"'";
No estas concatenando correctamente. Te falta un punto:

mysql_query("DELETE FROM personas WHERE ID='".$_POST['clave']."'";

Cambialo y creo que no dara mas error.
  #5 (permalink)  
Antiguo 23/08/2008, 18:18
 
Fecha de Ingreso: agosto-2008
Mensajes: 587
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: texfield, llamado clave delete

Ya probe con esto:

mysql_query("DELETE FROM personas WHERE ID='".$_POST['clave']."'";

continua el error, Parse error: syntax error, unexpected

No me reconoce el textfield llamado clave, que podra ser ?

Pero cuando coloco un numero fijo de ID me lo borra correctamente

mysql_query("DELETE FROM personas WHERE ID='5'");
  #6 (permalink)  
Antiguo 23/08/2008, 19:34
 
Fecha de Ingreso: agosto-2008
Mensajes: 587
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: texfield, llamado clave delete

Hola ya solucione el problema, gracias a ustedes

Esta es la solución:
Es con comillas simples, al colocar doble comillas no funciona, al colocar el $_POST[clave], donde clave es el nombre del texfield.

ID='$_POST[clave]'

mysql_query("DELETE FROM personas WHERE ID='$_POST[clave]'");

Saludos
  #7 (permalink)  
Antiguo 23/08/2008, 20:03
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 15 años, 10 meses
Puntos: 11
Respuesta: texfield, llamado clave delete

y si viene alguien que esta aburrido y tiene gana de hacer maldad e ingresa el siguiente ID para eliminar:

1' OR '1

luego la consulta sera interpretada como:

DELETE FROM personas WHERE ID='1' OR '1';

Con lo cual se elimina la totalidad de las filas de la tabla.

Eso se llama injeccion sql.

Te recomiendo que hagas lo siguiente:
Código PHP:
if($_POST['Submit'] && is_numeric($_POST['clave'])){ 

$id = (int)$_POST['clave'];

mysql_query("DELETE FROM personas WHERE ID='$id' ") or die(mysql_error());


Saludos.
  #8 (permalink)  
Antiguo 23/08/2008, 20:05
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: texfield, llamado clave delete

El error no eran las comillas. Los errores de tipo Parse significan error en la sintaxis del código, y usualmente éste error se encuentra en la línea que se te indica o un par más arriba. Suelen suceder por llaves {} no emparejadas, punto y comas ; que faltan, discordancia entre el número paréntesis de apertura y cierre, etc. En tu caso, esto último era lo que pasaba:

Código PHP:
if($_POST['Submit']){ 
 
mysql_query("DELETE FROM Person WHERE ID='".$_POST['clave']"'"//NO hay el paréntesis de cierre
 
//Debe ser
mysql_query("DELETE FROM Person WHERE ID='".$_POST['clave']"')";
 

De seguro es algo que se te pasó desapercibido

Saludos,
  #9 (permalink)  
Antiguo 23/08/2008, 20:49
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: texfield, llamado clave delete

Ahora fue que vi que faltaba un parentesis. Pero parece que ya lo soluciono.

Tambien puedes usar mysql_real_escape_string para evitar la injeccion SQL.
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 04:18.