Complex selection criteria not working
I have a submit form that allows people to enter stud dogs into a database and then search for stud dogs with criteria selected from a form. It is complex because there are many different criteria that can be selected for searching (or not). In most cases, the selection criteria is either selected or not, but I have one case complicating the select statement even further. A dog is a specific color, so a given dog record will have only one value for the field 'color'. But a person can indicate selection criteria that includes up to 7 different color values (or none).
I found this lovely bit of code under another thread and I've attempted to use the longer version of tit to make my select statement work. This is the code that I've got now:
$query_rs_results = "SELECT dogid, b_email, b_fname, b_lname, b_phone, b_url, dob, dod, reg_name, reg_no, o_email, o_fname, o_lname, o_phone, o_url, registry, semen_l, semen_f, semen_fc, semen_fr, photo FROM dog_main";
// Set a flag to indicate whether the query has a WHERE clause
// Set a variable to indicate if the select statement has a color value selected
$where = false;
$color = 0;
if (isset($_GET['arm']) && !empty($_GET['arm'])) {
$query_rs_results .= ' WHERE arm = '. GetSQLValueString($_GET['arm'], 'text');
$where = true;
}
if (isset($_GET['bite']) && !empty($_GET['bite'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'bite = ' . GetSQLValueString($_GET['bite'], 'text');
}
if (isset($_GET['body']) && !empty($_GET['body'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'body1 = ' . GetSQLValueString($_GET['body'], 'text');
}
if (isset($_GET['breadth']) && !empty($_GET['breadth'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'breadth = ' . GetSQLValueString($_GET['breadth'], 'text');
}
if (isset($_GET['brisket']) && !empty($_GET['brisket'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'brisket = ' . GetSQLValueString($_GET['brisket'], 'text');
}
if (isset($_GET['dentition']) && !empty($_GET['dentition'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'dentition = ' . GetSQLValueString($_GET['dentition'], 'text');
}
if (isset($_GET['color_b']) && !empty($_GET['color_b'])) {
$color = $color + 1;
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
}
$query_rs_results .= '(color = ' . GetSQLValueString($_GET['color_b'], 'text');
}
if (isset($_GET['color_bl']) && !empty($_GET['color_bl'])) {
$color = $color + 1;
If ($color > 1) {
$query_rs_results .= ' OR ';
} else {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
}
}
$query_rs_results .= 'color = ' . GetSQLValueString($_GET['color_bl'], 'text');
}
if (isset($_GET['color_br']) && !empty($_GET['color_br'])) {
$color = $color + 1;
If ($color > 1) {
$query_rs_results .= ' OR ';
} else {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
}
}
$query_rs_results .= 'color = ' . GetSQLValueString($_GET['color_br'], 'text');
}
if (isset($_GET['color_f']) && !empty($_GET['color_f'])) {
$color = $color + 1;
If ($color > 1) {
$query_rs_results .= ' OR ';
} else {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
}
}
$query_rs_results .= 'color = ' . GetSQLValueString($_GET['color_f'], 'text');
}
if (isset($_GET['color_h']) && !empty($_GET['color_h'])) {
$color = $color + 1;
If ($color > 1) {
$query_rs_results .= ' OR ';
} else {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
}
}
$query_rs_results .= 'color = ' . GetSQLValueString($_GET['color_h'], 'text');
}
if (isset($_GET['color_m']) && !empty($_GET['color_m'])) {
$color = $color + 1;
If ($color > 1) {
$query_rs_results .= ' OR ';
} else {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
}
}
$query_rs_results .= 'color = ' . GetSQLValueString($_GET['color_m'], 'text');
}
if (isset($_GET['color_o']) && !empty($_GET['color_o'])) {
$color = $color + 1;
If ($color > 1) {
$query_rs_results .= ' OR ';
} else {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
}
}
$query_rs_results .= 'color = ' . GetSQLValueString($_GET['color_o'], 'text');
}
if ($color > 0) {
$query_rs_results .= ') ';
}
if (isset($_GET['ears']) && !empty($_GET['ears'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'ears = ' . GetSQLValueString($_GET['ears'], 'text');
}
if (isset($_GET['eye_color']) && !empty($_GET['eye_color'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'eye_color = ' . GetSQLValueString($_GET['eye_color'], 'text');
}
if (isset($_GET['eye_shape']) && !empty($_GET['eye_shape'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'eye_shape = ' . GetSQLValueString($_GET['eye_shape'], 'text');
}
if (isset($_GET['eye_tight']) && !empty($_GET['eye_tight'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'eye_tight = ' . GetSQLValueString($_GET['eye_tight'], 'text');
}
if (isset($_GET['f_feet']) && !empty($_GET['f_feet'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'f_feet = ' . GetSQLValueString($_GET['f_feet'], 'text');
}
if (isset($_GET['head']) && !empty($_GET['head'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'head = ' . GetSQLValueString($_GET['head'], 'text');
}
if (isset($_GET['hocks']) && !empty($_GET['hocks'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'hocks = ' . GetSQLValueString($_GET['hocks'], 'text');
}
if (isset($_GET['lip']) && !empty($_GET['lip'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'lip = ' . GetSQLValueString($_GET['lip'], 'text');
}
if (isset($_GET['longevity']) && !empty($_GET['longevity'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'longevity = ' . GetSQLValueString($_GET['longevity'], 'text');
}
if (isset($_GET['neck_length']) && !empty($_GET['neck_length'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'neck_length = ' . GetSQLValueString($_GET['neck_length'], 'text');
}
if (isset($_GET['neck_set']) && !empty($_GET['neck_set'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'neck_set = ' . GetSQLValueString($_GET['neck_set'], 'text');
}
if (isset($_GET['r_angulation']) && !empty($_GET['r_angulation'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'r_angulation = ' . GetSQLValueString($_GET['r_angulation'], 'text');
}
if (isset($_GET['r_feet']) && !empty($_GET['r_feet'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'r_feet = ' . GetSQLValueString($_GET['r_feet'], 'text');
}
if (isset($_GET['semen_f']) && !empty($_GET['semen_f'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'semen_f = ' . GetSQLValueString($_GET['semen_f'], 'text');
}
if (isset($_GET['semen_fc']) && !empty($_GET['semen_fc'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'semen_fc = ' . GetSQLValueString($_GET['semen_fc'], 'text');
}
if (isset($_GET['semen_fr']) && !empty($_GET['semen_fr'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'semen_fr = ' . GetSQLValueString($_GET['semen_fr'], 'text');
}
if (isset($_GET['semen_l']) && !empty($_GET['semen_l'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'semen_l = ' . GetSQLValueString($_GET['semen_l'], 'text');
}
if (isset($_GET['shoulders']) && !empty($_GET['shoulders'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'shoulders = ' . GetSQLValueString($_GET['shoulders'], 'text');
}
if (isset($_GET['tail_length']) && !empty($_GET['tail_length'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'tail_length = ' . GetSQLValueString($_GET['tail_length'], 'text');
}
if (isset($_GET['tail_set']) && !empty($_GET['tail_set'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'tail_set = ' . GetSQLValueString($_GET['tail_set'], 'text');
}
if (isset($_GET['temperament']) && !empty($_GET['temperament'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'temperament = ' . GetSQLValueString($_GET['temperament'], 'text');
}
if (isset($_GET['topline']) && !empty($_GET['topline'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'topline = ' . GetSQLValueString($_GET['topline'], 'text');
}
if (isset($_GET['withers']) && !empty($_GET['withers'])) {
if ($where) {
$query_rs_results .= ' AND ';
} else {
$query_rs_results .= ' WHERE ';
$where = true;
}
$query_rs_results .= 'withers = ' . GetSQLValueString($_GET['withers'], 'text');
}
echo "Query search = ".$query_rs_results;
$query_limit_rs_results = sprintf("%s LIMIT %d, %d", $query_rs_results, $startRow_rs_results, $maxRows_rs_results);
$rs_results = mysql_query($query_limit_rs_results, $dqdb) or die(mysql_error());
$row_rs_results = mysql_fetch_assoc($rs_results);
if (isset($_POST['totalRows_rs_results'])) {
$totalRows_rs_results = $_POST['totalRows_rs_results'];
} else {
$all_rs_results = mysql_query($query_rs_results);
$totalRows_rs_results = mysql_num_rows($all_rs_results);
}
$totalPages_rs_results = ceil($totalRows_rs_results/$maxRows_rs_results)-1;
I'm echoing $query_rs_results to verify that it is building the select statement correctly, but it is not. The select statement being echoed is:
SELECT dogid, b_email, b_fname, b_lname, b_phone, b_url, dob, dod, reg_name, reg_no, o_email, o_fname, o_lname, o_phone, o_url, registry, semen_l, semen_f, semen_fc, semen_fr, photo FROM dog_main
The results page is displaying every dog in the database.
What am I missing here?
TIA,
Laura
