PDA

View Full Version : سوال: ايجاد دكمه هاي 1234 براي ادامه مطلب



ravand
جمعه 04 فروردین 1391, 08:48 صبح
سلام
من يه كدي نوشتم كه مطالب داخل بانك اطلاعاتيم رو چاپ ميكنه توي يه صفحه 25 تا لينك رو چاپ ميكنه . بعد چون تعداد لينك ها زياده و از 500 تا بيشتره و توي يه صفحه نمي خوام جاش بدم ميخوام دكمه ها يا لينك هاي 1234 مثل همين تاپيك هاي سايت برنامه نويس براش بسازم. يه نمونه نوشتم ولي درست كار نميكنه ممنون ميشم راهنماييم كنيد.

<!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></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
A{ text-decoration: none; }
#matlab{
width:477px;
direction:rtl;
text-align:center;
border-radius:3px;
padding:2px 0px;
border:1px #CCCCCC solid;
font-size:20px;
border:1px silver solid;
padding:10px 15px;
min-height:50px;
background-color:#F7F7F7;
shadow:1px 1px #ccc;
margin-top:10px;
border-radius:5px;
behavior: url('PIE.htc');
}
#matlab:hover
{
background-color:#EEEEEE;
}
</style>
</head>
<body>
<div align="center">
<div id="matlab">
<?php
$servername="localhost";
$dbname="search";
$user="root";
$pass="";
$dblink=mysql_connect($servername,$user,$pass)or die(mysql_error());
mysql_select_db($dbname,$dblink)or die(mysql_error());
mysql_query("SET CHARACTER SET utf8",$dblink);
$dbresult=mysql_query("SELECT * FROM posts ORDER BY `id` DESC LIMIT 5")or die(mysql_error());
//barnamenevisi.blogsky.com
while($record=mysql_fetch_assoc($dbresult))
{
echo ('<a href="id.php?id='.$record['id'].'"> '.$record['subject'].'</a><br>');
}
mysql_close($dblink);
?>
<?php
$page=(integer) $_GET['page'];
if($page<=0) $page=1;
$per_page=2;
$start = ($page-1)*$per_page;
mysql_Connect('localhost','root','');
mysql_select_db('search') or die(mysql_error());
mysql_query("SET NAMES 'UTF8'");
mysql_query("SELECT * FROM `posts` ORDER BY ID DESC Limit $start,$per_page") or die(mysql_error());
$Q=mysql_query("SELECT id FROM `posts`") or die(mysql_error());
$pages_link=ceil(mysql_num_rows($Q)/$per_page);
for($i=1;$i<$pages_link;$i++){
echo '<a href="?page.php='.$i.'">&nbsp;'.$i.'&nbsp;</a>';
}
?>
</div>
</div>
</body>
</html>

binyaft
جمعه 04 فروردین 1391, 10:17 صبح
به نظر من همین قسمت کد کافیه :

<?php
$page=(integer) $_GET['page'];
if($page<=0) $page=1;
$per_page=2;
$start = ($page-1)*$per_page;
mysql_Connect('localhost','root','');
mysql_select_db('search') or die(mysql_error());
mysql_query("SET NAMES 'UTF8'");
mysql_query("SELECT * FROM `posts` ORDER BY ID DESC Limit $start,$per_page") or die(mysql_error());
$Q=mysql_query("SELECT id FROM `posts`") or die(mysql_error());
$pages_link=ceil(mysql_num_rows($Q)/$per_page);
for($i=1;$i<=$pages_link;$i++){
echo '<a href="?page.php='.$i.'">&nbsp;'.$i.'&nbsp;</a>';
}
?>
فقط شما اطلاعات mysql_query دوم رو به کار بگیرید برای نمایش لینکهای صفحه مورد نظر ، همین
موفق باشید .

ravand
جمعه 04 فروردین 1391, 11:35 صبح
متوجه منظورتون نميشم اگه من فقط بخوام همين كدها رو بذارم فقط يه مشتي عدد 12345 چاپ ميشه و لينكي در صفحه وجود نداره.
نميدونم منظورتون چيه؟
ميشه بيشتر توضيح بديد؟

MMSHFE
جمعه 04 فروردین 1391, 11:49 صبح
دوست عزیز، تگ a مگه برای ایجاد لینک نیست؟ خوب توسط کدی که گذاشته شده، برای شما لینکهایی با متن 1 و 2 و 3 و 4 و... ساخته میشه که با کلیک روی هرکدوم، به صفحه مربوطه از مطالب، منتقل میشین.

ravand
جمعه 04 فروردین 1391, 11:49 صبح
فكر ميكنم من بايد توي صفحه ي page.php يه چيزي بذارم ولي نميدونم چي؟

ravand
جمعه 04 فروردین 1391, 11:51 صبح
اين تگ a يه سري لينك ايجاد ميكنه و وقتي من روي اون لينك كليك ميكنم هيچ صفحه اي باز نميشه. و باز همون صفحه ي قبلي باز ميشه انگار كه همون صفحه رو رفرش كرده باشم.

MMSHFE
جمعه 04 فروردین 1391, 11:53 صبح
نه دوست عزیز، page.php? رو به page? تغییر بدین تا مشکل رفع بشه. موفق باشید.

ravand
جمعه 04 فروردین 1391, 11:57 صبح
مهندس وقتي من اين كار رو ميكنم يه لينك اين شكلي براي هر لينك ايجاد ميشه مثلا براي لينك 4 اين شكلي ميشه :

http://pachenar.ir/page?id=4
و وقتي روش كليك ميكنم هيچي نمياد.

ravand
جمعه 04 فروردین 1391, 12:07 عصر
اين كل كدهاي منه:
84578

MMSHFE
جمعه 04 فروردین 1391, 12:08 عصر
من این کد رو دارم میگم ها :


<?php
$page=(integer) $_GET['page'];
if($page<=0) $page=1;
$per_page=2;
$start = ($page-1)*$per_page;
mysql_Connect('localhost','root','');
mysql_select_db('search') or die(mysql_error());
mysql_query("SET NAMES 'UTF8'");
mysql_query("SELECT * FROM `posts` ORDER BY ID DESC Limit $start,$per_page") or die(mysql_error());
$Q=mysql_query("SELECT id FROM `posts`") or die(mysql_error());
$pages_link=ceil(mysql_num_rows($Q)/$per_page);
for($i=1;$i<=$pages_link;$i++){
echo '<a href="?page='.$i.'">&nbsp;'.$i.'&nbsp;</a>';
}
?>

ravand
جمعه 04 فروردین 1391, 12:10 عصر
خب مهندس منم همينو تغيير دادم همونطوري كه گفتيد من به اين شكلش كردم:

echo '<a href="?page='.$i.'">&nbsp;'.$i.'&nbsp;</a>';

ccmccm
جمعه 04 فروردین 1391, 12:45 عصر
با سلام جناب ravand (http://barnamenevis.org/member.php?147061-ravand)
من فکر کنم متوجه شدم می خواین چی کار کنید می خواید وقتی روی ادامه مطلب کلیک کردن برن به یک صفحه ای که کل مطلب رو بخونن ، و همچنین در صفحه اول چون تعداد مطالب زیاد می شه چند تا مطلب آخر رو نمایش بده و بقیه رو در صفحه های دیگه مثلاً آخر صفحه بنویسه 1 - 2 - 3 - 4
درسته ؟ اگره اینطوره من از یک روش استفاده می کنم که نمی دونم درسته (از لحاظ استاندارد) یانه ولی جواب بهت میده
اول اینکه به بانک اطلاعاتیت وصل می شی بعد


function showpost($table,$nums)
{
$query="select *from $table";
$result=mysql_query($query);
$num=mysql_num_rows($result);
$num--;
for($post=0;$post<$nums; $post++)
{
$ID=mysql_result($result,$num,"ID");
$date=mysql_result($result,$num,"date");
$text=mysql_result($result,$num,"text");
$tpost=htmlspecialchars_decode(mysql_result($resul t,$num,"post"));
$more=mysql_result($result,$num,"more");
$by=mysql_result($result,$num,"who");
$num--;

این تابع دوتا پارامتر داره اول نام جدول و دوم تعداد مطالب رو که می خوای برگردونی تو صفحه اصلی ولی توجه داشته باش و با توجه به نام گذاری بانک اطلاعاتت پارامتر ها رو تغییر بده و با هر نظمی که می خوای بازیابیشون کند (ازلحاظ نمایش)
این از برگردوندن تعداد مطلب درخواه در صفحه اول که فکر کنم خودت هم مشکلی نداشتی.
حالا لینک ادامه مطالب
از کد زیر استفاده کن

echo '<a href="?id=',$id,'">more</a>';
حالا برای اینکه وقتی روی لینک کلیک شد کل مطلب نمایش داده بشه ی
مثلاً وقتی روی لینک کلیک می شه آدرس بالای سایتت می شه page.php?id=1
خوب حالا با استفاده از
$_GET['id']
می تونی به بانک اطلاعاتت وصل بشی و بگی id هر مطلبی که با
$_GET['id'] برابر است ، تمام محتویاتش نمایش داده بشه
برای اینکه بتونی در انتهای صفحه ی مورد نظر هم 1 -2 - 4 -5 داشته باشی می تونی تعداد کل مطالبت رو بر تعدادی که می خوای نمایش داده بشه رو تقسیم کنی و از یک تا اون عدد لینک بزاری البته یادت باشه تقسیمت باید جز صحیح رو لحاظ کنی
حالا روی هر عدد 1 - 2- 3 یه لینک به صورت زیر بزار

echo '<a href="?page=',$page,'">1</a>';خیلی سریع نوشتم ببخشین سوالی داشتید در خدمت هستم
با عرض پوزش از استاتید به خاطر این روش بسیار ساده
ولی به قول استیو جابز سادگی نهایت پیچیدگی است:لبخندساده:
امید وارم کامل باشه

ravand
جمعه 04 فروردین 1391, 12:52 عصر
متشكرم دوست عزيز .

حالا روی هر عدد 1 - 2- 3 یه لینک به صورت زیر بزار
کد HTML:
echo '<a href="?page=',$page,'">1</a>
ببينيد من الان شايد 500 تا صفحه داشته باشم خودم دقيق نميدونم تعداش چقدره ولي هر باري من نميتونم بيام براي هر صفحه اي يك لينك بسازم. بايد خودش به طور خودكار ساخته بشه. فكر كنم همون كد قبلي برام بهتر باشه . فكر ميكنم يه جايي رو دارم اشتباه ميكنم.
متشكرم

ccmccm
جمعه 04 فروردین 1391, 13:20 عصر
خوب دوست عزیز پس تو تعداد صفحه مشکل داری
تعداد کل مطالبت رو می تونی از تو بانک اطلاعاتی بدست بیاری مثلاً شما 500 تا مطلب داری که می خوای توی هر صفحه 10 تا مطلب نمایش داده بشه خوب پس شما باید تعداد کل مطالبت رو بر 10 تقسیم کنی ( البته نکته ی مهم اینه که اگه شد 501 مطلب باید جز صحیح یا همون براکتش رو در نظر بگیری و می تونی از تابع round استفاده کنی)
بعد با یه حلقه برای هر صفحه یک لینک بزاری
خوب مثلا از کد زیر استفاده می کنی
با فرض اینکه عدد تقسیم 500 بر 10 را در متغییر tadad بریزیم کد می شه



for($i=0;$i<$tadad;$i++)
{
echo '<a href="?page=',$i,'">'.$i.'</a>';
}


خوب حالا وقتی روی یکی از این عدد های کلیک بشه مثلا صفحه ی 20 آدرس بالای سایتت می شه

http://url/page.php?page=20

حالا از اینجا یه نکته می مونه اونم اینکه شما در صفحه 20 هستید و 200 تا مطلب جدید نباید نمایش داده بشن و 290 تا مطلب قدیمی تر هم نباید نمایش داده بشن (با فرض اینکه در هر صفحه 10 مطلب قرار داده باشی)
حالا برای این کار شما باید



$num=$_GET['page']*10+1;
for($post=10;$post<$nums; $post++)
{
$ID=mysql_result($result,$num,"ID");
$date=mysql_result($result,$num,"date");
$text=mysql_result($result,$num,"text");
$tpost=htmlspecialchars_decode(mysql_result($resul t,$num,"post"));
$more=mysql_result($result,$num,"more");
$by=mysql_result($result,$num,"who");
$num++;
}}


به این صورت که تعداد مطالب در هر صفحه در شماره صفحه ضرب می شه و بعلاوه یک می شه در نتیجه مطلب شماره 201 نمایش داده می شه و حالا می خوایم 10 تا مطلب نمایش داده بشه پس متغییر post رو برابر 10 قرار می دهیم در نتیجه حلقه 10 بار تکرار می شه و 10 تا از مطالب از 201 تا 211(توجه داشته باش که در mysql همون طور که می دونی شماره دریف از 0 شروع می شه در نتیجه شما در اصل داری مطالب رو تا 210 نمایش می ده) یعنی 10 ردیف از بانک اطلاعاتی بازیابی می شود
امیدوارم کامل باشه
سوالی بود در خدمت هستم:لبخندساده:

binyaft
جمعه 04 فروردین 1391, 16:26 عصر
شما این کد رو بذار داخل صفحه ات ، جواب میده

<?php
$page=(integer) $_GET['page'];
if($page<=0) $page=1;
$per_page=2;
$start = ($page-1)*$per_page;
mysql_Connect('localhost','root','');
mysql_select_db('search') or die(mysql_error());
mysql_query("SET NAMES 'UTF8'");
$Q0=mysql_query("SELECT * FROM `posts` ORDER BY ID DESC Limit $start,$per_page") or die(mysql_error());

while($row=mysql_fetch_assoc($Q0)){
print_r($row);
}



$Q=mysql_query("SELECT id FROM `posts`") or die(mysql_error());
$pages_link=ceil(mysql_num_rows($Q)/$per_page);
for($i=1;$i<=$pages_link;$i++){
echo '<a href="page.php?page='.$i.'">&nbsp;'.$i.'&nbsp;</a>';
}
?>

masato
شنبه 05 فروردین 1391, 01:15 صبح
با سلام
من هر چی در تاپیک ها مربوط به چند صفحه ای کردن اطلاعات نگاه کردم،دیدم همه دارن از یه جدول کل اطلاعاتو چند صفحه ای میکنند.
حالا سوال من اینه که اگه ما بخوایم مثلا اون رکورد های که tapik_id مساوی با 2 رو چند ... کنیم، چی کار باید کرد؟:متفکر:
با تشکر

binyaft
شنبه 05 فروردین 1391, 09:11 صبح
topik_id=2 رو چند چی کنیم!؟
بیشتر توضیح بده ...

masato
شنبه 05 فروردین 1391, 10:11 صبح
منظورم چند صفحه ای بود خسته بودم اینجوری نوشتم:گیج:

binyaft
شنبه 05 فروردین 1391, 16:09 عصر
خسته نباشی :لبخند:

<?php
$page=(integer) $_GET['page'];
if($page<=0) $page=1;
$per_page=2;
$start = ($page-1)*$per_page;
mysql_Connect('localhost','root','');
mysql_select_db('search') or die(mysql_error());
mysql_query("SET NAMES 'UTF8'");
$Q0=mysql_query("SELECT * FROM `posts` WHERE `tapik`='2' ORDER BY ID DESC Limit $start,$per_page") or die(mysql_error());

while($row=mysql_fetch_assoc($Q0)){
print_r($row);
}



$Q=mysql_query("SELECT id FROM `posts` WHERE `tapik`='2'") or die(mysql_error());
$pages_link=ceil(mysql_num_rows($Q)/$per_page);
for($i=1;$i<=$pages_link;$i++){
echo '<a href="page.php?page='.$i.'">&nbsp;'.$i.'&nbsp;</a>';
}
?>


همونطور که تو کد بالا مشخص هست ، برای دو تا کوئری باید شرط tapik=2 نوشته بشه ، باقیش تفاوتی با مثال اولی نداره ....

masato
شنبه 05 فروردین 1391, 17:31 عصر
تشکر دوست عزیز
اما یه مشکلی هست
وقتی توی 10 تا رکورد بعدی شرایط شرط نباشه چیزی برنمیگردونه؟
راه کاری برای این قضیه وجو داره ؟:متفکر:
:گیج::گیج:

binyaft
شنبه 05 فروردین 1391, 22:57 عصر
باس هیچی نیاد دیگه :|

ravand
پنج شنبه 07 اردیبهشت 1391, 21:32 عصر
من ميخوام اين روش رو مثل اين دكمه هاي 1234 اين تاپيك انجام بدم .لطفا راهنمايي كنيد.

ravand
دوشنبه 25 اردیبهشت 1391, 19:10 عصر
من تونستم اين كد رو كاريش كنم كه به جاي لينك دكمه داشته باشه .
ولي يه مشكلي داره اونم اينكه براي هر صفحه يه دكمه ميسازه و من ميخوام مثل اين تاپيك هاي برنامه نويس از مثلا 20 صفحه فقط سه دكمه رو نشون بده. نه 20 تا دكمه.
اين كدهاي منه:
87075
و اينم تصويري از آنچه كه من ساختم:
87076
متشكرم.