views:

43

answers:

2

I have a PHP generated form which consists of a list of items, each with a button next to them saying "Remove This" it outputs similar to below:

Item A - [Remove This]
Item B - [Remove This]
...

I wish to be able to click Remove This and it will detect which item it is, and then remove that from the database. Here's my code so far:

selectPlaces.php

<?php
include 'data.php';

mysql_connect($host, $user, $pass) or die ("Wrong Information");

mysql_select_db($db) or die("Wrong Database");

$result = mysql_query("SELECT * FROM reseller_addresses") or die ("Broken Query");
while($row = mysql_fetch_array($result)){
    $placeName = stripslashes($row['b_name']);
    $placeCode = stripslashes($row['b_code']);
    $placeTown = stripslashes($row['b_town']);
    $outputPlaces .= "<strong>$letter:</strong> $placeName, $placeTown, $placeCode <input type=\"button\" onclick=\"removePlace()\" value=\"Remove This\" /><br />";
}

mysql_close();
?>

Coupled with my admin.php

        <div id="content" style="display:none">
        Remove a Place<br><br>
        <?php include 'selectPlaces.php'; echo $outputPlaces; ?> 
        </div>

I know I need to add some javascript to detect which button is clicked but I can't seem to get it working. I tried modifying the onclick="removePlace()" by perhaps passing a variable in the function removePlace(placeID) or something like that, but I'm new to JavaScript and I have no idea how to receive this in the removePlace function.

+2  A: 

You don't need JavaScript for that. Try running this example:

<?php var_dump($_POST); ?>
<form action="post.php" method="post">
    <p>
        <input type="submit" value="a" name="action" />
        <input type="submit" value="b" name="action" />
    </p>
</form>

You'll see that $_POST['action'] will depend on which button was pressed. For your example, you just need to set the value to identify the item that needs to be deleted. It might be useful to use the <button> element for that: <button name="delete" type="submit" value="12345">delete item 12345</button>. It'll show up as $_POST['delete'] with 12345 as value when submitted.

Reinis I.
Careful: IE6 doesn't support `<button>` properly and posts all name value pairs of all buttons instead of just the one clicked.
RoToRa
Thanks for the notice.
Reinis I.
Oh, and I just remembered, that IE6 also posts the content of the `button` as the value instead of the value property.
RoToRa
+3  A: 

This seems easier to do without JavaScript. For each entry instead of generating just a button, generate a form that posts to a PHP script that does the deleting.

<form action="deletePlace.php?id=<?php echo $idOfThePlace?>">
<input type="submit" value="Remove This" />
</form>

$idOfThePlace would be the ID with you use to identify the data row.

RoToRa