Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Servia en 21 Diciembre 2008, 16:30 pm



Título: No responde correctamente a petición de borrar
Publicado por: Servia en 21 Diciembre 2008, 16:30 pm
Código
  1. <?
  2. require('conector.php');
  3.  
  4. $duke=($_SESSION['UsNick']);
  5. $id=($_REQUEST["id"]);
  6.  
  7. $sql = "DELETE FROM tablaus WHERE usuario='".$duke."' and id='".$id."'";
  8. $result = mysql_query($sql) or die(mysql_error());
  9.  
  10. if($result) {
  11. echo ' Borrado';
  12. } else {
  13. echo 'Error al intentar borrar ';
  14. }
  15. ?>

Cuando hago esto, teoricamente si no encuentra que encajen usuario y id en una misma entrada tiene que dar error, pero igualmente sale borrado. ¿Que hago mal?


Título: Re: No responde correctamente a petición de borrar
Publicado por: LuffyFF en 21 Diciembre 2008, 16:44 pm
Así esta mal.

Porque mysql_query retorna TRUE o verdadero si se ejecuta la query de forma correcta. No importa que no devuelva resultados, pero si se ejecuta bien sin dar resultados, se transforma en TRUE.

Asi de que esa forma no te va a funcionar.

Lo que tendrías que hacer es un contador según $result, y si devuelve 0, sería Error al intentar borrar. Sino, Borrado. Porque si hay dos usuarios con el mismo usuario y id, puede devolver 2. Esta es una opción, que lo podrías usar con mysql_num_rows, para saber la cantidad de registros devueltos.

Si no te funciona, porque no estoy seguro si funcione el mysql_num_rows con DELETE, puedes hacer otra query para chequear si existe usuario = $duke y id = $id, y si existe, lo borra, sino, borrar.


Título: Re: No responde correctamente a petición de borrar
Publicado por: Servia en 21 Diciembre 2008, 16:56 pm
Osea?
Código
  1. <?
  2. require('conector.php');
  3.  
  4. $duke=($_SESSION['UsNick']);
  5. $id=($_REQUEST["id"]);
  6.  
  7. $sql = "DELETE FROM tablaus WHERE usuario='".$duke."' and id='".$id."'";
  8. $result = mysql_query($sql) or die(mysql_error());
  9. $row = mysql_fetch_array($result);      
  10. $rows = mysql_num_rows($result);
  11.  
  12. if($rows) {
  13. echo ' Borrado';
  14. } else {
  15. echo 'Error al intentar borrar ';
  16. }
  17. ?>

Me da error


Título: Re: No responde correctamente a petición de borrar
Publicado por: eLank0 en 21 Diciembre 2008, 18:58 pm
Yo haría...

Código:
<?php
require('conector.php');
 
$duke=($_SESSION['UsNick']);
$id=($_REQUEST["id"]);
 
$sql = "DELETE FROM tablaus WHERE usuario='".$duke."' and id='".$id."'";
$result = mysql_query($sql) or die(mysql_error());

echo "Borrado correcto";

?>

Si ya tratas el error con la función específica no hace falta que lo vuelvas a poner abajo. En cualquier caso, podrías usar la función mysql_affected_rows (http://www.php.net/mysql_affected_rows)(identificador de conexión) para comprobar que has borrado correctamente.

Salu2


Título: Re: No responde correctamente a petición de borrar
Publicado por: Servia en 21 Diciembre 2008, 19:18 pm
Ya lo he arreglado como decía Lightning, gracias de todos modos :P


Título: Re: No responde correctamente a petición de borrar
Publicado por: WHK en 23 Diciembre 2008, 06:40 am
Yo lo haría:

Código
  1. <?php
  2. if(!require('conector.php')){
  3. die('Error al obtener los datos de la MySQL');
  4. }
  5. $duke = stripslashes($_SESSION['UsNick']);
  6. $id= (int)$_REQUEST["id"];
  7.  "DELETE FROM tablaus
  8.   WHERE usuario='".
  9.  "' and id='".$id."';"
  10. )){
  11. echo htmlspecialchars($duke, ENT_QUOTES).' - Borrado correcto';
  12. }else{
  13. echo 'No ha podido ser borrado.';
  14. }
  15. ?>