HI, i was reading the article about insert checkboxes data into a mysql database and i try to doit with the code example and one of my own, so it gives me no errors but do not store the data in the table. heres my code:
MySQL Tables
CREATE TABLE `const_skills` (
`id` int(11) NOT NULL auto_increment,
`valor` varchar(50) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
INSERT INTO `const_skills` VALUES (1, 'PHP');
INSERT INTO `const_skills` VALUES (2, 'MYSQL');
INSERT INTO `const_skills` VALUES (3, 'JAVA');
INSERT INTO `const_skills` VALUES (4, 'PERL');
INSERT INTO `const_skills` VALUES (5, 'JSP');
INSERT INTO `const_skills` VALUES (6, 'ASP');
CREATE TABLE `lookup_skills` (
`id` int(11) NOT NULL auto_increment,
`uid` int(11) default NULL,
`skill_id` int(11) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE `users` (
`uid` int(11) NOT NULL auto_increment,
`nome` varchar(50) default NULL,
`pass` varchar(50) default NULL,
PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
INSERT INTO `users` VALUES (1, 'miguel', 'miguel');
INSERT INTO `users` VALUES (2, 'ana', 'anita');
teste.php code
<?php
//dados MySQL
$dbhost="localhost";
$dbuser="xxxxxxxxx";
$dbpass="xxxxxxxxx";
$dbname="check";
//Faz ligação ao servidor de base de dados
$conn = @mysql_connect($dbhost, $dbuser, $dbpass);
$conn .= @mysql_select_db($dbname);
/* 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=array()) {
/* 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->id) {
$str .= "checked";
continue;
}
}
$str .= ">";
$str .= "$ele->valor";
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->valor";
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;
}
?>
insertskills.php code
<?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);
}
?>
if i try to execute my script like this:
www.domain.com/teste.php?&uid=1
he runs great i select the checkboxes and submit he jumps t the insertskills.php page but do not store anything in the database in the lookup_skills table
can anyone help me?