PDA

View Full Version : نحوه نشان دادن رکورد قبلی و بعدی



hentjanson
دوشنبه 14 آبان 1386, 09:10 صبح
سلام من یک سایت خبری طراحی کردم می خوام مو قعی که کاربر داره یک خبر رو می خونه بتونه به خبر بعد از اون و قبل از اون بره مثل سایتهای خبری .
به این شکل که دو تا لینک بذارم خبر بعدی و خبر قبلی
لطفا راهنماییم کنید :قلب:

Bahram0110
دوشنبه 14 آبان 1386, 09:45 صبح
خبرتون حتما یه فیلد ID داره :متفکر:
یکی از ID کم کن یکی هم بهش اضافه کن

hentjanson
دوشنبه 14 آبان 1386, 10:52 صبح
میشه یک مثال یزنید متوجه نشدم اینکه چطور اضافه و نمایش بدم . مرسی

mrrajabi
دوشنبه 14 آبان 1386, 16:07 عصر
یکی از ID کم کن یکی هم بهش اضافه کن
این روش به مشکل میخوره.
چون شاید بعضی از خبرها پاک شده باشن و اختلاف آید دو خبر متوالی در جدول بانک بیش از یک باشه.
به نظر من هنگام نمایش اخبار یک شمارنده درست کن که به ازای هر واکشی سطر از جدول یکی اضافه بشه.بعد یه تابع بنویس که وقتی روی هر سطر کلیک می کنی شماره ی اون سطر رو(شماره ی تایمر مربوط به اون سطر و نه آید سطر) در یه متغیر سراسری پر کنه.
حالا هر وقت که روی لینک بعدی یا قبلی کلیک می کنی باید از مقدار متغیر سراسریت یکی کم و یا یکی اضافه کنی.

Mah
چهارشنبه 16 آبان 1386, 07:39 صبح
این روش به مشکل میخوره.
.بعد یه تابع بنویس که وقتی روی هر سطر کلیک می کنی شماره ی اون سطر رو(شماره ی تایمر مربوط به اون سطر و نه آید سطر) در یه متغیر سراسری پر کنه.


سلام .
من هم متوجه نشدم .

لطفاً با مثال توضیح دهید .
من می خواهم همانند تصویر یک جدول و چند دکمه برای حرکت بر روی جدول بانک اطلاعاتی داشته باشم .
لطفاً راهنمایی بفرمائید .

mrrajabi
چهارشنبه 16 آبان 1386, 21:40 عصر
//با فرض اتصال به بانک
Connect();
<table>
<tr onclick='rowCod(<?php print($Counter); ?>);'>
<td></td>
</tr>

</table>


var rowId = 0;
function rowCod(ID)
{
rowId = ID;

}
function next()
{
if(rowId != 0)
{
document.getElementById(rowId).style.bgColor='With e';
}
else
{
rowId = rowId+1;
document.getElementById(rowId).style.bgColor='Yell ow';
}
}

function Back()
{

if(rowId != 0)
{
document.getElementById(rowId).style.bgColor='With e';
}
else
{
rowId = rowId - 1;
document.getElementById(rowId).style.bgColor='Yell ow';
}
}

<inpute type='button' value='Next' onclick ='next();' />
<inpute type='button' value='Back' onclick ='Back();' />

فقط یادت باشه که سطرهای جدولت نباید رنگی باشه(البته در این روش)

Mah
پنج شنبه 17 آبان 1386, 22:45 عصر
سلام .
ممنونم که جواب منو دادین .
اما منظور من این بود :
من می خواهم یک کوئری بزنم سپس رکوردها را در یک متغیر مثلاً Row بریزم سپس به وسیله دکمه (عکس) اعمالی مثل رکورد بعدی و قبلی و... را پیمایش کنم .
همانند برنامه های رویداد گرا .
من می خواهم تمام این اعمال در یک صفحه انجام شود و فرم را به صفحه دیگری پست نکنم .

tabib_m
جمعه 18 آبان 1386, 17:10 عصر
مطمئنا وقتی حرف از «بعدی» و «قبلی» میشه، باید یک ترتیبی در میون باشه.
که طبیعتا فکر میکنم ترتیب مورد نیاز شما در اینجا، بر اساس زمان ثبت خبر هست.
پس شما باید محور انتخاب رکورد قبلی و بعدی رو زمان ایجاد رکورد قرار بدی، نه ID اونها!! (هر چند که ترتیب idها در اکثر مواقع -یعنی نه همیشه- مشابه ترتیب زمانی رکوردها هست)

حالا اگر فرضا اگر قراره ترتیب نمایش بر اساس تاریخ و ساعت باشه
بهتره این کار رو بکنی:


// $date=date of this record

$query=mysql_query("select * from `tablenName` where `date`>'$date' order by `date` asc limit 1");
$rowNext=mysql_fetch_assoc($query);

$query=mysql_query("select * from `tablenName` where `date`<'$date' order by `date` desc limit 1");
$rowPrev=mysql_fetch_assoc($query);

اگر هم بخوای خبرها شرط خاص دیگه ای هم داشته باشن، به همون شرط کوئری ها میتونی اضافه کنی... (مثلا ممکنه بخوای خبرهایی رو نمایش بدی که مقدار فلان فیلدشون برابر با فلان چیز هست‌، که شرط مذکور رو میتونی همینجا بهش اضافه کنی)

موفق باشید.

Mah
شنبه 19 آبان 1386, 10:04 صبح
سلام دوستان .
از پاسخ هاتون ممنونم.

کد من اینه .
مشکل اینجاست که مقدار IDState تغییر نمی کنه .
داخل تابع هم شناخته نمیشه . حتی موقعی کهIDState را global تعریف می کنم .

2- همانطور که در عکس دیدید من می خواهم یک Navigator برای پیمایش رکوردها داشته باشم .
اما می خواهم فقط یکبار Query بزنم نه برای هر بار زدن یک دکمه Query جدیدی اجرا کنم .
چون تعداد مراجعات به بانک زیاد می شود .
پس بهتر است یکبار هنگام Load صفحه این Query اجرا شود و با تغییرات جدول به صورت خودکار دوباره در صفحه لود شود .
فکر می کنم برای لود خودکار تغییرات باید از AJAX استفاده کنم .

در ضمن برای اینکه دکمه های من رویداد گرا باشند ، از مقاله ای IranPHP استفاده نمودم که آدرسش را قرار می دهم و برای رکورد بعدی و قبلی هم از کد جناب طبیب استفاده نمودم .
من برای رفتن به رکورد قبلی و بعدی به مقدار ID ها کم یا اضافه نمی کنم . بلکه رکوردها را مرتب کرده و اولین فیلد را بر می دارم .

http://www.iranphp.net/articles/aplications/Articles007.pdf

لطفا راهنمایی بفرمائید .



<?php
$row=array('IDState'=>1);
$IDState=1;
echo '<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP Page</title>
<style>
body
{
font:12px, Tahoma, "Times New Roman", Andalus, Arial;
direction:rtl;
}
</style>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>';
Function submit($IDStateIN)
{
$Conn = mysql_connect("localhost", "root", "");
if (!$Conn) {
die("Could not connect: " . mysql_error());
}
mysql_select_db("pishnahadat",$Conn) or die("Could not select database");
if(isset($_POST['formsubmit']))
{
$q1="select * from statep order by IDState ASC limit 0,1 ";
$res1=mysql_query($q1,$Conn);
$row=mysql_fetch_assoc($res1);
return $row;
}// 1
if(isset($_POST['formsubmit2']))
{
$q1="select * from statep where IDState <= ". $IDStateIN." order by IDState ASC limit 1 ";
$res1=mysql_query($q1,$Conn);
$row=mysql_fetch_assoc($res1);
return $row;
}// 2

if(isset($_POST['formsubmit3']))
{
$q1="select * from statep where IDState > ". $IDStateIN ." order by IDState asc limit 1 ";
$res1=mysql_query($q1,$Conn);
$row=mysql_fetch_assoc($res1) ;
return $row;
}// 3
if(isset($_POST['formsubmit4']))
{
$q1="select * from statep order by IDState DESC limit 1 ";
$res1=mysql_query($q1,$Conn);
$row=mysql_fetch_assoc($res1) ;
return $row;
}// 4

}

echo '
<body dir="rtl" background="Images/Back0.JPG" >
';
$row=submit($IDState);
$IDState=$row['IDState'] or 1;
echo '
<table width="100%" border="0">
<tr>
<td><b>پیشنهادات جدید </b></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td><input type="button" name="LoadPishnahad" value="پیشنهادات رسیده" /></td>
<td>کد پیشنهادی </td>
<td><INPUT Name="txtIDState" Type="text" value=""></td>
<td>گروه کارشناسی </td>
<td><select name="txtGroupK">
<option>کامپیوتر</option>
<option>مالی</option>
<option>اداری</option>
</select></td>
<td>تعداد پیشنهادات جدید </td>
<td></td>
</tr>
<tr>
<td>
<form name="fLast" action="NewPishnahad.php" method="post" >
<input type="hidden" name="formsubmit4" value="4" />
<input width="80" name="BtnLast" type="submit" value="رکورد آخر" id="BtnLast" />
</form>
</td>
<td>
<form name="fNext" action="NewPishnahad.php" method="post" >
<input type="hidden" name="formsubmit3" value="3" />
<input name="BtnNext" type="submit" id="BtnNext" value="بعدی" width="80"/>
</form>
</td>
<td>';

echo '<input name="txtIDstate" type="text" id="txtIDstate" width="60" value="'.$IDState.'" />
</td>
<td>
<form name="fBack" action="NewPishnahad.php" method="post" >
<input type="hidden" name="formsubmit2" value="2" />
<input width="80" name="BtnBack" type="submit" id="BtnBack" value="قبلی" />
</form>
</td>
<td>
<form method="post" action="NewPishnahad.php" name="fFirst">
<input type="hidden" name="formsubmit" value="1" />
<input type="submit" name="btnsubmit" value="رکورد اول" width="80" />
</form>
</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>

</body>
</html>';
?>

Mah
یک شنبه 20 آبان 1386, 10:27 صبح
سلام دوستان .
بالاخره با کلی دردسر به این نتیجه رسیدم که با متد Get متغیر را برای صفحه ام بفرستم این هم کدش :

کد قسمت Head


<?php
$row=array('IDState'=>1);
global $IDState;
$IDState=1;
if(isset($_GET['IDState']))
{
$IDState=$_GET['IDState'];
echo "myID : $IDState";
$Conn = mysql_connect("localhost", "root", "");
mysql_select_db("pishnahadat",$Conn) or die("Could not select database");
$q1="select * from statep where IDState > ". $IDState ." order by IDState asc limit 1 ";
$res1=mysql_query($q1,$Conn);
$row=mysql_fetch_assoc($res1) ;
$IDState=$row['IDState'];
}
?>


کد قسمت Body :


<a href="NewPishnahad.php?IDState=<?php echo $IDState ;?>" >Next</a>

hentjanson
دوشنبه 28 آبان 1386, 11:33 صبح
سلام من هنوز نتونستم کد خودم رو میزارم کمکم کنید مرسی




$number=7;
$hostname="localhost";
$username="root";
$password="";
$link = mysql_connect($hostname,$username,$password);
if ( ! $link )
die( "Couldn't connect to MySQL ". mysql_error() );

$db = mysql_select_db("aa",$link);
if (!$db) {
die ('Can\'t use foo : ' . mysql_error());
}
mysql_query($sql, $link );

if (!isset($_GET['start']))
{
$start=0;
$sql="SELECT count(*) FROM news ";
$result=mysql_query($sql, $link );
$row = mysql_fetch_row($result);
$total=$row[0];
}
else
{ $start=$_GET['start'];
$total=$_GET['total'];
}
$sql="SELECT * FROM news where 1 ORDER BY 'id' DESC LIMIT $start , $number";
if(!$_REQUEST['newsId']){
$res=mysql_query($sql, $link );
$num=mysql_num_rows($res);
for($i=0; $i<$num; $i++){
$row=mysql_fetch_array($res);
$link=$thisPageName."?newsId=".md5($row['title']);
echo "<table style='border:0px solid #ff9966; font-size:8px; font-family:Tahoma,serif margin-top: 0; margin-bottom: 0' cellSpacing=0 cellPadding=0 width='30%' border=0 >
<td width='90%' bgcolor='#fde3c3'><div align='right' style=\"font-family: Tahoma; color: #993300; font-size: 8pt\"><a href='$link' target='_blank'>".$row['title']."</a><img src='services_bullg.gif'></div></td>
</table>
";
}
} else { // age ieki az link ha click shod ..
$res=mysql_query(" select * from `news` where md5(`title`)='".$_REQUEST['newsId']."' limit 1 "); // dar ovordan e record i az news ke click khorde
$row=mysql_fetch_array($res); // ..
echo "<table width='100%' style='border: 1px SOLID #CCCCCC;' border='0' cellspacing='0'>
<tr>
<td div align=\"right\" dir=\"rtl\" style=\"font-family: Tahoma; font-size: 8pt\"> ".nl2br($row['note'])."</td>
</tr>
<tr>
<td bgcolor='#F9F9F9'><div align='left' style=\"font-family: Tahoma; color: #993300 ;font-size: 8pt\">����� : $row[author]<src='n-f.gif'> </div></td>
</tr>
</table>
";
}

Mah
سه شنبه 29 آبان 1386, 08:26 صبح
سلام .
چرا از mysql_num_rows استفاده نمی کنید .

با استفاده از این تابع می توانید تمام رکوردهای مورد نظر را انتخاب و روی آنها حرکت کنید .
من از این تابع استفاده کردم . جواب گرفتم .