I've posted the code below from the article's example. I've tested the code and it will print the checkboxes with labels from the database on screen. When I click the checkboxes and press submit, the database is not updated with the selected information.
I'm relatively new to PHP and I try to learn more about how code works by trying examples but I don't understand why this one doesn't seem to work. Thanks for your help.
<?php
/ insert code to connect to your database here /
/ get the checkbox labels /
$skills = get_checkbox_labels("const_skills");
/ create the html code for a formatted set of
checkboxes /
$html_skills = make_checkbox_html($skills, 3, 400, "skills[]");
?>
<html>
<body>
<br>
<form name="skills" method="POST" action="insertskills.php">
Check off your web development skills:
<? echo "$html_skills"; ?>
<br>
<input type="submit" value="Submit">
</form>
</body>
</html>
<?php
function get_checkbox_labels($table_name) {
/ make an array /
$arr = array();
/ construct the query /
$query = "SELECT * FROM $table_name";
/ execute the query /
$qid = mysql_query($query);
/ each row in the result set will be packaged as
an object and put in an array /
while($row= mysql_fetch_object($qid)) {
array_push($arr, $row);
}
return $arr;
}
/* Prints a nicely formatted table of checkbox choices.
$arr is an array of objects that contain the choices
$num is the number of elements wide we display in the table
$width is the value of the width parameter to the table tag
$name is the name of the checkbox array
$checked is an array of element names that should be checked
*/
function make_checkbox_html($arr, $num, $width, $name, $checked) {
/ create string to hold out html /
$str = "";
/ make it /
$str .= "<table width=\"$width\" border=\"0\">\n";
$str .= "<tr>\n";
/ determine if we will have to close add
a closing tr tag at the end of our table /
if (count($arr) % $num != 0) {
$closingTR = true;
}
$i = 1;
if (isset($checked)) {
/ if we passed in an array of the checkboxes we want
to be displayed as checked /
foreach ($arr as $ele) {
$str .= "<td><input type=\"checkbox\" name=\"$name\" value=\"$ele->id\"";
foreach ($checked as $entry) {
if ($entry == $ele->value) {
$str .= "checked";
continue;
}
}
$str .= ">";
$str .= "$ele->value";
if ($i % $num == 0) {
$str .= "</tr>\n<tr>";
} else {
$str .= "</td>\n";
}
$i++;
}
} else {
/ we just want to print the checkboxes. none will have checks /
foreach ($arr as $ele) {
$str .= "<td><input type=\"checkbox\" name=\"$name\" value=\"$ele->id\">";
$str .= "$ele->value";
if ($i % $num == 0) {
$str .= "</tr>\n<tr>";
} else {
$str .= "</td>\n";
}
$i++;
}
}
/ tack on a closing tr tag if necessary /
if ($closingTR == true) {
$str .= "</tr></table>\n";
} else {
$str .= "</table>\n";
}
return $str;
}
?>
<?php
/ the function we call to insert.
the $skills argument is the skills array that
is sent to the script when the user hits the submit button
/
function insert_skills($uid, $skills) {
/ first, we'll delete any entries this user already has
in the table /
purge_lookup("lookup_skills", $uid);
/ now create the sql insert query /
$query = create_checkbox_query($skills, "lookup_skills", $uid);
/ execute the query /
mysql_query($query);
}
/ helper function for insert_skills().
removes all rows in $table with $uid /
function purge_lookup($table, $uid) {
$q = "DELETE FROM $table, WHERE uid = '$uid'";
mysql_query($q);
}
/ helper function for insert_skills().
generates the sctual SQL query /
function create_checkbox_query($arr, $table, $uid) {
$q = "INSERT INTO $table (uid, skill_id) VALUES";
foreach ($arr as $check) {
$q .= " ( $uid , $check )" . ",";
}
/ remove the last comma and return /
return substr($q, 0, -1);
}
?>