Jump to content

Archived

This topic is now archived and is closed to further replies.

pmorrison

Going through a checkbox array

Recommended Posts

Hi,

I am new to Javascript and am having a bit of difficulty. On my site, in
order for a member to unsubscribe from an article, they go to
the'Unsubscribe' page where they get a table of all of the articles that
they are subscribed to. There is a table with each article, and a checkbox
next to each article. For each checked checkbox it should send the value of
the checkbox to stop_subscription.php.

I have used the following javascript, I know there is something wrong with
it, but dont know what:

<script type="text/javascript">
function validate() {
for(var i=0; i < document.table11.deletethis[].length; i++){
if(document.table1.deletethis[i].checked)
stop_subscription.php?id="document.form1.deletethis[i].value"
}
}
</script>

Here are other bits of code I think might be relevant:

<?php
// Make table if member has specific injustice subscriptions
$sql = "SELECT i.type, i.title , s.inj_id FROM inj_subscription s, injustices i WHERE s.member_id = '$user' AND i.inj_id = s.inj_id AND s.inj_id IS NOT null" ;
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result) ;
if ($row) {
echo "<div><span>Specific Injustice Subsriptions:</span><br/>" ;
$table_start ='<table width="90%" table name="table2" align="center" cellspacing="0" border="0">
<tr>
<th width="20%">Type</th>
<th width="70%">Title</th>
<th width="10%"></th>
<input type=button name="Unsubscribe" value="Unsubscribe" onClick="validate()" style="font-size:10px"/><p>
</tr>';
echo $table_start;
$rownum = 0;
while($row) {
$rownum++;
$style = rowcolor($rownum);
$table_rows = "<td id=\"td\" align=\"center\" style=\" $style ;padding:5px\" >" .$row['type'] . "</td>";
$table_rows .= "<td id=\"td\" align=\"center\" style=\" $style ;padding:5px\" >" . $row['title']. "</td> \n\t";
$table_rows .= '<td id="td" align="center" style="'.$style.';padding:5px;" >'."\n".'<input type="checkbox" name="deletethis[]" value="'.$row['inj_id'] . '"></td>'."\n\t";
echo "<tr>" . $table_rows . "</tr>";
$row = mysql_fetch_assoc($result) ;
}
echo '</table><Br/></div><br/>';
}
?>

I feel bad just pasting a large slab of code here, but I really have no idea
where Im going wrong!

Cheers,

Paul

Share this post


Link to post
Share on other sites
You don't need the javascript.

The form tag should have "action='stop_subscription.php' " and the checked checkbox values will be posted in the array $_POST['delete_this'].

Store $user in a hidden form field so that too gets posted.

In "stop_subscription.php"

[code]$user = $_POST['user'];
$injIDList = join (',' , $_POST['delete_this'] );[/code]

then

[code]DELETE FROM inj_subscription  WHERE member_id = '$user' AND inj_id IN ($injIDList)[/code]

Share this post


Link to post
Share on other sites
Ive had a go at changing this around, adding in the form tag, but I dont know if Ive put it in the right place, I feel Im out of my php depth! I Told a friend Id be able to do this for him, thinking it would be easy, but it appears I misjudged it!

<?php
require_once('member_auth.php') ;
include_once('../includes/connect_db.php');
include_once('../includes/functions.php');
include('../header.php');
?>

<?php
//If user has applied for a subsciption, run this code
// If all is OK, then make a subscription
if ($_REQUEST['stop_subscription']==1) {

if (count($_REQUEST['deletethis']) > 0) {
// Split the subscriptions array so we can get the checkbox values.
foreach ($_POST['deletethis'] as $sub=>$value) {
// stop_subscription.php?id="$"
}

}
}
?>

<div id="title1" align="center">
<h3>Unsubscribe</h3>

<?php
// Make table if member has specific injustice subscriptions
$sql = "SELECT i.type, i.title , s.inj_id FROM inj_subscription s, injustices i WHERE s.member_id = '$user' AND i.inj_id = s.inj_id AND s.inj_id IS NOT null" ;
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result) ;
if ($row) {
echo "<div><span>Specific Injustice Subsriptions:</span><br/>" ;
$table_start ='<table width="90%" table name="table2" align="center" cellspacing="0" border="0">
<tr>
<form method="post" action="stop_subscription.php">
<th width="20%">Type</th>
<th width="70%">Title</th>
<th width="10%"></th>
<input type="submit" name="Submit" value="Submit" style="font-size:10px"/><p>
<input type="hidden" name="stop_subscription" value="1"/>
</form>
</tr>';
echo $table_start;

$rownum = 0;
while($row) {
$rownum++;
$style = rowcolor($rownum); $table_rows = "<td id=\"td\" align=\"center\" style=\" $style ;padding:5px\" >" .$row['type'] . "</td>";
$table_rows .= "<td id=\"td\" align=\"center\" style=\" $style ;padding:5px\" >" . $row['title']. "</td> \n\t";
$table_rows .= '<td id="td" align="center" style="'.$style.';padding:5px;" >'."\n".'<input type="checkbox" name="deletethis[]" value="'.$row['inj_id'] . '"></td>'."\n\t";
echo "<tr>" . $table_rows . "</tr>";
$row = mysql_fetch_assoc($result) ;
}
echo '</table><Br/></div><br/>';
}
?>
</div>
<?php
include('../footer.php');
?>

Share this post


Link to post
Share on other sites
All form elements, such as checkboxes and submit button need to be between <form>..</form> tags

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.