Jump to content

[help]about check box adding in sql


vinsux

Recommended Posts

//some php sql codes

echo "<form action='survey.php' method='POST'>";
			echo "<td class = name> <input type='checkbox' name='vote[]' value='$sql_row[name]' id='$sql_row[id]'>".$name."</td>";
			echo "</tr>";
			} 
			
		}	echo "<tr><td class = btn><button type='submit' name='btnSurvey'>Vote</button></td> </tr></form>";
			echo "<form action='viewsurvey.php' method='POST'>";
			echo "<tr><td class = btn><button type='submit' name='btnResult'>Results</button></td> </tr></form>";
						echo "</table>";
		//echo "    <tr><td><button type='submit' name='btnSurvey'>Vote</button></td> </tr></form>";
		
		}
mysql_close();

include('connect.php');
$result = mysql_query("SELECT * from candidates");
//adding only one candidate	
if(!empty($_POST['vote'])) {
    foreach($_POST['vote'] as $check) {
         //   echo $check;
		mysql_query("UPDATE candidates  SET votes = votes + 1 WHERE name = '$check'");
		header("Location: viewsurvey.php");
 		exit();
	}
}
// some codes

i found a bug on my work, my work is about survey, users will choose from 20+ candidates and they need to select only 12..

 

i used check box for user to select more than one candidate to vote, i want to set it until 12 but i can only add one vote on the candidate even

 

i checked (or vote) more than one. 

 

help please.. 

Link to comment
Share on other sites

So, you have multiple checkbox options for the user to choose from (at least 20) but you want to limit the user to only selecting up to 12, correct?

 

The best solution for this, in my opinion is to 1) Implement JavaScript to disable the checkboxes (or provide some type of user response) once 12 options are selected. But, you must also 2) implement code on the back-end page that receives the form submission to verify that there were no more than 12 options selected.

Link to comment
Share on other sites

Here is an example script that has both the JavaScript and the PHP code to implement the client-side logic and the server-side verification. To test the server-side logic you would need to to one of three things:

 

1. Turn off javascript in your browser so you can select more than 12 options

2. Remove the onclick even in the checkboxes

3. In the limitCheckboxes() javascript function put a "return;" on the very first lime. This will bypass the Javascript function and allow you to select more than 12 options for the purpose of testing. I put such a line into the function (which is commented out) and you can uncomment it to test.

 

 

<?php

error_reporting(E_ALL);

$maxVoteCount = 12;

//If form was posted verify number of checked items
$result = "";
if($_SERVER['REQUEST_METHOD'] == "POST")
{
    if(isset($_POST['vote']) && count($_POST['vote']) > $maxVoteCount)
    {
        $result = "You checked too many items. Bad Job.";
    }
    else
    {
        $result = "You did not check too many options. Good Job.";
    }
}

//Dynamically create input fields
$inputFields = "";
for($i = 1; $i <=20; $i++)
{
    $inputFields .= "<input type='checkbox' name='vote[]' value='{$i}' id='{$i}' onclick='limitCheckboxes(this.name, {$maxVoteCount})'> Option {$i}<br>\n";
}

?>
<html>
<head>
<script type="text/javascript">

function limitCheckboxes(groupName, maxCount)
{
    //Uncomment next line to test PHP code for verifying max count
    //return;

    var checkboxGroup = document.getElementsByName(groupName);
    var checkedCount = 0;
    for(i=0; i<checkboxGroup.length; i++)
    {
        checkedCount += checkboxGroup[i].checked;
    }
    //Set disable state based upon number checked
    var disabledState = (checkedCount >= maxCount);
    for(i=0; i<checkboxGroup.length; i++)
    {
        //disable/enable the unchecked boxes
        if(!checkboxGroup[i].checked)
        {
            checkboxGroup[i].disabled = disabledState;
        }
    }
    //Enable/disable submit button
    document.getElementById('submit').disabled = disabledState;
    return false;
}
</script>
</head>

<body>

<?php echo $result; ?>
<br><br>
Select up to 12 options:
<br><br>
<form action="" method="post">
    <?php echo $inputFields; ?>
    <br>
    <button type="submit" id="submit">Submit</button>
</form>
</body>
</html>
Edited by Psycho
Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

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.