I don't understand why the sql isn;t working in the for loop:
PHP Code:
<?php
require_once "Paginated.php";
require_once "DoubleBarLayout.php";
/******************************************************************************/
//connection
$con = mysql_connect("","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("kjv", $con);
/******************************************************************************/
$searchThese = $_GET['searchthese'];
$searchTheseArr = $searchThese;
$searchTheseArr=str_replace(":", "", $searchTheseArr);
$searchTheseArr=str_replace(";", "", $searchTheseArr);
$searchTheseArr=str_replace(",", "", $searchTheseArr);
$searchTheseArr=str_replace(".", "", $searchTheseArr);
$searchTheseArr=str_replace("?", "", $searchTheseArr);
//common words
$searchTheseArr=str_replace("shall", "", $searchTheseArr);
$searchTheseArr=str_replace("shalt", "", $searchTheseArr);
$searchTheseArr = explode(" ", $searchTheseArr);
function bookTitles(){
$booktitlesarray = array();
$sql="SELECT * FROM bible WHERE 1=1 AND";
$j=0;
//to sort out all words with length less than 4 like AND, OR, BUT...
for ($i=0; $i < count($searchTheseArr); $i++){
if(strlen($searchTheseArr[$i]) > 4){
$newSearchTheseArr[$j] = $searchTheseArr[$i];
//j renumbers the words of length 4 and up
$j++;
}
}
//sql searches only length 4 and up
for ($j=0; $j < count($newSearchTheseArr); $j++){
$sql.=" CASE WHEN text_data LIKE '%" .$newSearchTheseArr[$j]. "%' THEN 1 ELSE 0 END";
if($j!=count($newSearchTheseArr)-1){
$sql.=" +";
}else{
//removes the OR from the last line and replaces with the following
$sql.= " > 3";
}
}
$sql .= " ORDER BY id";
echo $sql;
$result = mysql_query($sql);
if($result){
while($row = mysql_fetch_assoc($result)){
$booktitlesarray[] = "<span class='goToBookChapter' style='font-weight: bold;'>".$row['book_title']." ".$row['chapter'].":".$row['verse']."</span><br />".$row['text_data']."<br />";
}
}
return $booktitlesarray;
}
$names = bookTitles();
$page = $_GET['page'];
//constructor takes three parameters
//1. array to be paged
//2. number of results per page (optional parameter. Default is 10)
//3. the current page (optional parameter. Default is 1)
$pagedResults = new Paginated($names, 10, $page);
echo "<div>\n";
while($row = $pagedResults->fetchPagedRow()){
echo "<span>{$row}</span><br />\n";
}
echo "</div>\n";
//mysql_close($con);
//important to set the strategy to be used before a call to fetchPagedNavigation
$pagedResults->setLayout(new DoubleBarLayout());
echo $pagedResults->fetchPagedNavigation();
mysql_close($con);
?>
When I echo
$searchThese right after the
$searchThese = $_GET['searchthese']; it shows.
The intention of the first for loop is to sort out the small words of less than 4 letters.