Foros del Web » Programando para Internet » PHP »

Borrar Temas

Estas en el tema de Borrar Temas en el foro de PHP en Foros del Web. Holas gente Tengo una pregunta para hacerles. Resulta que en mis noticias, el Administrador PUEDE borrarlas con libertad. Entonces, lo que quiero es que se ...
  #1 (permalink)  
Antiguo 21/07/2008, 13:55
Avatar de nicolyto77  
Fecha de Ingreso: marzo-2007
Ubicación: Buenos Aires
Mensajes: 782
Antigüedad: 17 años, 8 meses
Puntos: 12
Pregunta Borrar Temas

Holas gente

Tengo una pregunta para hacerles.

Resulta que en mis noticias, el Administrador PUEDE borrarlas con libertad. Entonces, lo que quiero es que se le reste en 1 el campo Noticias Enviadas al usuario que la creo, claro.

El codigo me cuesta, ya que no se como obtener quien la envio

Ademas, no se como hacer lo de la resta, ya que yo para restar comunmente uso esto:

Código:
UPDATE noticias SET cant=cant-1 WHERE id=$colnameID
Ahora, si quiero borrar, como hago para poner ambas clausulas? La de borrado y la de actualizado? Al pulsarse el Mismo boton?

Saludos y Anticipadas Gracias
__________________
CabaSoft Networks
  #2 (permalink)  
Antiguo 23/07/2008, 00:51
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Borrar Temas

Lo quieres hacer con php?
Luego debes ejecutar primero la consulta DELETE y luego la UPDATE, previamente debes guardar en una variable php el nombre o identificador del usuario que le has borrado algo para poder usarlo en la consulta update...

Otra cosa seria entrar en triggers con lo que seria el propio motor de bbdd que haria el update.

Otra solución es no guardar el numero en ninguna parte y contar los post del usuari en la tabla donde los tengas guardados un indice sobre el identificador de usuario haria la consulta bastante rápida....

Quim
  #3 (permalink)  
Antiguo 23/07/2008, 01:35
Avatar de nicolyto77  
Fecha de Ingreso: marzo-2007
Ubicación: Buenos Aires
Mensajes: 782
Antigüedad: 17 años, 8 meses
Puntos: 12
De acuerdo Respuesta: Borrar Temas

if (isset( $_POST['Submit_Pos']))
{
mysql_query("UPDATE registro SET karma=karma+1 WHERE id = '$AutorTopic'");
}Muchas Gracias x la informacion

Si, lo quiero hacer en PHP. Resulta que tengo un formulario en donde al pulsar el Boton, Borraria el Topico. Hasta ahi no hay problema. Ahora, debo ejecutar dos consultas juntas, la verdad en lo practico se me complica un poco...
Yo uso DreamWeaver junto con PHP y MySQL, entonces me cuesta mas que si fuera solo con PHP.

Yo uso esto:

Código PHP:
<? if (isset( $_POST['Submit_MenRes']))
{
mysql_query("UPDATE registro SET mensajes=mensajes-1 WHERE id = '$AutorTopic'");
?>
Ahora, para borrar el tema por las de el, el DW me genera este codigo:

Código PHP:
if ((isset($_GET['id'])) && ($_GET['id'] != "")) {
  
$deleteSQL sprintf("DELETE FROM posts WHERE id=%s",
                       
GetSQLValueString($_GET['id'], "int"));

  
mysql_select_db($database_FS$FS);
  
$Result1 mysql_query($deleteSQL$FS) or die(mysql_error());

  
$deleteGoTo "borrado.php";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$deleteGoTo .= (strpos($deleteGoTo'?')) ? "&" "?";
    
$deleteGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$deleteGoTo));

Entonces... quedo medio...

Mas o menos, para no complicar las cosas, quisiera saber si puedo poner algo asi:

Código PHP:
<? if (isset( $_POST['Submit_MenRes']))
{
mysql_query("DELETE FROM posts WHERE id=%s");
mysql_query("UPDATE registro SET mensajes=mensajes-1 WHERE id = '$AutorTopic'");
?>
Es un ejemplo claro...

Gracias denuevo, y Saludos
__________________
CabaSoft Networks
  #4 (permalink)  
Antiguo 23/07/2008, 06:50
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Borrar Temas

Si pero antes de borrar tienes que obtener $AutorTopic o puedes forzar que te llegue como un parametro igual que te llega el $id.

Código PHP:

$AutorTopic
=$_GET['AutorTopic'];

if ((isset(
$_GET['id'])) && ($_GET['id'] != "")) { 
 
//Preparas sentencia SQL para borrar
  
$deleteSQL sprintf("DELETE FROM posts WHERE id=%s"
                       
GetSQLValueString($_GET['id'], "int")); 
 
//Preparas sentencia SQL para modificar
  
$updateSQL sprintf("UPDATE registro SET mensajes=mensajes-1 
                                   WHERE id = '$AutorTopic'"
); 

  
mysql_select_db($database_FS$FS); 
  
//Ejecutas el borrado
  
$Result1 mysql_query($deleteSQL$FS) or die(mysql_error()); 
  
//Ejecutas el update
  
$Result1 mysql_query($updateSQL$FS) or die(mysql_error()); 

  
$deleteGoTo "borrado.php"
  if (isset(
$_SERVER['QUERY_STRING'])) { 
    
$deleteGoTo .= (strpos($deleteGoTo'?')) ? "&" "?"
    
$deleteGoTo .= $_SERVER['QUERY_STRING']; 
  } 
  
header(sprintf("Location: %s"$deleteGoTo)); 

Si no puedes conseguir el $AutorTopic via parametros luego tendrias que hacer una tercera consulta para obtenerlo a partir de id que si tienes (esta se tendria que ejecutar en primer lugar.

Quim
  #5 (permalink)  
Antiguo 23/07/2008, 08:35
Avatar de fhonorato  
Fecha de Ingreso: julio-2008
Ubicación: Talca, Chile
Mensajes: 36
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Borrar Temas

primero debes estar seguro de guardas el $autortopic en la tabla noticias.

segundo una vez que te envies el id de la noticias a borrar haz lo siguiente:

SELECT autortopic FROM noticias WHERE id = $id -----> y lo guardar en $autortopic

luego

DELETE FROM noticias WHERE id = $id ---->> borras la noticias

luego

UPDATE usuario SET mensajes=mensajes-1 WHERE id = '$AutorTopic'

y liusto... si usas la tabla registro ... en vez de usuario, usa eso.. ahí eliges tu las tablas :D

suerte :D
  #6 (permalink)  
Antiguo 23/07/2008, 10:26
Avatar de nicolyto77  
Fecha de Ingreso: marzo-2007
Ubicación: Buenos Aires
Mensajes: 782
Antigüedad: 17 años, 8 meses
Puntos: 12
De acuerdo Respuesta: Borrar Temas

Les agradezco Muchisimo su tiempo y ganas de ayudarme

Ahora tengo una gran duda. Como les comente trabajo con Dreamweaver CS3, y creo las consultas desde su sistema de SQL avanzado.

Entonces, lo que yo PUDE lograr con suerte y despues de probar, es como aumentarle uno a la cantidad de mensajes del usuario que envia una noticia, lo que me sale es averiguar 'Quien envio la noticia' para restarle a el 1, y no a todos.

Entonces, se me ocurrio, enviar una ID oculta cuando se envia la noticia, y me llega perfecto. El user ID5 al enviar noticia, veo que en la noticia aparece: Enviado por el User X ID 5 (VAmos bien hasta ahi)

Ahora no se que hacer con ello, lo que se me ocurrio fue hacer esto:

Código PHP:
$AutorTopic=$row_rsNoticia['id_autor']; 
Donde el record $row_rsNoticia['id_autor']; es el que pongo para identificar el ID del usuario que la envio.
Ahora, como adapto este usuario al sistema de restada de noticias y borrado de la misma?
Esta bien como puse yo?
Código:
WHERE id = $AutorTopic
?

Saludos y Gracias denuevo
__________________
CabaSoft Networks
  #7 (permalink)  
Antiguo 23/07/2008, 10:28
Avatar de nicolyto77  
Fecha de Ingreso: marzo-2007
Ubicación: Buenos Aires
Mensajes: 782
Antigüedad: 17 años, 8 meses
Puntos: 12
Respuesta: Borrar Temas

Upss Puse responder en vez de Editar...

Queria decir, lo que NO me sale, es obtener quien envio la noticia, desde SQL para luego decirle ¡¿Quien fue!? y asi restarle a el, y no a todos los usuarios

Saludos
__________________
CabaSoft Networks

Última edición por nicolyto77; 23/07/2008 a las 10:29 Razón: Correccion...
  #8 (permalink)  
Antiguo 23/07/2008, 11:32
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Borrar Temas

WHERE id = $AutorTopic

esto esta bien siempre que la variable $AutorTopic contenga el id del autor y registro.id sea el id del autor... tu sabras si en el campo id de la tabla registro tines guardado el id del autor...

Estas jugando con dos id el de la noticia que borras y el id del autor, como te decia yo debes conseguir que te lleguen los dos id por parametros o como te decia fhonorato recuperarlo del registro de la noticia antes de borrarlo.

Quim
  #9 (permalink)  
Antiguo 23/07/2008, 12:13
Avatar de nicolyto77  
Fecha de Ingreso: marzo-2007
Ubicación: Buenos Aires
Mensajes: 782
Antigüedad: 17 años, 8 meses
Puntos: 12
Respuesta: Borrar Temas

Gracias

Entiendo, lo que no me sale, es si debo poner todas las consultas SQL de la misma manera, ya sean las 3 que me dijo fhonorato, o las otras tuyas.

Yo tengo listadas todas mis noticias, entonces SE cual es el ID de la noticia que quiero borrar, y Creo saber cual es el ID del autor, desde mi sistema que no se si correra.

Ahora, queria saBer, cuando pulso sobre Borrar tema, automaticamente se genera la consulta esa que mostre enel segundo tema. Lo que queria, es agregarle a esa, (si es que se puede, claro) el de restar segun el usuario.

Como podria modificarla? Sabiendo que el ID de la noticia se encuentra en

$row_rsNoticia['id'];

y el autor que la creo en

$row_rsNoticia['id_autor'];

?

No se como ira metido el Query de [Resta de mensajes] dentro del de [Borrado de Tema] donde el borrado de tema ya funciona bien, que es este:

Código PHP:
if ((isset($_GET['id'])) && ($_GET['id'] != "")) { 
  
$deleteSQL sprintf("DELETE FROM posts WHERE id=%s"
                       
GetSQLValueString($_GET['id'], "int")); 

  
mysql_select_db($database_FS$FS); 
  
$Result1 mysql_query($deleteSQL$FS) or die(mysql_error()); 

  
$deleteGoTo "borrado.php"
  if (isset(
$_SERVER['QUERY_STRING'])) { 
    
$deleteGoTo .= (strpos($deleteGoTo'?')) ? "&" "?"
    
$deleteGoTo .= $_SERVER['QUERY_STRING']; 
  } 
  
header(sprintf("Location: %s"$deleteGoTo)); 

Gracias nuevamente
__________________
CabaSoft Networks
  #10 (permalink)  
Antiguo 24/07/2008, 00:57
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Borrar Temas

Repito tiene que ser algo así y si te fijas en los comentarios (linea en naraja) entenderás lo que se esta haciendo.

Si tu sistema te asegura que para cada noticia hay un id de autor luego si tienes id de notifcia tendras un id de autor, por lo tanto el if que controla los posibles errores te sirve para las dos consultas, puesto que si no hay id de noticia tampoco habrá de autor...


Código PHP:
//Guardas el id del autor en $AutorTopic puedes obtenerlo del $_GET si lo pasas 
//como un parametro igual que estas haciendo con el id de noticia o de una
//consulta como te propuso [B]fhonorato[/B]
$AutorTopic=$_GET['AutorTopic']; 

if ((isset(
$_GET['id'])) && ($_GET['id'] != "")) {  
 
//Preparas sentencia SQL para borrar 
  
$deleteSQL sprintf("DELETE FROM posts WHERE id=%s",  
                       
GetSQLValueString($_GET['id'], "int"));  
 
//Preparas sentencia SQL para modificar 
  
$updateSQL sprintf("UPDATE registro SET mensajes=mensajes-1  
                                   WHERE id = '$AutorTopic'"
);  

  
mysql_select_db($database_FS$FS);  
  
//Ejecutas el borrado 
  
$Result1 mysql_query($deleteSQL$FS) or die(mysql_error());  
  
//Ejecutas el update 
  
$Result1 mysql_query($updateSQL$FS) or die(mysql_error());  

  
$deleteGoTo "borrado.php";  
  if (isset(
$_SERVER['QUERY_STRING'])) {  
    
$deleteGoTo .= (strpos($deleteGoTo'?')) ? "&" "?";  
    
$deleteGoTo .= $_SERVER['QUERY_STRING'];  
  }  
  
header(sprintf("Location: %s"$deleteGoTo));  

Como puedes ver en el codigo si hay un id de noticia se ejecutan las dos consultas, si no no.

Quim
  #11 (permalink)  
Antiguo 24/07/2008, 19:41
Avatar de nicolyto77  
Fecha de Ingreso: marzo-2007
Ubicación: Buenos Aires
Mensajes: 782
Antigüedad: 17 años, 8 meses
Puntos: 12
De acuerdo Respuesta: Borrar Temas

Mil Gracias!!

Funciona de lujo!!! Solo agradecerte!!

P.D: Otra cosita, sabes porque me pasa, que cuando EDITO (Le hago Update) a un usuario, para que aparezcan los nuevos datos, el mismo tenga que enviar una Noticia nueva?? Yo puedo Editar las noticias, mediante el Update, pero para que se vean reflejadas en las noticias ya enviadas, debo Enviar otra nueva.. porque sera??

Saludos
__________________
CabaSoft Networks
  #12 (permalink)  
Antiguo 25/07/2008, 01:02
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Borrar Temas

A ver tienes claro que las cosas en la tecnologia que estas usando pasa en dos ambitos distintos (o tres)?

Qualquier consulta SQL que ejecutes tiene efectos sobre la BBDD, sea un select, update, delete... eso pasa en el servidor de bbdd (1.-ambito servidor BBDD)

Para ver los efectos de cualquier cosa que pase en el servidor de BBDD debes refrescar lo que estas viendo en pantalla (3.-ambito cliente, interficie de ususario).

Asi si ejecutas un SELECT lo que obtienes es una copia digamos virtual de su resultado que luego tienes que recorrer con programación php para darle formato (2.-ambito servidor web) y mandarlo al cliente (3.-ambito cliente) para que se muestre en pantalla.

DELETE, UPDATE y INSERT INTO tienen la particularidad de generar cambios en la BBDD pero no retornan nada. Con lo que si no haces nada más no veras su resultado.

Lo normal sera haber hecho un SELECT y tener un resultado en pantalla, luego hacer una de las otras posibles operaciones (DELETE, UPDATE o INSERT INTO) estas si ha ido todo bien habran generado cambios en la BBDD pero lo que estas viendo en pantalla no es la BBDD si no un listado de su estado en el momento que has hecho el SELECT inicial... luego conclusion para obtener el nuevo listado debes ejecutar otra vez la consulta inicial SELECT y mostrarla por pantalla, ahora si mostrara el estado de la BBDD despues de los cambios realizados.

Por que cuando haces el INSERT INTO de una nueva noticia aparecen los cambios que no se mostraban? Pues por que en el caso del INSERT INTO tienes definido que despues de introducir una nueva noticia esta se muestre, aún que lo parezca, no agrega la nueva noticia a la salida por pantalla si no que refresca toda la salida con lo que aparece la nueva noticia y los cambios que no se veian, repite el SELECT inicial.

Conclusion para ver immediatamente los cambios producidos por un UDATE tienes que repetir el SELECT inicial. Eso lo puedes forzar de una manera similar a lo que hemos hecho con lo de reducir el numero de noticias o refrescando la pagina entera, tanto para una solucion como para la otra deberas tener guardos los paramtros que usaste en la consulta inicial para poder usar los otra vez...


Quim

Nota: normalmente se habla de dos ambitos o lados servidor y cliente, pero te he querido hacer notar que dentro del servidor (2.-ambito servidor web) esta la capa que genera los resultados mandando instrucciones al cliente (3.- ambito Cliente) o al servidor de BBDD (1.-ambito Servidor de BBDD).

Última edición por quimfv; 25/07/2008 a las 01:42
  #13 (permalink)  
Antiguo 25/07/2008, 14:50
Avatar de nicolyto77  
Fecha de Ingreso: marzo-2007
Ubicación: Buenos Aires
Mensajes: 782
Antigüedad: 17 años, 8 meses
Puntos: 12
Respuesta: Borrar Temas

Muchisiams Gracias Quim

No sabes cuanto me estas ayudando, y no solo en mi proyecto, sino para mi mismo, ya que quiero aprender sobre este mundo de las Webs.

Soy medio duro la verdad, me cuesta enteder a veces, es por eso que te pregunto esto, y espero no te molestes

Entendi lo del Select nuevo, seria como para volver a mostrar los datos Ya refrescados, actualizados digamos, no?

Pero no entiendo como ponerlo? Ayer intente a lo novato, ponerlo en todos lados pero no funcionaba en ningun lado!

Lo probe en un sistema de Puntuacion bien sencillo que tengo, donde hay un formulario con un Boton que dice 'SUBE PUNTOS' y el codigo es:

Código PHP:
<?php

if (array_key_exists('SUBE_PUNTOS'$_POST)) {
          
mysql_query("UPDATE registro SET puntos=puntos+1 WHERE id = '%s'");
} else {
          echo 
"Error, no se hizo nada";
}

?>
Luego, tengo desde mi Base de Datos, el campo Puntos, y lo muestro de esta manera:

Código PHP:
<?php echo $row_rsUsuarioPuntaje['puntos']; ?>
Y sucede lo que vos me comentas, necesito enviar otro para que se actualice en ++ el Puntaje... probe refrescando y no funciona, pero seguro que mi metodo no funciona.. mi metodo claro.

Me gustaria que me eseñes como hacerlo mediante un Nuevo ("SELECT...");

Un saludo y Gracias por todo tu tiempo
__________________
CabaSoft Networks
  #14 (permalink)  
Antiguo 25/07/2008, 20:23
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 23 años
Puntos: 655
Respuesta: Borrar Temas

Trasladado de BD a PHP. Favor no poner código de programación en BD.

Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #15 (permalink)  
Antiguo 26/07/2008, 12:14
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Borrar Temas

Tienes que fijarte en como lo has heco la primera vez analiza el codigo y mira que lineas tienes que repetir....

Quim
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 21:29.