Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 9 of 9
  1. #1
    Regular Coder
    Join Date
    Sep 2011
    Posts
    366
    Thanks
    39
    Thanked 0 Times in 0 Posts

    Unhappy Cannot delete a field in MySQL using PHP!

    I have made a simple form where users who have been subscribed and unsubscribe by inserting their email address.

    In my database using PHPMyAdmin, my database to store the emails is 'Links', the table is 'email' and the fields are the 'id' and 'emailaddress'.

    What I have tried is making a text input field, where the user ill insert his or her email address, to unsubscribe on the website. As a result the user's field for his or her email address will be delete in the database which is saving the emails for all users who have subscribed.

    My HTML codes are:

    Code:
    <p>Subscribe for newsletters:</p>
    <img src="images/k-newsletter-icon.png" width="96" height="96" alt="subscri"/>
    <form action="index.php" method="post">
    <input type="text" size="25" placeholder="Your email address..." name="enter"/>
    <input class="submit" type="submit" value="Subscribe" name="subscribe"/>
    </form>
    My PHP codes are:

    PHP Code:
    <?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {

    $email $_POST['enter'];
    @
    mysql_connect ('localhost''root''') or die ('Error');
    @
    mysql_select_db ('links') or die ('Error');
    if (!
    filter_var($emailFILTER_VALIDATE_EMAIL)) {
    echo 
    "Not an email";
    return 
    false;    
    } else {
    mysql_query("DELETE FROM email WHERE emailaddress ='$email'");
    echo 
    "deleted";
    }
    }
    ?>
    When I test it,it is not working, as I see the email which was saved, is still in the database! Help!

  • #2
    God Emperor Fou-Lu's Avatar
    Join Date
    Sep 2002
    Location
    Saskatoon, Saskatchewan
    Posts
    16,994
    Thanks
    4
    Thanked 2,662 Times in 2,631 Posts
    Does the script print anything to the screen?
    Also, enable your error reporting:
    PHP Code:
    ini_set('display_errors'1);
    error_reporting(E_ALL); 

  • #3
    Senior Coder Nightfire's Avatar
    Join Date
    Jun 2002
    Posts
    4,265
    Thanks
    6
    Thanked 48 Times in 48 Posts
    Try changing
    PHP Code:
    mysql_query("DELETE FROM email WHERE emailaddress ='$email'"
    to
    PHP Code:
    mysql_query("DELETE FROM email WHERE emailaddress ='$email'") or die(mysql_error()); 
    and see if that says what's wrong

  • #4
    Regular Coder
    Join Date
    Sep 2011
    Posts
    366
    Thanks
    39
    Thanked 0 Times in 0 Posts
    Yes, error_reporting is ON by default, I just checked it!

    @NightFire, I changed the code to what you told me, again here, it seems the email is not being deleted in PHPMyAdmin when I refresh!

  • #5
    Regular Coder
    Join Date
    Sep 2011
    Posts
    366
    Thanks
    39
    Thanked 0 Times in 0 Posts
    Here are codes including what you suggested me, but the problem is the same! Is this because my emailaddress field in the table is UNIQUE KEY?

    PHP Code:
    <?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $email $_POST['enter'];
    @
    mysql_connect ('localhost''root''') or die ('Error');
    @
    mysql_select_db ('links') or die ('Error');
    if (!
    filter_var($emailFILTER_VALIDATE_EMAIL)) {
    echo 
    "Not an email";
    return 
    false;    
    } else {
    mysql_query("DELETE FROM email WHERE emailaddress ='$email'") or die(mysql_error()); 
    echo 
    "deleted";
    }
    }
    ?>

  • #6
    God Emperor Fou-Lu's Avatar
    Join Date
    Sep 2002
    Location
    Saskatoon, Saskatchewan
    Posts
    16,994
    Thanks
    4
    Thanked 2,662 Times in 2,631 Posts
    Error reporting on doesn't necessarily mean that its on for all errors.
    It would be preferable that the key is unique. Otherwise you can potentially delete multiple records; both are valid for a design depending on purpose. It is possible that you are violating a key constraint not set to cascade which will cause it to reject the deletion.

    What of output, is it blank?

  • #7
    Regular Coder
    Join Date
    Sep 2011
    Posts
    366
    Thanks
    39
    Thanked 0 Times in 0 Posts
    It just tells me that the email has been deleted, but when I refresh the database in PHPMyAdmin, it is still there.. I mean it has not been deleted at all..

  • #8
    God Emperor Fou-Lu's Avatar
    Join Date
    Sep 2002
    Location
    Saskatoon, Saskatchewan
    Posts
    16,994
    Thanks
    4
    Thanked 2,662 Times in 2,631 Posts
    Okay, so or die(mysql_error()); produces no failure results. The query is therefore successful indicating a deficiency with the data involved.
    Now you check how many were deleted:
    PHP Code:
    mysql_query("DELETE FROM email WHERE emailaddress ='$email'") or die(mysql_error()); 
    printf("Deleted %d records." PHP_EOLmysql_affected_rows()); 
    How many does it say were deleted? If its 0, there is no matching emailaddress to the given $email. Capture the query into a variable and print that out instead.

  • #9
    Regular Coder
    Join Date
    Sep 2011
    Posts
    366
    Thanks
    39
    Thanked 0 Times in 0 Posts
    I have already done it. It is working now. It was a problem of a dot in the database. When performing the INSERT code, I included a dot in it thus thats is why the email was not deleting as it did not match. Thank you to all of you who have helped me!


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •