thientanchuong Posted December 31, 2009 Share Posted December 31, 2009 I create more 3 files called config1.php, common1.php and database1.php respectively in order to test. All of them have the same code from config.php, common.php and database.php next, I use include function to called config1 file (config1.php) in search.php and remove sesstion_start() in config1.php file, put the session_start function in database1.php and common1.php following the advise, then test: The error message said that I do not need the sesstion_start() in both database1.php and common1.php, so I remmove the function. Finally, there is no error message when I test : But error paging is still appearing, when I click on page 2 for example, the page turns out nothing again: I noticed that the address bar which is http://yoongda.com/search.php?page=2& is missing search value, so address bar shoud show the link: http://yoongda.com/search.php?page=2&search=a How can I add the search value after http://yoongda.com/search.php?page=2& such as search=a ? this is my common1.php which contains paging function. [code]<?php /* Contain the common functions required in shop and admin pages */ require_once 'config1.php'; require_once 'database1.php'; /* Make sure each key name in $requiredField exist in $_POST and the value is not empty */ function checkRequiredPost($requiredField) { $numRequired = count($requiredField); $keys = array_keys($_POST); $allFieldExist = true; for ($i = 0; $i < $numRequired && $allFieldExist; $i++) { if (!in_array($requiredField[$i], $keys) || $_POST[$requiredField[$i]] == '') { $allFieldExist = false; } } return $allFieldExist; } function getShopConfig() { // get current configuration $sql = "SELECT sc_name, sc_address, sc_phone, sc_email, sc_shipping_cost, sc_order_email, cy_symbol FROM tbl_shop_config sc, tbl_currency cy WHERE sc_currency = cy_id"; $result = dbQuery($sql); $row = dbFetchAssoc($result); if ($row) { extract($row); $shopConfig = array('name' => $sc_name, 'address' => $sc_address, 'phone' => $sc_phone, 'email' => $sc_email, 'sendOrderEmail' => $sc_order_email, 'shippingCost' => $sc_shipping_cost, 'currency' => $cy_symbol); } else { $shopConfig = array('name' => '', 'address' => '', 'phone' => '', 'email' => '', 'sendOrderEmail' => '', 'shippingCost' => '', 'currency' => ''); } return $shopConfig; } function displayAmount($amount) { global $shopConfig; return $shopConfig['currency'] . number_format($amount); } /* Join up the key value pairs in $_GET into a single query string */ function queryString() { $qString = array(); foreach($_GET as $key => $value) { if (trim($value) != '') { $qString[] = $key. '=' . trim($value); } else { $qString[] = $key; } } $qString = implode('&', $qString); return $qString; } /* Put an error message on session */ function setError($errorMessage) { if (!isset($_SESSION['plaincart_error'])) { $_SESSION['plaincart_error'] = array(); } $_SESSION['plaincart_error'][] = $errorMessage; } /* print the error message */ function displayError() { if (isset($_SESSION['plaincart_error']) && count($_SESSION['plaincart_error'])) { $numError = count($_SESSION['plaincart_error']); echo '<table id="errorMessage" width="550" align="center" cellpadding="20" cellspacing="0"><tr><td>'; for ($i = 0; $i < $numError; $i++) { echo '• ' . $_SESSION['plaincart_error'][$i] . "<br>\r\n"; } echo '</td></tr></table>'; // remove all error messages from session $_SESSION['plaincart_error'] = array(); } } /************************** Paging Functions ***************************/ function getPagingQuery($sql, $itemPerPage = 10) { if (isset($_GET['page']) && (int)$_GET['page'] > 0) { $page = (int)$_GET['page']; } else { $page = 1; } // start fetching from this row number $offset = ($page - 1) * $itemPerPage; return $sql . " LIMIT $offset, $itemPerPage"; } /* Get the links to navigate between one result page to another. Supply a value for $strGet if the page url already contain some GET values for example if the original page url is like this : http://www.yoongda.com/index.php?c=12 use "c=12" as the value for $strGet. But if the url is like this : http://yoongda.com/index.php then there's no need to set a value for $strGet */ function getPagingLink($sql, $itemPerPage = 10, $strGet = '') { $result = dbQuery($sql); $pagingLink = ''; $totalResults = dbNumRows($result); $totalPages = ceil($totalResults / $itemPerPage); // how many link pages to show $numLinks = 10; // create the paging links only if we have more than one page of results if ($totalPages > 1) { $self = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] ; if (isset($_GET['page']) && (int)$_GET['page'] > 0) { $pageNumber = (int)$_GET['page']; } else { $pageNumber = 1; } // print 'previous' link only if we're not // on page one if ($pageNumber > 1) { $page = $pageNumber - 1; if ($page > 1) { $prev = " <a href=\"$self?page=$page&$strGet/\">[Prev]</a> "; } else { $prev = " <a href=\"$self?$strGet\">[Prev]</a> "; } $first = " <a href=\"$self?$strGet\">[First]</a> "; } else { $prev = ''; // we're on page one, don't show 'previous' link $first = ''; // nor 'first page' link } // print 'next' link only if we're not // on the last page if ($pageNumber < $totalPages) { $page = $pageNumber + 1; $next = " <a href=\"$self?page=$page&$strGet\">[Next]</a> "; $last = " <a href=\"$self?page=$totalPages&$strGet\">[Last]</a> "; } else { $next = ''; // we're on the last page, don't show 'next' link $last = ''; // nor 'last page' link } $start = $pageNumber - ($pageNumber % $numLinks) + 1; $end = $start + $numLinks - 1; $end = min($totalPages, $end); $pagingLink = array(); for($page = $start; $page <= $end; $page++) { if ($page == $pageNumber) { $pagingLink[] = " $page "; // no need to create a link to current page } else { if ($page == 1) { $pagingLink[] = " <a href=\"$self?$strGet\">$page</a> "; } else { $pagingLink[] = " <a href=\"$self?page=$page&$strGet\">$page</a> "; } } } $pagingLink = implode(' | ', $pagingLink); // return the page navigation link $pagingLink = $first . $prev . $pagingLink . $next . $last; } return $pagingLink; } ?> [/code] database1.php <?php require_once 'config1.php'; $dbConn = mysql_connect ($dbHost, $dbUser, $dbPass) or die ('MySQL connect failed. ' . mysql_error()); mysql_select_db($dbName) or die('Cannot select database. ' . mysql_error()); function dbQuery($sql) { $result = mysql_query($sql) or die(mysql_error()); return $result; } function dbAffectedRows() { global $dbConn; return mysql_affected_rows($dbConn); } function dbFetchArray($result, $resultType = MYSQL_NUM) { return mysql_fetch_array($result, $resultType); } function dbFetchAssoc($result) { return mysql_fetch_assoc($result); } function dbFetchRow($result) { return mysql_fetch_row($result); } function dbFreeResult($result) { return mysql_free_result($result); } function dbNumRows($result) { return mysql_num_rows($result); } function dbSelect($dbName) { return mysql_select_db($dbName); } function dbInsertId() { return mysql_insert_id(); } ?> config1.php <?php ini_set('display_errors', 'On'); //ob_start("ob_gzhandler"); error_reporting(E_ALL); // database connection config $dbHost = 'yoongda.db.xxxxx.hostedresource.com'; $dbUser = 'yoongda'; $dbPass = 'xxxxx'; $dbName = 'yoongda'; // setting up the web root and server root for // this shopping cart application $thisFile = str_replace('\\', '/', __FILE__); $docRoot = $_SERVER['DOCUMENT_ROOT']; $webRoot = str_replace(array($docRoot, 'library/config1.php'), '', $thisFile); $srvRoot = str_replace('library/config1.php', '', $thisFile); define('WEB_ROOT', $webRoot); define('SRV_ROOT', $srvRoot); // these are the directories where we will store all // category and product images define('CATEGORY_IMAGE_DIR', 'images/category/'); define('PRODUCT_IMAGE_DIR', 'images/product/'); // some size limitation for the category // and product images // all category image width must not // exceed 75 pixels define('MAX_CATEGORY_IMAGE_WIDTH', 75); // do we need to limit the product image width? // setting this value to 'true' is recommended define('LIMIT_PRODUCT_WIDTH', true); // maximum width for all product image define('MAX_PRODUCT_IMAGE_WIDTH', 300); // the width for product thumbnail define('THUMBNAIL_WIDTH', 75); if (!get_magic_quotes_gpc()) { if (isset($_POST)) { foreach ($_POST as $key => $value) { $_POST[$key] = trim(addslashes($value)); } } if (isset($_GET)) { foreach ($_GET as $key => $value) { $_GET[$key] = trim(addslashes($value)); } } } // since all page will require a database access // and the common library is also used by all // it's logical to load these library here require_once 'database1.php'; require_once 'common1.php'; // get the shop configuration ( name, addres, etc ), all page need it $shopConfig = getShopConfig(); ?> and my search page : search.php <form action="search.php" method="get"> <input name="search" type="text"/> <input name="searchSubmit" type="submit" value="Search"/> </form> <?php // Get the search variable from URL $var = @$_GET['search'] ; $trimmed = trim($var); //trim whitespace from the stored variable // check for an empty string and display a message. if ($trimmed == "") { echo "<p>Please enter a search...</p>"; exit; } // check for a search parameter if (!isset($var)) { echo "<p>We dont seem to have a search parameter!</p>"; exit; } //connect to your database ** EDIT REQUIRED HERE ** include'library/config1.php'; // Build SQL Query $query = "select * from tbl_product where pd_name like \"%$trimmed%\" order by pd_id"; // EDIT HERE and specify your table and field names for the SQL query $numresults=mysql_query($query); $numrows=mysql_num_rows($numresults); // If we have no results, offer a google search as an alternative if ($numrows == 0) { echo "<h4>Results</h4>"; echo "<p>Sorry, your search: "" . $trimmed . "" returned zero results</p>"; // google echo "<p>Please, try again or <a href=\"http://www.google.com/search?search=" . $trimmed . "\" target=\"_blank\" title=\"Look up " . $trimmed . " on Google\">Click here</a> to try the search on google</p>"; } // next determine if s has been passed to script, if not use 0 if (empty($s)) { $s=0; } // display what the person searched for echo "<p>You searched for: "" . $var . ""</p>"; ?> <?php if (!defined('WEB_ROOT')) { exit; } $productsPerRow = 2; $productsPerPage = 4; $sql = "select * from tbl_product where pd_name like \"%$trimmed%\" order by pd_id"; $result = dbQuery(getPagingQuery($sql, $productsPerPage)); $pagingLink = getPagingLink($sql, $productsPerPage); $numProduct = dbNumRows($result); // the product images are arranged in a table. to make sure // each image gets equal space set the cell width here $columnWidth = (int)(100 / $productsPerRow); ?> <table width="100%" border="0" cellspacing="0" cellpadding="20"> <?php if ($numProduct > 0 ) { $i = 0; while ($row = dbFetchAssoc($result)) { extract($row); if ($pd_thumbnail) { $pd_thumbnail = WEB_ROOT . 'images/product/' . $pd_thumbnail; } else { $pd_thumbnail = WEB_ROOT . 'images/no-image-small.png'; } if ($i % $productsPerRow == 0) { echo '<tr>'; } // format how we display the price $pd_price = displayAmount($pd_price); echo "<td width=\"$columnWidth%\" align=\"center\"><a href=\"index.php?c=$cat_id&p=$pd_id" . "\"><img src=\"$pd_thumbnail\" border=\"0\" width=\"70\" height=\"100\" ><br>$pd_name</a><br>Price : $pd_price"; // if the product is no longer in stock, tell the customer if ($pd_qty <= 0) { echo "<br>Out Of Stock"; } echo "</td>\r\n"; if ($i % $productsPerRow == $productsPerRow - 1) { echo '</tr>'; } $i += 1; } if ($i % $productsPerRow > 0) { echo '<td colspan="' . ($productsPerRow - ($i % $productsPerRow)) . '"> </td>'; } } else { ?> <tr><td width="100%" align="center" valign="center">No products in this category</td></tr> <?php } ?> </table> <p align="center"><?php echo $pagingLink; ?></p> I have tried to put 'search = $var' on $strGet in common1.php but it not working. How can I add the search value after http://yoongda.com/search.php?page=2& such as search=a ? Looking for fixing the code Link to comment https://forums.phpfreaks.com/topic/186790-error-when-doing-search-page/ Share on other sites More sharing options...
premiso Posted December 31, 2009 Share Posted December 31, 2009 Your function for pagination takes a parameter for it: Change this: $pagingLink = getPagingLink($sql, $productsPerPage); to: $pagingLink = getPagingLink($sql, $productsPerPage, "search=" . $_GET['search']); And in the future, we really do not need screen shots for most problems. Thanks! Link to comment https://forums.phpfreaks.com/topic/186790-error-when-doing-search-page/#findComment-986457 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.