<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
<head>
 
<title>PHP Search</title>
 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 
<?php 
 
    
 
    require_once("../phpsessionclass/session.inc.php");
 
    $bNewQuery = FALSE;
 
    $bUseSavedQuery = FALSE;
 
    $strSearchString = "";
 
    if ($_SERVER['REQUEST_METHOD']="POST") {
 
        $strSearchString = $_REQUEST['SearchString'];
 
        $strPG = $_REQUEST['pg'];
 
        if ($strPG <> "") {
 
            $iNextPageNumber = $strPG;
 
            $bNewQuery = FALSE;
 
            $bUseSavedQuery; $bUseSavedQuery = TRUE;
 
        } else {
 
            $bNewQuery = ($strSearchString <> "");
 
        } // end if
 
    } // end if
 
    
 
    function session_dump() {
 
        // dumps info about a session
 
        $session_array = explode(";",session_encode());
 
        $html = "<br/><!-- SESSION VARIABLES DUMP\n\n";
 
        for ($x = 0; $x < count($session_array); $x++) { 
 
            $html .= "     $session_array[$x] \n";
 
        }
 
         $html .= " -->\n\n";
 
        return $html;
 
    }  // end function session_dump
 
 
    
 
?>
 
<style type="text/css">
 
<!--
 
.pagetitle {
 
    font-family: Verdana, Arial, Helvetica, sans-serif;
 
    font-size: x-large;
 
    font-weight: bold;
 
}
 
.wdAbstract {
 
    font-style: italic;
 
    font-weight: bold;
 
}
 
.url {
 
    font-size: smaller;
 
    font-style: italic;
 
}
 
.filesize {
 
    font-size: smaller;
 
    font-style: italic;
 
}
 
.filetime {
 
    font-size: smaller;
 
    font-style: italic;
 
}
 
.characterization {
 
    font-family: Verdana, Arial, Helvetica, sans-serif;
 
    font-size: smaller;
 
}
 
-->
 
</style>
 
</head>
 
 
<body>
 
<p class="pagetitle">Sample PHP Search Form</p>
 
<table width="75%" border="0">
 
  <tr>
 
    <td>Enter your query below</td>
 
  </tr>
 
  <tr>
 
    <td><form name="form1" id="form1" method="post" action="<?php echo($_SERVER['SCRIPT_NAME']); ?>">
 
        <table width="100%" border="0">
 
          <tr>
 
            <td width="83%"><input name="SearchString" type="text" id="SearchString" size="80" maxlength="100" value="<?=$strSearchString?>" /></td>
 
            <td width="17%"><input type="submit" name="Submit" value="New Query" /></td>
 
          </tr>
 
        </table>
 
      </form></td>
 
  </tr>
 
</table>
 
<?php 
 
    if ($strSearchString <> "") {
 
        if ($bNewQuery) {
 
            $iNextRecordNumber = 1;
 
            $oQ = new COM("ixsso.Query");
 
            $oUtil = new COM ("ixsso.util");
 
            $oQ->Query = $strSearchString;
 
            $oQ->SortBy = "rank[d]";
 
            $oQ->Columns = "DocTitle, vpath, path, filename, size, write, characterization";
 
            $RS = $oQ->CreateRecordSet("nonsequential");
 
            $RS->PageSize = 3;
 
            echo ("RS.FieldCount = ".$RS->Fields->Count()." RS.RecordCount =".$RS->RecordCount );
 
            $bActiveQuery = TRUE;
 
        } elseif ($bUseSavedQuery) {
 
            $oQ = new COM("ixsso.Query");
 
            $oUtil = new COM ("ixsso.util");
 
            $oQ->Query = $strSearchString;
 
            $oQ->SortBy = "rank[d]";
 
            $oQ->Columns = "DocTitle, vpath, path, filename, size, write, characterization";
 
            $RS = $oQ->CreateRecordSet("nonsequential");
 
            $RS->PageSize = 3;
 
            echo ("RS.FieldCount = ".$RS->Fields->Count()." RS.RecordCount =".$RS->RecordCount );
 
            $bActiveQuery = TRUE;
 
        
 
            $oSession=new session();
 
            $RS->AbsolutePage = $iNextPageNumber;
 
            $iNextRecordNumber = $RS->AbsolutePosition;                    
 
 
            /*        Unable to re-aquire RS type variables across sessions.
 
            if ( $oSession->is_registered("oQ") and $oSession->is_registered("RS") ) {
 
                $oQ=$oSession->get("oQ");
 
                $RS=$oSession->get("RS");
 
                echo ("FF".$RS->RecordCount."GG");
 
                if ( $RS->RecordCount <> -1 and $iNextRecordNumber <> -1 ) {
 
                    $RS->AbsolutePage = $iNextPageNumber;
 
                    $iNextRecordNumber = $RS->AbsolutePosition;                    
 
                } // end if $RS->RecordCount
 
                $bActiveQuery = TRUE;
 
            } else {
 
                echo ("<p class=\"qfail\"> ERROR - No Saved Query</p>");
 
            } // end if $oQ and $RS from Session
 
            */
 
        } // end if $bNewQuery or Use old query.
 
    } // end if $strSearchString <> ""
 
    
 
    if ($bActiveQuery) {
 
        if (!$RS->EOF) {
 
            $iLastRecordOnPage = $iNextRecordNumber + $RS->PageSize -1;
 
            $iCurrentPage = $RS->AbsolutePage;
 
            if ($RS->RecordCount <> -1 and $RS->RecordCount < $iLastRecordOnPage) {
 
                $iLastRecordOnPage = $RS->RecordCount;
 
            } // end if
 
 
            echo ("<br/>Documents ".$iNextRecordNumber. " to ".$iLastRecordOnPage);
 
            if ($RS->RecordCount <> -1) {
 
                echo (" of ".$RS->RecordCount);
 
            }
 
            echo ( " matching the query ".chr(34)."<I>".$strSearchString."</I>".chr(34).".<p>");    
 
?>
 
            <dl>
 
<?php         while (!$RS->EOF and $iNextRecordNumber <= $iLastRecordOnPage)    {    
 
?>
 
            
 
  <p class="abstract"> 
 
  <dt>
 
            <?php echo ($iNextRecordNumber)?>.
 
            <?php     // epc Include some error handling for when all fields are not specified in oQColums
 
                    if (empty($RS->Fields["DocTitle"]->value) or 
 
                            $RS->Fields["DocTitle"]->value=="" or 
 
                            $RS->Fields["DocTitle"]->value=="0")  {?>
 
                <b>    <a href="
 
                        <?=$RS->Fields["vpath"]->value?>
 
                        ">
 
                        <?=htmlentities($RS->Fields["filename"]->value)?>
 
                    </a></b>
 
            <?php } else {?>
 
                <b>    <a href="<?=$RS->Fields["vpath"]->value?>">
 
                        <?=htmlentities($RS->Fields["DocTitle"]->value)?>
 
                    </a></b>
 
            <?php }?>
 
            <dd>
 
            <?php if (is_string($RS->Fields["characterization"]->value) and $RS->Fields["characterization"]->value <> "") {?>
 
                <span class="wdAbstract">Abstract:  </span>
 
                <span class="characterization">
 
                        <?=htmlentities($RS->Fields["characterization"]->value)?>
 
                </span><br>
 
            <?php } ?>
 
                <span class="url">
 
            
 
                <a href="
 
                    <?=$RS->Fields["vpath"]->value?>    
 
                ">http://<?=$_SERVER['SERVER_NAME'];?><?=$RS->Fields["vpath"]->value?>
 
                </a> -  
 
                </span>
 
                <span class="filesize">
 
                    <?php if ($RS->Fields["size"]->value == "") {?>
 
                        (size unknown)
 
                    <?php } else {?>
 
                        size <?=$RS->Fields["size"]->value?> bytes
 
                    <?php }?>
 
                </span>
 
                <span class="filetime">
 
                    <?php if ($RS->Fields["write"]->value == "" or (int)$RS->Fields["write"]->value < 100 ) {?>
 
                        (time unknown)
 
                    <?php } else {?>
 
                        <?=date("Y-m-d g:i:s A",$RS->Fields["write"]->value)?> GMT
 
                    <?php }?>
 
                </span>
 
                
 
            </dd>
 
<?php        $RS->MoveNext();
 
            ++$iNextRecordNumber;
 
            }  // end while
 
?>            </p>
 
            </dl>
 
            <p></p><br/>
 
<?php    } else {
 
            if ($iNextRecordNumber == 1) {
 
                echo ("<p>No documents matched the query ".chr(34).$strSearchString.chr(34)."</p>");
 
            } else {
 
                echo ("<p>No more docouments in the query.</p>");
 
            }
 
        } // end if $RS.EOF
 
 
        if ($oQ->OutOfDate) {
 
            echo ("<p class=\"qmessage\">The index is out of date</p>");
 
        }
 
        if ($oQ->QueryIncomplete) {
 
            echo ("<p class=\"qfail\">The query is too expensive to complte</p>");
 
        }
 
        if ($oQ->QueryTimedOut) {
 
            echo ("<p class=\"qfail\">The query took to long to complte</p>");
 
        } ?>
 
 
        <table border="0">
 
          <tr>
 
              <?php 
 
            // PREVIOUS Button
 
            $bSaveQuery=FALSE;?>
 
            <?php if ($iCurrentPage > 1 and $RS->RecordCount <> -1) {?>
 
            <td align="left"><form action="<?=$_SERVER['SCRIPT_NAME']?>" method="post">
 
                    <input type="hidden" name="SearchString" value="<?=$strSearchString?>"/>
 
                    <input type="hidden" name="pg" value="<?=$iCurrentPage-1?>"/>
 
                    <input type="submit" value="Previous <?=$RS->PageSize?>" documents/>
 
                </form>
 
            </td>
 
            <?php 
 
            $bSaveQuery=TRUE;
 
            }?>
 
            
 
            <?php if (!$RS->EOF) {?>
 
            <td align="right"><form action="<?=$_SERVER['SCRIPT_NAME']?>" method="post">
 
                    <input type="hidden" name="SearchString" value="<?=$strSearchString?>"/>
 
                    <input type="hidden" name="pg" value="<?=$iCurrentPage+1?>"/>
 
                    <?php 
 
                        $strNextString = "Next ";
 
                        if ($RS->RecordCount <> - 1) {
 
                            $iNextSet = $RS->RecordCount - $iNextRecordNumber + 1;
 
                            if ($iNextSet > $RS->PageSize) { $iNextSet=$RS->PageSize; }
 
                            $strNextString = $strNextString . $iNextSet ." documents";
 
                        } else {
 
                            $strNextString = $strNextString & " page of documents";
 
                        }
 
                    ?>
 
                    <input type="submit" value="<?=$strNextString?>"/>
 
                </form>
 
            </td>
 
            <?php 
 
            $bSaveQuery = TRUE;
 
            }?>
 
          </tr>
 
        </table>        
 
Page <?=$iCurrentPage?>
 
    <?php 
 
    if ($RS->PageCount <> -1 ) { echo (" of ".$RS->PageCount);}
 
    if ($bSaveQuery) {
 
        // save session information.  This doesnt work because the RS cannot be recovered between sessions.
 
        $oSession=new session();
 
        $oSession->register("oQ",$oQ);
 
        $oSession->register("RS",$RS);
 
        echo session_dump();
 
    } else {
 
        $RS->Close;
 
        $RS = NULL;
 
        $oQ = NULL;
 
        if (is_object($oSession)) { 
 
            $oSession->unregister("oQ");
 
            $oSession->unregister("RS");
 
            $oSession->finish;
 
        }
 
    } // end if $bSaveQuery
 
    ?>
 
<?php        
 
    } elseif (!$bNewQuery) {
 
        echo ("");
 
    } else {    
 
        echo ("Please enter a word or phrase to search for.");
 
    }// end if $bActiveQuery
 
    
 
?>
 
 
            
 
</body>
 
 
</html>
 
 
 |