View Single Post
  #1 (permalink)  
Old 07-06-2008, 07:24 PM
gilgalbiblewhee gilgalbiblewhee is offline
Registered User
 
Join Date: Jul 2004
Posts: 249
php sql not working in for loop

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($names10$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.
Reply With Quote