PDA

View Full Version : سوال: نیاز به یک پاسخ ساده



AlirezaGSD
پنج شنبه 07 شهریور 1387, 00:51 صبح
سلام و درود

فایلی با نام index.php با محتویات زیر در دسترس است :

<?
php if( isset($_GET['q']) ) { include('includes/search_code.php'); } ?>

فایلی هم با نام search_code.php برای جستجو داخل دیتابیس با محتویات زیر :



<?php

require_once('includes/config.php');
require_once('includes/Paginator.class.php');



$startTime = microtime(true);

//Connecting, selecting database
$db_link = mysql_connect(DB_HOST, DB_USER, DB_PASS);
if (!$db_link) {
die("Could not connect: " . mysql_error());
}
mysql_select_db(DB_NAME) or die("Could not select database");

if (strlen($_GET['q']) < MIN_QUERY_LENGTH || $_GET['q'] == "Search...") {
$error_msg =
"<p>".
"ERROR: There was a problem processing your request<br/>".
"<ul><li>1. Query IS SHort</li><li>2. You tried divert client validation</li></ul>".
"</p>";

die($error_msg);
}

$queryString = $_GET['q'];
$queryString = strtolower(trim($queryString));
$queryString = mysql_real_escape_string($queryString);
$queryString = htmlentities($queryString);

$PAGER_currentPage = (isset($_GET['pg'] )) ? $_GET['pg'] : 1;

$queryCount = "SELECT count(furl) as count
FROM logs
WHERE filename LIKE '%" .$queryString. "%'";

$rs = mysql_query($queryCount);
$row = mysql_fetch_assoc($rs);


$PAGER_totalHits = $row['count'];
//echo $PAGER_totalHits;
$PAGER_lastPageNumber = ceil($PAGER_totalHits / PG_ITEMS_PER_PAGE);

//Set lastPageNumber if there aren't any results
if($PAGER_lastPageNumber == 0) {
$PAGER_lastPageNumber = 1;
$PAGER_currentPage = 1;
}
//Prevent out of range page numbers supplied through the URL
else
if($PAGER_currentPage > $PAGER_lastPageNumber) {
$PAGER_currentPage = $PAGER_lastPageNumber;
}
else
if($PAGER_currentPage <= 0){
$PAGER_currentPage = 1;
}
$offset = ($PAGER_currentPage - 1) * PG_ITEMS_PER_PAGE;

//Display Paginator at the top
if( DISPLAY_PAGER == true) {
if($PAGER_totalHits > PG_ITEMS_PER_PAGE){
Paginator::paginate( $PAGER_currentPage,
$PAGER_totalHits,
PG_ITEMS_PER_PAGE,
"index.php?q=".$_GET['q']."&pg=");
}
}

$query =
"SELECT filename, furl, filesize
FROM logs
WHERE filename LIKE '%" .$queryString. "%'
ORDER BY fdate
LIMIT " .$offset. ", " .PG_ITEMS_PER_PAGE;

// Performing SQL query
$rs = mysql_query($query);

echo "<table cellpadding='0px' cellspacing='0px'>";
echo "<tr class='header-row'><td>Picture Name</td><td>Total</td></tr>";

$rowCounter = 0;
$searchQuery = $_GET['q'];
while($row = mysql_fetch_assoc($rs)) {
$fileName = substr($row['filename'], 0, 100);
$fileName = str_ireplace($searchQuery, "<span class='search-marker'>{$searchQuery}</span>", $fileName );

echo "<tr class='";
print( ($rowCounter++ % 2 == 0) ? "odd-row'>": "even-row'>");
echo "<td style='width: 730px;'>";
echo "<span class='label'>File: </span>";
echo $fileName;
echo "<br />";
echo "<span class='label'>URL: </span>";
echo "<a href='" .$row['furl']. "' title='" .$row['furl']. "'>" .substr($row['furl'], 0, 100). "</a>";
echo "</td>";
echo "<td style='width: 50px;'>" .round(($row['filesize']/1048576), 2). "</td>";
echo "</tr>";
}
echo "</table>";

//Display Paginator at the bottom
if( DISPLAY_PAGER == true) {
if($PAGER_totalHits > PG_ITEMS_PER_PAGE){
Paginator::paginate( $PAGER_currentPage,
$PAGER_totalHits,
PG_ITEMS_PER_PAGE,
"index.php?q=".$_GET['q']."&pg=");
}
}

//Closing connection
mysql_close($db_link);

$endTime = microtime(true);

echo "<div id='search-timer'>";
printf ("Search took %f seconds", $endTime - $startTime);
echo "</div>";

?>

همان طور که مشاهده میکنید برنامه برای یک جستجو نوشته شده که اطلاعات مربوط به دیتابیس را هم از فایل config.php که محتوی موارد زیر است میگیرد :


<?php

// DB Settings
define("DB_HOST", "localhost");
define("DB_NAME", "My DB_NAME");
define("DB_USER", "My DB_USER");
define("DB_PASS", "My DB_PASS");

// Pager Settings
define("DISPLAY_PAGER", true);
define("PG_ITEMS_PER_PAGE", 20);

// Search Restrictions
define("MIN_QUERY_LENGTH", 8);

?>


اما سوال:

قصد دارم تا با تغییر دادن برنامه طوری که شما راهنمایی بفرمایید امکان جستجو و همان پروسه بالا داخل یک دیتابیس دیگر هم اضافه کنم . به عبارت دیگر برنامه داخل 2 دیتابیس مختلف با دو نام و USEE جدا جستجو کند اما نتایج را به صورت یکجا نشان بدهد. بنده هیچ اطلاعی از برنامه نویسی PHP ندارم و اگر لطف کنید و بگویید که کد مورد نیاز چه چیزی هست و باید به کجا اضافه بشود واقعا" لطف خیلی خیلی بزرگی کرده اید.

AlirezaGSD
جمعه 08 شهریور 1387, 18:30 عصر
دوستان واقعا" هیچ کسی نمیدونه چطور میشه داخل 2 دیتابیس جستجو کرد؟ من برنامه نوسی نیستم اما فکر نمیکنم پاسخ به این سوال خیلی سخت باشه.

Lagon666
جمعه 08 شهریور 1387, 20:11 عصر
فکر کنم میشه اطلاعات رو از یه بانک بخونی بعد بانک رو Close کنی و بعد به بانک بعدی متصل بشی.

PHP: mysql_close - Manual (http://www.php.net/mysql_close)

PHP mysql_close() Function (http://www.w3schools.com/PHP/func_mysql_close.asp)

AlirezaGSD
شنبه 09 شهریور 1387, 22:22 عصر
ممنون از پاسخ اما همان طور که داخل فایل search_code.php هم میبینید این کار انجام شده و کانکشن در انتها بسته میشود که من تصمیم گرفتم عینا" سورس را یکبار دیگر کپی کنم در زیر هم که مثلا" دفعه بعدی اطلاعات را از config2.php بخواند بشود اما این کار شدنی نیست و دوباره داخل همان دیتا بیس اول جستجو میکند.

AlirezaGSD
دوشنبه 18 شهریور 1387, 00:00 صبح
عزیزان خواهش میکنم یکی کمک کنه.

maysamscript
دوشنبه 18 شهریور 1387, 10:32 صبح
از جایی که به دیتابیس متصل میشوید تا پایان حلقه while مربوط میشود به در آورد رکورد ها و چاپ آنها. شما میتونید اون قسمت هارو برای یه دیتابس دیگه هم انجام بدید و لی برای دیتابیس اول از echo استفاده نکنید بلکه اطلاعات را داخل یه متغیر بریزید بعد هروقت اطلاعات دیتابیس دوم استخراج شد اون متغیر رو در جای مناسب echo کنید. متاًسفانه من امتحان دارم نمیتونم کد رو براتون بزارم. البته این راه اصولیش نیست ولی این ساده ترین راهشه

AlirezaGSD
دوشنبه 18 شهریور 1387, 23:55 عصر
یک دنیا ممنون از راهنمایی که کردید . من به خوبی فهمیده ام که چه کاری باید کرد اما ای دریغ از آنکه از برنامه نویسی php هیچ چیزی نمیدانم . کمکتان کیفیت یک سیستم پژوهشی را چندین برابر میکند واقعا" اگر کد آن را هم در اختیار بنده بگذارید با کمکتان یک عبادت بزرگ نیز کرده اید.
همچنین خواهش میکنم اگر دوستی با توجه به توضیحات میتواند سورس را ارایه کند لطف این عزیز را تکمیل کند.

maysamscript
سه شنبه 19 شهریور 1387, 16:21 عصر
<?php

require_once('includes/config.php');
require_once('includes/Paginator.class.php');



$startTime = microtime(true);

//---------------------------------------------------------------------------------------------------
$db_link = mysql_connect(/*DB_HOST*/, /*DB_USER*/, /*DB_PASS*/);
if (!$db_link) {
die("Could not connect: " . mysql_error());
}
mysql_select_db(/*DB_NAME*/) or die("Could not select database");

if (strlen($_GET['q']) < MIN_QUERY_LENGTH || $_GET['q'] == "Search...") {
$error_msg =
"<p>".
"ERROR: There was a problem processing your request<br/>".
"<ul><li>1. Query IS SHort</li><li>2. You tried divert client validation</li></ul>".
"</p>";

die($error_msg);
}

$queryString = $_GET['q'];
$queryString = strtolower(trim($queryString));
$queryString = mysql_real_escape_string($queryString);
$queryString = htmlentities($queryString);

$PAGER_currentPage = (isset($_GET['pg'] )) ? $_GET['pg'] : 1;

$queryCount = "SELECT count(furl) as count
FROM logs
WHERE filename LIKE '%" .$queryString. "%'";

$rs = mysql_query($queryCount);
$row = mysql_fetch_assoc($rs);


$PAGER_totalHits = $row['count'];
//echo $PAGER_totalHits;
$PAGER_lastPageNumber = ceil($PAGER_totalHits / PG_ITEMS_PER_PAGE);

//Set lastPageNumber if there aren't any results
if($PAGER_lastPageNumber == 0) {
$PAGER_lastPageNumber = 1;
$PAGER_currentPage = 1;
}
//Prevent out of range page numbers supplied through the URL
else
if($PAGER_currentPage > $PAGER_lastPageNumber) {
$PAGER_currentPage = $PAGER_lastPageNumber;
}
else
if($PAGER_currentPage <= 0){
$PAGER_currentPage = 1;
}
$offset = ($PAGER_currentPage - 1) * PG_ITEMS_PER_PAGE;

//Display Paginator at the top
if( DISPLAY_PAGER == true) {
if($PAGER_totalHits > PG_ITEMS_PER_PAGE){
Paginator::paginate( $PAGER_currentPage,
$PAGER_totalHits,
PG_ITEMS_PER_PAGE,
"index.php?q=".$_GET['q']."&pg=");
}
}

$query =
"SELECT filename, furl, filesize
FROM logs
WHERE filename LIKE '%" .$queryString. "%'
ORDER BY fdate
LIMIT " .$offset. ", " .PG_ITEMS_PER_PAGE;

// Performing SQL query
$rs = mysql_query($query);
$R="";
$rowCounter = 0;
$searchQuery = $_GET['q'];
while($row = mysql_fetch_assoc($rs)) {
$fileName = substr($row['filename'], 0, 100);
$fileName = str_ireplace($searchQuery, "<span class='search-marker'>{$searchQuery}</span>", $fileName );

$R.= "<tr class='";
$R.= ($rowCounter++ % 2 == 0) ? "odd-row'>": "even-row'>";
$R.= "<td style='width: 730px;'>";
$R.= "<span class='label'>File: </span>";
$R.= $fileName;
$R.= "<br />";
$R.= "<span class='label'>URL: </span>";
$R.= "<a href='" .$row['furl']. "' title='" .$row['furl']. "'>" .substr($row['furl'], 0, 100). "</a>";
$R.= "</td>";
$R.= "<td style='width: 50px;'>" .round(($row['filesize']/1048576), 2). "</td>";
$R.= "</tr>";
}
mysql_close();
//---------------------------------------------------------------------------------------------------

//Connecting, selecting database
$db_link = mysql_connect(DB_HOST, DB_USER, DB_PASS);
if (!$db_link) {
die("Could not connect: " . mysql_error());
}
mysql_select_db(DB_NAME) or die("Could not select database");

if (strlen($_GET['q']) < MIN_QUERY_LENGTH || $_GET['q'] == "Search...") {
$error_msg =
"<p>".
"ERROR: There was a problem processing your request<br/>".
"<ul><li>1. Query IS SHort</li><li>2. You tried divert client validation</li></ul>".
"</p>";

die($error_msg);
}

$queryString = $_GET['q'];
$queryString = strtolower(trim($queryString));
$queryString = mysql_real_escape_string($queryString);
$queryString = htmlentities($queryString);

$PAGER_currentPage = (isset($_GET['pg'] )) ? $_GET['pg'] : 1;

$queryCount = "SELECT count(furl) as count
FROM logs
WHERE filename LIKE '%" .$queryString. "%'";

$rs = mysql_query($queryCount);
$row = mysql_fetch_assoc($rs);


$PAGER_totalHits = $row['count'];
//echo $PAGER_totalHits;
$PAGER_lastPageNumber = ceil($PAGER_totalHits / PG_ITEMS_PER_PAGE);

//Set lastPageNumber if there aren't any results
if($PAGER_lastPageNumber == 0) {
$PAGER_lastPageNumber = 1;
$PAGER_currentPage = 1;
}
//Prevent out of range page numbers supplied through the URL
else
if($PAGER_currentPage > $PAGER_lastPageNumber) {
$PAGER_currentPage = $PAGER_lastPageNumber;
}
else
if($PAGER_currentPage <= 0){
$PAGER_currentPage = 1;
}
$offset = ($PAGER_currentPage - 1) * PG_ITEMS_PER_PAGE;

//Display Paginator at the top
if( DISPLAY_PAGER == true) {
if($PAGER_totalHits > PG_ITEMS_PER_PAGE){
Paginator::paginate( $PAGER_currentPage,
$PAGER_totalHits,
PG_ITEMS_PER_PAGE,
"index.php?q=".$_GET['q']."&pg=");
}
}

$query =
"SELECT filename, furl, filesize
FROM logs
WHERE filename LIKE '%" .$queryString. "%'
ORDER BY fdate
LIMIT " .$offset. ", " .PG_ITEMS_PER_PAGE;

// Performing SQL query
$rs = mysql_query($query);

echo "<table cellpadding='0px' cellspacing='0px'>";
echo "<tr class='header-row'><td>Picture Name</td><td>Total</td></tr>";

$rowCounter = 0;
$searchQuery = $_GET['q'];
while($row = mysql_fetch_assoc($rs)) {
$fileName = substr($row['filename'], 0, 100);
$fileName = str_ireplace($searchQuery, "<span class='search-marker'>{$searchQuery}</span>", $fileName );

echo "<tr class='";
print( ($rowCounter++ % 2 == 0) ? "odd-row'>": "even-row'>");
echo "<td style='width: 730px;'>";
echo "<span class='label'>File: </span>";
echo $fileName;
echo "<br />";
echo "<span class='label'>URL: </span>";
echo "<a href='" .$row['furl']. "' title='" .$row['furl']. "'>" .substr($row['furl'], 0, 100). "</a>";
echo "</td>";
echo "<td style='width: 50px;'>" .round(($row['filesize']/1048576), 2). "</td>";
echo "</tr>";
}
echo $R."</table>";

//Display Paginator at the bottom
if( DISPLAY_PAGER == true) {
if($PAGER_totalHits > PG_ITEMS_PER_PAGE){
Paginator::paginate( $PAGER_currentPage,
$PAGER_totalHits,
PG_ITEMS_PER_PAGE,
"index.php?q=".$_GET['q']."&pg=");
}
}

//Closing connection
mysql_close($db_link);

$endTime = microtime(true);

echo "<div id='search-timer'>";
printf ("Search took %f seconds", $endTime - $startTime);
echo "</div>";

?>
التماس دعا...

AlirezaGSD
جمعه 22 شهریور 1387, 18:31 عصر
خیلی لطف بزرگی کردید. ببخشید که تا حالا نتوانستم وارد انجمن بشوم و آن را پاسخ شما تازه دیدم. الان کدی که مرحمت نمودید را داخل سیستم قرار داده و نتیجه را اعلام میکنم. با تشکر مجدد.