Foros del Web » Programando para Internet » PHP »

borro los mensaje selecionados y se me borra el usuario tambien Porque??

Estas en el tema de borro los mensaje selecionados y se me borra el usuario tambien Porque?? en el foro de PHP en Foros del Web. Hola gente como estan tengo una duda tengo un codigo donde me da selecionar los mensajes que quiero borrar porque esta repetidos o por algo ...
  #1 (permalink)  
Antiguo 02/04/2005, 11:34
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
Exclamación borro los mensaje selecionados y se me borra el usuario tambien Porque??

Hola gente como estan tengo una duda tengo un codigo donde me da selecionar los mensajes que quiero borrar porque esta repetidos o por algo sera ?? bueno cuando le doy a borrar tambien se me borra el usuario porque pasa esto deberia de dejar el usuario y solo borrar su mensaje le paso los datos

en la BD tengo una sola tabla

CREATE TABLE `usuarios` (
`id` bigint(7) NOT NULL auto_increment,
`apellido` varchar(50) NOT NULL default '',
`nombre` varchar(50) NOT NULL default '',
`email` varchar(50) NOT NULL default '',
`direccion` varchar(100) NOT NULL default '',
`sector` varchar(60) NOT NULL default '',
`provincia` varchar(50) NOT NULL default '',
`telefono1` varchar(30) NOT NULL default '',
`telefono2` varchar(30) NOT NULL default '',
`fechanac` Date,
`ingresos` varchar(15) NOT NULL default '',
`nick` varchar(30) NOT NULL default '',
`password` varchar(32) NOT NULL default '',
`rep_password` varchar(32) NOT NULL default '',
`sid` varchar(32) NOT NULL default '',
`identificador` varchar(32) NOT NULL default '',
`ultima_visita` timestamp(14) NOT NULL,
`categorias` varchar(35) NOT NULL default '',
`titulo` varchar(30) NOT NULL default '',
`precioventas` varchar(15) NOT NULL default '',
`mensaje` varchar(140) NOT NULL default '',
`fecha` datetime NOT NULL default '0000-00-00 00:00:00',
`respuestas` int(30) NOT NULL default '0',
`ult_respuesta` datetime default NULL,
UNIQUE KEY `id_2` (`id`),
KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT=10 ;

muy bien todo eso es una sola tabla el codigo que uso para borrar es

<?
// Realizar la conexión a la BD .. Seleccionar la BD a usar.
include("conex.php");
// Ejecutar la consulta para obtener los datos de la BD.
$resultado=mysql_query("SELECT id, titulo, precioventas, mensaje FROM usuarios");

// Se inicial el formulario
echo "<form action=\"procesar.php\" method=\"post\"> \n";

// Extraemos y componemos los checbox dinámicos de los datos de nuestra tabla de la BD.
while ($row = mysql_fetch_array($resultado)){
echo "<input type=\"checkbox\" name=\"seleccion[]\" value=\"".$row['id']."\">".$row['mensaje']."<br>";
}

// Cerramos el formulario y ponemos nuestro botón de Submit.
echo "<input type=\"submit\" name=\"Submit\" value=\"Borrar\">";
echo "</form>";
?>

procesar.php

<?
// Generamos una lista de los ID's (campo value= ..) que tenemos en nuestro array.
$lista=implode(',',$_POST['seleccion']);

// Y lo aplicamos al SQL correspondiente y ejecutamos la consulta.
include("conex.php");
mysql_query("DELETE FROM usuarios WHERE id IN(".$lista.")");

?>

como podran ver en el select puse solo los campos que tienen que ver con el mensaje SELECT id, titulo, precioventas, mensaje FROM usuarios");

cosa que la de los usuarios son las otras cuando llena su formulario entonces no se porque me tiene que borrar el usuario cuando yo estoy borrando su mensaje alguna ayuda a los maestro

-----------

otra cosa existe algun programtica mas sencillo para editar los texto los colores etc.. en php ya que son un dolor de cabeza editar textos en php uso el dreanweaver mx ¡¡¿¿¿¿¿algo mejor???? gracias
  #2 (permalink)  
Antiguo 02/04/2005, 12:03
 
Fecha de Ingreso: febrero-2004
Ubicación: Bogotá, Colombia
Mensajes: 191
Antigüedad: 13 años, 10 meses
Puntos: 1
Pues si ud ejecuta un DELETE borrará toda la tupla donde se encuentre ese registro mas no solo el mensaje. Ahora, si lo q quiere es solo borrar el mensaje haga un UPDATE , p.e:

UPDATE usuarios SET mensajes = "" WHERE IdUsuario = x
  #3 (permalink)  
Antiguo 02/04/2005, 14:15
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
eeeeeeehhhhh jejejjee pues no lo tenia en cuenta el update no me recordaba ya lo probare
  #4 (permalink)  
Antiguo 02/04/2005, 21:58
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
hey hola me podria decir bien como es el tema del UPDATE no se como armarlo me da error

mysql_query("DELETE FROM usuarios WHERE id IN(".$lista.")");
  #5 (permalink)  
Antiguo 02/04/2005, 22:08
 
Fecha de Ingreso: julio-2003
Ubicación: Colombia
Mensajes: 591
Antigüedad: 14 años, 5 meses
Puntos: 7
que error te da?

Chaop!
  #6 (permalink)  
Antiguo 02/04/2005, 22:52
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
este error

Parse error: parse error in d:\inetpub\wwwroot\prueba6\TMP3h3poectx6.php on line 13

osea de que algo esta mal puesto
  #7 (permalink)  
Antiguo 02/04/2005, 23:25
 
Fecha de Ingreso: julio-2003
Ubicación: Colombia
Mensajes: 591
Antigüedad: 14 años, 5 meses
Puntos: 7
bueno tambien seria bueno que colocaras parte del codigo donde se situa el error...
aparentemente es un error de sintaxis...
Chaop!
  #8 (permalink)  
Antiguo 03/04/2005, 01:17
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Prueba con: mysql_query("DELETE FROM usuarios WHERE id IN($lista)");

ó mysql_query("DELETE FROM usuarios WHERE id IN('$lista')");

Ojalá te sirva... pero si te sigue dando error, como dice luchpe, deberías mostrar el código dónde se origina tu error.

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #9 (permalink)  
Antiguo 03/04/2005, 10:28
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
voy aprobar las comillas en lista pero si uso el delete creo que al borrar los mensaje se borra el usuario el codigo esta en procesar.php que lo puese arriba vuelvo y se los pongo

<?
// Realizar la conexión a la BD .. Seleccionar la BD a usar.
include("conex.php");
// Ejecutar la consulta para obtener los datos de la BD.
$resultado=mysql_query("SELECT id, titulo, precioventas, mensaje FROM usuarios");

// Se inicial el formulario
echo "<form action=\"procesar.php\" method=\"post\"> \n";

// Extraemos y componemos los checbox dinámicos de los datos de nuestra tabla de la BD.
while ($row = mysql_fetch_array($resultado)){
echo "<input type=\"checkbox\" name=\"seleccion[]\" value=\"".$row['id']."\">".$row['mensaje']."<br>";
}

// Cerramos el formulario y ponemos nuestro botón de Submit.
echo "<input type=\"submit\" name=\"Submit\" value=\"Borrar\">";
echo "</form>";
?>

aqui esta

procesar.php

<?
// Generamos una lista de los ID's (campo value= ..) que tenemos en nuestro array.
$lista=implode(',',$_POST['seleccion']);

// Y lo aplicamos al SQL correspondiente y ejecutamos la consulta.
include("conex.php");
mysql_query("DELETE FROM usuarios WHERE id IN(".$lista.")");

?>

probare con y sin las comillas a ver pero creo que seria UPDATE algo asi

gracias
  #10 (permalink)  
Antiguo 03/04/2005, 13:44
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 195
Antigüedad: 13 años, 1 mes
Puntos: 7
Cita:
Iniciado por coyote20
(...) en la BD tengo una sola tabla (...)
¿Por que usas una sola tabla? Te sería mucho más fácil utilizando varias tablas, siendo como es mysql una base de datos relacional.

De todas formas el UPDATE sería como te indicó Andrecito.
Código:
mysql_query ("UPDATE usuarios SET mensajes = "" WHERE id IN($lista)")
  #11 (permalink)  
Antiguo 03/04/2005, 18:18
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
saludo d enuevo buen haciendo las diferente pruebas aun persiste si lo hago con el delete

mysql_query("DELETE FROM usuarios WHERE id IN(".$lista.")");
con diferente comillas pues no me resulta y con el UPDATE de esta manera

mysql_query ("UPDATE usuarios SET mensajes = "" WHERE id IN($lista)");

me da este error

Parse error: parse error in d:\inetpub\wwwroot\prueba6\TMP24moxee96n.php on line 17

que se podra hacer seria recomendable poner los datos del mensaje en una segunda tabla no creo que ese sea el remedio a ver que opinan
  #12 (permalink)  
Antiguo 04/04/2005, 00:35
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 195
Antigüedad: 13 años, 1 mes
Puntos: 7
Cita:
Iniciado por coyote20
saludo d enuevo buen haciendo las diferente pruebas aun persiste si lo hago con el delete

mysql_query("DELETE FROM usuarios WHERE id IN(".$lista.")");
con diferente comillas pues no me resulta y con el UPDATE de esta manera

mysql_query ("UPDATE usuarios SET mensajes = "" WHERE id IN($lista)");

me da este error

Parse error: parse error in d:\inetpub\wwwroot\prueba6\TMP24moxee96n.php on line 17

que se podra hacer seria recomendable poner los datos del mensaje en una segunda tabla no creo que ese sea el remedio a ver que opinan
El problema está en las comillas dobles después de mensajes, quedaría así:
Código:
mysql_query ("UPDATE usuarios SET mensajes = '' WHERE id IN($lista)");
Si estás al principio del proceso de programación yo te recomiendo pasar a varias tablas, no por que sea la solución a tu problema sinó por que es más eficiente. Seguramente en la parte del foro de Bases de datos pueds encontrar ma razones...
  #13 (permalink)  
Antiguo 04/04/2005, 11:46
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
hola puse el codigo como dijiste

mysql_query ("UPDATE usuarios SET mensajes = '' WHERE id IN($lista)");

no me lanza ningun error me notifica que los mensaje an sido borrado

pero cuando hago la consulta los mensajes siguen estando osea no se borran

alguna opinion
  #14 (permalink)  
Antiguo 04/04/2005, 16:15
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 195
Antigüedad: 13 años, 1 mes
Puntos: 7
Creo que lo que pasa es que tienes errores de concepto... revisa un poco documentación sobre bases de datos relacionales. No se puede "borrar" un mensaje si tienes en el mismo registro otros datos, ya que en un momento u otro borrarás los otros datos, ya que el registro (o fila para hablar en términos de SQL) es una unidad en si mismo. Para poner un ejemplo similar, piensa en un documento de Excel: la orden DELETE serviría para borrar toda una fila de datos y la orden UPDATE para modificar una celda de la fila que tu le indiques, pero esto lo único que hace es vaciar de información esa celda, no borrarla, por eso cuando hagas la busqueda (que te pongo más abajo) tienes que buscar valores vacios, que no borrados.

Así que cuando haces la busqueda deberías hacer lo siguiente:
Código:
$resultado = mysql_query("SELECT id, titulo, precioventas, mensaje FROM usuarios WHERE mensaje > ''");
para que salieran los que no tienen datos. Aparte de esto, nos iría bien saber cual es el código que utilizas para crear el mensaje en la base de datos para poder ayudarte mejor.
  #15 (permalink)  
Antiguo 04/04/2005, 21:24
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
bueno voy a tratar de hacerlo mejor con tablas separadas una tabla que sea solo del formulario donde se registran todos los usuarios y otra segunda tabla donde lleguen los mensajes que depositan cada usuario creo que ese seria la solucion de igual manera te paso el codigo donde se ingresa los mensajes

agregar.php

<?php
require('configuracionn.php');
$categorias = @$_POST["categorias"];
$titulo = @$_POST["titulo"];
$precioventas = @$_POST["precioventas"];
$mensaje = @$_POST["mensaje"];
$identificador = @$_POST["identificador"];

//Hacemos algunas validaciones
if(empty($precioventas)) $precioventas = "Anónimo";
if(empty($titulo)) $titulo = "Sin título";
//Evitamos que el usuario ingrese HTML
$mensaje = htmlentities($mensaje);

// Grabamos el mensaje en la base.
$sql = "INSERT INTO usuarios (categorias, titulo, precioventas, mensaje, identificador, fecha, ult_respuesta) ";
$sql.= "VALUES ('$categorias','$titulo','$precioventas','$mensaje ','$identificador',NOW(),NOW())";
$rs = mysql_query($sql, $con) or die("Error al grabar un mensaje: ".mysql_error);
$ult_id = mysql_insert_id($con);
echo 'Registro exitoso. Su mensaje ah sido enviado!
<br>
<a href="computadoras.php?">anuncios</a>';

?>


y con este se ingresa el formulario

registrar.php

<?php
// Inicio de sessión
session_start();

// Servidor de la Base de Datos
$servidorBD="localhost";
// Usuario de la Base de Datos
$usuarioBD="dominicana";
// Contraseña de la Base de Datos
$passBD="clave";
// Nombre de la Base de Datos
$nombreBD="formulario";
// Conecto con la base de datos
$conectar = mysql_connect($servidorBD,$usuarioBD,$passBD) or die ("Imposible conectar con la base de datos");
// Selecciono la BBDD
mysql_select_db($nombreBD,$conectar) or die ("Imposible conectar con la base de datos");


function quitar($mensaje)
{
$mensaje = str_replace("<","&lt;",$mensaje);
$mensaje = str_replace(">","&gt;",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',"&quot;",$mensaje);
$mensaje = str_replace("\\\\","\",$mensaje);
return $mensaje;
}

if(trim(@$_POST["nick"]) != "" && trim(@$_POST["email"]) != "")
{
$sql = "SELECT id FROM usuarios WHERE nick='".quitar($_POST["nick"])."'";
$result = mysql_query($sql);
if($row = mysql_fetch_array($result))
{
echo 'Error, nick escogido por otro usuario
<br>
<a href="inscrip.php?'. SID .'">Registro</a>
';
}
else
{
$sql = "INSERT INTO usuarios (nick,password,nombre,apellido,email,direccion,sec tor,provincia,telefono1,telefono2,fechanac,ingreso s,rep_password,categorias,titulo,precioventas,mens aje) VALUES (";
$sql .= "'".quitar($_POST["nick"])."'";
$sql .= ",md5('".quitar($_POST["password"])."')";
$sql .= ",'".quitar($_POST["nombre"])."'";
$sql .= ",'".quitar($_POST["apellido"])."'";
$sql .= ",'".quitar($_POST["email"])."'";
$sql .= ",'".quitar($_POST["direccion"])."'";
$sql .= ",'".quitar($_POST["sector"])."'";
$sql .= ",'".quitar($_POST["provincia"])."'";
$sql .= ",'".quitar($_POST["telefono1"])."'";
$sql .= ",'".quitar($_POST["telefono2"])."'";
$sql .= ",'".quitar($_POST["fechanac"])."'";
$sql .= ",'".quitar($_POST["ingresos"])."'";
$sql .= ",'".quitar($_POST["rep_password"])."'";
$sql .= ",'".quitar(@$_POST["categorias"])."'";
$sql .= ",'".quitar(@$_POST["titulo"])."'";
$sql .= ",'".quitar(@$_POST["precioventas"])."'";
$sql .= ",'".quitar(@$_POST["mensaje"])."'";
$sql .= ")";
mysql_query($sql);
header("location:registro.php?'.SID.'");

}
mysql_free_result($result);
}
else
{
header("location:registrofalle.php?'.SID.'");

}
mysql_close();
?>
  #16 (permalink)  
Antiguo 06/04/2005, 17:50
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 12 años, 10 meses
Puntos: 3
Hola ya el problema esta resuelto lo que hice fue que hice dos tablas tabla1 y tabla2

en tabla1 le puse donde llega el formulario cuando el usuario se registrar y en tabla2 los mensajes que ponen entonces cuando ejecuto el

mysql_query("DELETE FROM usuarios WHERE id IN(".$lista.")");

para borrar algun mensaje no debido este se hace a la perfecion sin tocarme al usuario no como antes que cuando borraba el mensaje tambien se borraba el usuario ahora al dividir las tablas ya eso no pasa gracias por sus ayudas

cambio y fuera
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:02.