PDA

View Full Version : load کردن مجدد یک DIV با AJAXدر PHP



computer-mag
سه شنبه 12 فروردین 1393, 15:05 عصر
سلام
من در صفحه ام یک DIV دارم که داخلش یک حلقه Foreach هست که اطلاعاتی را از یک آرایه می خوانه نمایش میده می خام زیر این DIV یک لینک بزارم تحت نام اطلاعات بیشتر که وقتی این لینک رو میزنه بدون اینکه صفحه رفرش بشه DIV من دوباره بارگزاری بشه و اینبار حلقه من به جای اینکه از 0 تا 10 بره از 0 تا 20 بره و اگه باز زد این بار از 0 تا 30 بره تا برسه آخر آرایه و بعد از اینکه دکمه اطلطاعات بیشتر رو زد اسکرول صفحه اتوماتیک بره به اولین سطری که جدید لود شده یه جورایی مثل See more در پاین صفحه خانگی فیس*بوک



<div id="findResualt">
<?php
foreach ($findList as $list) {
?>
<div id="resultView">
<a href="<?php echo $list[10]; ?>" class="titleLink" ><?php echo $list[0] ?></a><br />
</div><br/>
<?php
}
?>
</div>

id1385
سه شنبه 12 فروردین 1393, 16:36 عصر
با سلام
این چیزی که شما می فرمایین لود دیتا با اسکرول داون هستش.
و اینکه شما بخوایین انجام بدین شبیه صفحه بندی اطلاعات منتها با یک لینکه، حالا شما یا بیایید اطلاعات را صفحه بندی کنید و یا اینکه از همون کد جیکوئری استفاده کنید.

دانلود نمونه کد جیکوئری:
دانلود کنید (http://www.sanwebe.com/downloads/52-auto-load-more-data#)

و اگه بخوایین اطلاعت رو صفحه بندی کنید از این نمونه استفاده کنید :

کد کلاس صفحه بندی :


<?php


class pg {
var $php_self;
var $rows_per_page = 10;
var $total_rows = 0;
var $links_per_page = 5;
var $append = "";
var $sql = "";
var $debug = false;
var $conn = false;
var $page = 1;
var $max_pages = 0;
var $offset = 0;
var $linktpl = '<li class="%s"><a data-target="%s" href="javascript:void(0)" class="%s">%s</a></li>';
var $next = "<i class=\"icon-double-angle-left\"></i>";
var $prev = "<i class=\"icon-double-angle-right\"></i>";
var $gLoaded = false;
var $from = 0;
var $to = 0;
var $linked = 0;


function pg($connection, $sql, $rows_per_page = 10, $links_per_page = 5, $current_page = 1, $append = "") {
if (!is_numeric($rows_per_page) || !is_numeric($links_per_page) || !is_numeric($current_page)) {
return "";
}
$this->conn = $connection;
$this->sql = $this->make_safe($sql);
$this->rows_per_page = intval($rows_per_page);
if (intval($links_per_page) > 0) {
$this->links_per_page = (int) $links_per_page;
} else {
$this->links_per_page = 5;
}
$this->append = $append;
$this->php_self = htmlspecialchars($_SERVER['PHP_SELF']);
if (isset($current_page)) {
$this->page = intval($current_page);
}
}


private function make_safe($sql) {
$variable = mysql_real_escape_string(trim($sql));
return $variable;
}


function paginate() {
if (!$this->conn || !is_resource($this->conn)) {
if ($this->debug)
echo "MySQL connection missing<br />";
return false;
}




//Find total number of rows
$all_rs = @mysql_query($this->sql);
mysql_query("SET NAMES 'utf8'");
if (!$all_rs) {
if ($this->debug)
echo "SQL query failed. Check your query.<br /><br />Error Returned: " . mysql_error();
return false;
}
$this->total_rows = mysql_num_rows($all_rs);
@mysql_close($all_rs);


//Return FALSE if no rows found
if ($this->total_rows == 0) {
if ($this->debug)
echo "Query returned zero rows.";
return FALSE;
}


//Max number of pages
$this->max_pages = ceil($this->total_rows / $this->rows_per_page);
if ($this->links_per_page > $this->max_pages) {
$this->links_per_page = $this->max_pages;
}


if ($this->page > $this->max_pages || $this->page <= 0) {
$this->page = 1;
}


//Calculate
$this->offset = $this->rows_per_page * ($this->page - 1);


//Fetch th
$rs = @mysql_query($this->sql . " LIMIT {$this->offset}, {$this->rows_per_page}");
if (!$rs) {
if ($this->debug)
echo "Pagination query failed. Check your query.<br /><br />Error Returned: " . mysql_error();
return false;
}
return $rs;
}


function renderFirst($tag = 'First') {
if ($this->total_rows === 0)
return FALSE;
if ($this->page !== 1) {
return trim(sprintf($this->linktpl, "", "1", "", $tag));
} else {
return trim(sprintf($this->linktpl, "disabled", "", "disabled", $tag));
}
}


function renderLast($tag = 'Last') {
if ($this->total_rows === 0)
return FALSE;


if ($this->page == $this->max_pages) {
return trim(sprintf($this->linktpl, "disabled", "", "disabled", $tag));
} else {
return sprintf($this->linktpl, "", $this->max_pages, "", $tag);
}
}


function renderNext() {
if ($this->total_rows == 0)
return FALSE;
if ($this->page < $this->max_pages) {
return sprintf($this->linktpl, "", ($this->page + 1), "", $this->next);
}
}


function renderPrev() {
if ($this->total_rows == 0)
return FALSE;


if ($this->page > 1) {
return sprintf($this->linktpl, "", ($this->page - 1), "", $this->prev);
}
}


function renderNav() {
if ($this->total_rows == 0)
return FALSE;


$batch = ceil($this->page / $this->links_per_page);
$end = $batch * $this->links_per_page;
if ($end === $this->page) {
//$end = $end + $this->links_per_page - 1;
//$end = $end + ceil($this->links_per_page/2);
}
if ($end > $this->max_pages) {
$end = $this->max_pages;
}


$start = $end - $this->links_per_page + 1;
$links = '';
$this->from = $start;
$this->to = $end;
$this->linked = ($end - $start);
for ($i = $start; $i <= $end; $i ++) {
if ($i == $this->page) {
$links .= sprintf($this->linktpl, "disabled", "", "disabled btn-yellow", $this->asFarsi($i));
} else {
$links .= sprintf($this->linktpl, "", $i, "", $this->asFarsi($i));
}
$this->linked = $i;
}
return $links;
}


function renderFullNav() {
if ($this->total_rows <= $this->rows_per_page) {
return "";
}
return $this->renderFirst("ابتدا") . $this->renderPrev() . $this->renderNav() . $this->renderNext() . $this->renderLast("پايان");
}


private function asFarsi($str, $mod = 'fa', $mf = '٫') {
$num_a = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.');
$key_a = array('۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹', $mf);
return($mod == 'fa') ? str_replace($num_a, $key_a, $str) : str_replace($key_a, $num_a, $str);
}


public function displayInfo() {
if ($this->total_rows > 0) {
$info = "نمایش %s یافته از تعداد %s نتیجه";
$display = sprintf($info, $this->offset, $this->total_rows );
return $this->asFarsi($display);
} else {
return;
}
}


}


?>




استفاده :


// pg class instant
$pager = new pg($conn, $StrSql, $ShowRows, $navBarbtnCount, $CurrentPage);
$rs = $pager->paginate();


// loop
$navbar = $pager->renderFullNav();
$infoBar = $pager->displayInfo();




موفق باشید

computer-mag
سه شنبه 12 فروردین 1393, 16:46 عصر
این خوب بود ولی من میخام ساده تر انجامش بدم میخام وقتی لینک و میزنه تعداد بیشتری رو لود کنه همین یعنی DIV رفرش بشه و به حلقه پارامتر های جدید ارسال بشه

id1385
سه شنبه 12 فروردین 1393, 16:52 عصر
شما در هر صورت بهتر است از جیکوئری استفاده کنید و با کمی خلاقیت به نتیجه دلخواهتون برسید.

کد ارسال اطلاعات با جیکوئری:

function post_data(Arr) {
$.post(url, {data: Arr}, function(Response) {
if (Response && Response !== "")
{
var json = $.parseJSON(Response);
tbody.empty().html(json[2]);
$("div.data").append(json[4]);
}
}); // post
}


فانکشن بالا رو در فایل خود قرار دهید، برای ارسال باید آخرین id رو داشته باشید اون رو به روشهای مختلف میتونید در صفحه داشته باشید و بهش دسترسی داشته باشید ولی یادتون نره که اونو حتماً کد کنید تا امنیت رو هم مد نظر داشته باشید.
ب فانکشن بالا موقع کلیک اطلاعات رو بفرستید و بصورت json برگردونید و اطلاعات مورد نظرتون رو هم آخر اطلاعات قبلی append کنید.

موفق باشید

computer-mag
سه شنبه 12 فروردین 1393, 17:11 عصر
مرسی. فقط یه نکته چجوری میتونم با یه لینک که روش کلیک کنه این فانکشن رو صدا بزنم؟

id1385
سه شنبه 12 فروردین 1393, 17:37 عصر
$("button#tSave").bind("click", function() {
// create array from inputs
var tObjs = new Array();
tObjs[tObjs.length] = $("#_name").val();
tObjs[tObjs.length] = $("#_desc").val();
tObjs[tObjs.length] = $("#_activ").is(':checked');
tObjs[tObjs.length] = $("#_zarib").val();
tObjs[tObjs.length] = $("#_min").val();
tObjs[tObjs.length] = $("#_max").val();
tObjs[tObjs.length] = dataType;
tObjs[tObjs.length] = token;
active_proccess = true;
post_data(tObjs);


});