1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Deleting data from mysql

Discussão em 'Web Development' iniciada por REDDIO, 16 de Novembro de 2007. (Respostas: 19; Visualizações: 1602)

  1. REDDIO

    REDDIO Power Member

    Estou a tentar apagar utilizadores, no entanto quando carrego em delete aparece a mensagem a dizer que foi apagado com sucesso, mas na verdade não apagou na base de dados.
    Gostaria que dessem uma vista de olhos no codigo, porque não estou a encontrar o erro.

    Apagar_utilizador.php:

    <?php

    $host="localhost"; // Host name
    $username="root"; // Mysql username
    $password=""; // Mysql password
    $db_name="agencia_de_viagens"; // Database name
    $tbl_name="utilizadores"; // Table name


    // Connect to server and select database.
    mysql_connect("$host", "$username", "$password")or die("cannot connect");
    mysql_select_db("$db_name")or die("cannot select DB");


    // select record from mysql
    $sql="SELECT * FROM $tbl_name";
    $result=mysql_query($sql);


    ?>
    <table width="400" border="0" cellspacing="1" cellpadding="0">
    <tr>
    <td><table width="400%" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
    <tr>
    <td bgcolor="#FFFFFF">&nbsp;</td>
    <td colspan="4" bgcolor="#FFFFFF"><strong>Apagar Utilizadores</strong> </td>
    </tr>
    <tr>
    <td align="center" bgcolor="#FFFFFF"><strong>Id utilizador</strong></td>
    <td align="center" bgcolor="#FFFFFF"><strong>Nome</strong></td>
    <td align="center" bgcolor="#FFFFFF"><strong>Email</strong></td>
    <td align="center" bgcolor="#FFFFFF">&nbsp;</td>
    </tr>


    <?php
    while($rows=mysql_fetch_array($result)){
    ?>
    <tr>
    <td bgcolor="#FFFFFF"><? echo $rows['ID_UTILIZADOR']; ?></td>
    <td bgcolor="#FFFFFF"><? echo $rows['NOME']; ?></td>
    <td bgcolor="#FFFFFF"><? echo $rows['EMAIL']; ?></td>


    <td bgcolor="#FFFFFF"><a href="apaga.php?Id=<? echo $rows['ID_UTILIZADOR']; ?>">delete</a></td>

    </tr>
    <?


    // close while loop
    }


    // close connection;
    mysql_close();


    ?>
    </table></td>
    </tr>
    </table>


    apaga.php:

    <?php

    $host="localhost"; // Host name
    $username="root"; // Mysql username
    $password=""; // Mysql password
    $db_name="agencia_de_viagens"; // Database name
    $tbl_name="utilizadores"; // Table name


    // Connect to server and select databse.
    mysql_connect("$host", "$username", "$password")or die("cannot connect");
    mysql_select_db("$db_name")or die("cannot select DB");


    // get value of id that sent from address bar
    $id=$_GET['ID_UTILIZADOR'];


    // Delete data in mysql from row that has this id
    $sql="DELETE FROM $tbl_name WHERE ID_UTILIZADOR='$ID_UTILIZADOR'";
    $result=mysql_query($sql);


    // if successfully deleted
    if($result){
    echo "Deleted Successfully";
    echo "<BR>";
    echo "<a href='Apagar_utilizador.php'>Back to main page</a>";
    }


    else {
    echo "ERROR";
    }


    // close connection
    mysql_close();
    ?>
     
  2. xOy

    xOy Power Member

    // get value of id that sent from address bar
    $id=$_GET['ID_UTILIZADOR'];

    // Delete data in mysql from row that has this id


    tenta assim...
     
  3. slack_guy

    slack_guy Power Member

    O que é que acontece no caso de o user enviar
    Código:
    ID_UTILIZADOR = "0' OR id_utilizador <> '0"
    ?
    Resultado:
    Código:
    DELETE FROM tbl_name WHERE id_utilizador = '0' OR id_utilizador <> '0'
    
     
  4. AliFromCairo

    AliFromCairo Power Member

    Uma query sem grandes resultados no caso (mais que provável) de o criador da thread não ter desactivado a directiva magic_quotes_gpc que vem activa por defeito nas últimas releases do PHP.

    Código:
    DELETE FROM tbl_name WHERE id_utilizador = '\"0\' OR id_utilizador <> \'0\"'
    
    De qualquer forma, é sempre bom alertar para esse tipo de problemas, devido ao facto do magic_quotes_gpc não resolver tudo :007:.
     
    Última edição: 16 de Novembro de 2007
  5. slack_guy

    slack_guy Power Member

    Não só não resolve como cria uma carrada de problemas maiores que aqueles que tenta resolver (é que nem todos os programadores de PHP são noobs ;-) ) Tanto quanto sei, vai ser removido no PHP6.

    hum... aqui não:
    Código:
    Slackware 12.0
    
    [[email protected] ] grep magic_quotes_gpc /etc/httpd/php.ini
    ; - magic_quotes_gpc = Off         [Performance]
    magic_quotes_gpc = Off
    
    [[email protected] ] grep magic_quotes_gpc /etc/httpd/php.ini-recommended
    ; - magic_quotes_gpc = Off         [Performance]
    magic_quotes_gpc = Off
    
    [[email protected] ] grep magic_quotes_gpc /etc/httpd/php.ini-dist
    magic_quotes_gpc = On
    
     
  6. REDDIO

    REDDIO Power Member

    caros,

    continuo sem conseguir resolver o problema, ja tentei as varias formas que indicaram.
     
  7. mascker

    mascker Power Member

    RE:

    Boas,

    Altera o seguinte
    Código:
    [FONT=Arial][SIZE=2]// Delete data in mysql from row that has this id 
    $sql="DELETE FROM $tbl_name WHERE ID_UTILIZADOR='$ID_UTILIZADOR'";
    $result=mysql_query($sql);
    [/SIZE][/FONT]

    para
    Código:
    [FONT=Arial][SIZE=2]// Delete data in mysql from row that has this id 
    $sql="DELETE FROM $tbl_name WHERE ID_UTILIZADOR='$ID_UTILIZADOR'";
    $result=mysql_query($sql) or die(mysql_error());
    [/SIZE][/FONT]


    Informa do erro....


    Saudações
     
  8. slack_guy

    slack_guy Power Member

    No código que colaste aqui tens 'ID_UTILIZADOR' como nome do campo. É esse o nome na BD? Assim? escrito em maiúsculas?
     
  9. REDDIO

    REDDIO Power Member

    Sim e com é desta forma que tenho na base de dados!
     
  10. REDDIO

    REDDIO Power Member


    Fiz desta forma e continua a dizer que foi eliminado, mas quando volto a listar continua a constar na lista...
     
  11. anjo2

    anjo2 Power Member

    Código:
    [FONT=Arial][SIZE=2]<?php[/SIZE][/FONT]
     
    [FONT=Arial][SIZE=2]$host="localhost"; // Host name 
    $username="root"; // Mysql username 
    $password=""; // Mysql password 
    $db_name="agencia_de_viagens"; // Database name 
    $tbl_name="utilizadores"; // Table name [/SIZE][/FONT]
     
    [FONT=Arial][SIZE=2]// Connect to server and select databse.
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or die("cannot select DB");[/SIZE][/FONT]
     
    [FONT=Arial][SIZE=2]// get value of id that sent from address bar 
    $id=$_REQUEST['Id'];[/SIZE][/FONT]
    
    [FONT=Arial][SIZE=2]// Delete data in mysql from row that has this id 
    $sql="DELETE FROM $tbl_name WHERE ID_UTILIZADOR='$id'";
    $result=mysql_query($sql);[/SIZE][/FONT]
     
    [FONT=Arial][SIZE=2]// if successfully deleted
    if($result && $id){
    echo "Deleted Successfully";
    echo "<BR>";
    echo "<a href='Apagar_utilizador.php'>Back to main page</a>";
    }[/SIZE][/FONT]
     
    [FONT=Arial][SIZE=2]else {
    echo "ERROR";
    }[/SIZE][/FONT]
     
    [FONT=Arial][SIZE=2]// close connection 
    mysql_close();
    ?>[/SIZE][/FONT]
    EDIT: Este código deve funcionar.
     
    Última edição: 17 de Novembro de 2007
  12. p3dro

    p3dro Power Member

    Posso estar a ver mal :p mas acho nunca passas a variável "ID_UTILIZADOR"
    por ex.:

    PHP:
    <a href="apaga.php?Id=<? echo $rows['ID_UTILIZADOR']; ?>">delete</a>
    Mas depois vais buscar como
    PHP:
    $id=$_GET['ID_UTILIZADOR'];
    Não deveria antes ser ...
    PHP:
    // get value of id that sent from address bar
    $id=$_GET["Id"];

    // Delete data in mysql from row that has this id
    $sql="DELETE FROM $tbl_name WHERE ID_UTILIZADOR='$id' ";
     
  13. K0mA

    K0mA Power Member

  14. p3dro

    p3dro Power Member

    uups, afinal o anjo2 já tinha respondido :x2:
     
  15. K0mA

    K0mA Power Member

    Ah granda anjo2 !
     
  16. anjo2

    anjo2 Power Member

    Não tinha não, apenas tinha dito a ele como identificar o erro, a partir de echo de cada variável, mas como já tinhas visto o erro, editei e apenas pus a solução :)
     
  17. REDDIO

    REDDIO Power Member

    Hey obrigado, com este codigo ja funciona!!
     
  18. slack_guy

    slack_guy Power Member

    mas o problema de segurança mantém-se...
     
  19. REDDIO

    REDDIO Power Member

    Obrigado a todos pela ajuda!!
     
  20. anjo2

    anjo2 Power Member

    Sim, mas a solução não é difícil, é só verificar se é um inteiro por exemplo.
     

Partilhar esta Página