PDA

View Full Version : تقسیم لیست به چندین صفحه



neda_barnamenevis
چهارشنبه 19 مهر 1391, 13:28 عصر
سلام این کد من است کسی می تونه اون را جوری تغییر بده که وقتی از دیتابس select می کنه در هر صفحه فقط ۲۰ تا از آن را نشان بدهد بقیه را در صفحه بعد
ممنون


<html><head><title>MySQL Table Viewer</title></head><body>

<?php

$db_host = 'localhost';
$db_user = 'root';
$db_pwd = '';

$database = 'drupalfa6';
$table = 'testinsert2';

if (!mysql_connect($db_host, $db_user, $db_pwd))
die("Can't connect to database");

if (!mysql_select_db($database))
die("Can't select database");

// sending query
$result = mysql_query("SELECT * FROM {$table}");
if (!$result) {
die("Query to show fields from table failed");
}

$fields_num = mysql_num_fields($result);


if(isset($_POST['checkbox'])){
$select=array();
$select=$_POST['checkbox'];

foreach($select as $delete){


// $query="DELETE FROM testinsert WHERE id='".$delete."'";
//$query="UPDATE FROM testinsert SET checkbox='1' WHERE id='".$delete."'";
mysql_query("UPDATE testinsert2 SET checkbox='1' WHERE id = '$delete'")or die(mysql_error());
// mysql_query($query)or die(mysql_error());

}
}


echo "<form action=\"\" method=\"post\">";

//echo "<table border='1'>
echo "<TABLE BORDER='3' BORDERCOLOR='#336699'>
<tr>
<th><font color=' #CC9966' size='3' ><b>id</b></font></th>
<th><font color=' #CC9966' size='3' ><b>نام</b></font></th>
<th><font color=' #CC9966' size='3' ><b>نام خانوادگی</b></font></th>
<th><font color=' #CC9966' size='3' ><b>دانشکده</b></font></th>
<th><font color=' #CC9966' size='3' ><b>گروه</b></font></th>
<th><font color=' #CC9966' size='3' ><b>شماره پرسنلی</b></font></th>
<th><font color=' #CC9966' size='3' ><b>شماره موبایل</b></font></th>
<th><font color=' #CC9966' size='3' ><b>ایمیل درخواستی ۱</b></font></th>
<th><font color=' #CC9966' size='3' ><b>ایمیل درخواستی ۲</b></font></th>
<th><font color=' #CC9966' size='3' ><b>ایمیل دسترسی اضطراری</b></font></th>
<th><font color=' #CC9966' size='3' ><b>انتخاب</th>

</tr>";
while($row = mysql_fetch_array($result))
{
if ($row[checkbox]==0){
?>
<tr>
<td> <?php echo $row['id'] ?> </td>
<td align="center"><?php echo $row['Fname'] ?> </td>
<td align="center"><?php echo $row['Lname'] ?> </td>
<td align="center"><?php echo $row['Uni'] ?> </td>
<td align="center"><?php echo $row['Course'] ?> </td>
<td align="center"><?php echo $row['Studno'] ?> </td>
<td align="center"><?php echo $row['PHONE'] ?> </td>
<td align="center"><?php echo $row['Email1'] ?> </td>
<td align="center"><?php echo $row['Email2'] ?> </td>
<td align="center"><?php echo $row['Email4'] ?> </td>

<td><input type="checkbox" name="checkbox[]" value="<?php echo $row['id'];?>"/></td>
</tr>
<?php
}
}
echo "</table>";
echo "<input type='submit' value='mail activate' name='delete' />";

echo "</form>";


?>

css-man
چهارشنبه 19 مهر 1391, 15:36 عصر
اگر درست فهمیده باشم
میخوا ی صفحه بندی کنی نتیجه کارت رو

برای این کار اول باید با یه تابعی مثل mysql_num_rows تعداد اخبار یا اطلاعات توی دیتابیست رو بشماری

بعد یه متغیر تعریف کنی و تعدادی که میخوای تو هر صفحه نمایش بدی رو توش بریزی

بعد تعداد اخبار رو تقسیم بر تعداد نمایش در هر صفحه بکنی و در متغیر دیگه بریزی

اینجوری تعداد صفحات ت هم مشخص میشه

یه نمونه کد برات میزارم


به این تابع یه کم دقت کنی متوجه داستان میشی




function list_all_news($page)
{

$ret = array();
$numShowPage = 2;
$q1=" SELECT * FROM `news`";
$r1 = runQuery($q1);
$numRows = mysql_num_rows($r1);
$totalPage = ceil($numRows / $numShowPage);
$start = ($page * $numShowPage ) - $numShowPage;
$q1.= " ORDER BY `id` DESC LIMIT$start,$numShowPage ";
$ret[0] = $totalPage;
$ret[1] = runQuery($q1)or die(mysql_error());
return $ret;
}

djsaeedkhan
پنج شنبه 20 مهر 1391, 09:28 صبح
سلام
می تونی از limit در انتهای کوری استفاده کنی و بهش بگی از سطر 30 ده تا وردار و نشون بده. می تونی هم با GET یه مقدار بفرستی که الان چه عدد هست (مثلا 10 یا 20 یا 30 ) بعد تعداد دلخواه رو دریافت کنی


select * from table limit 10;
select * from table limit $last,10;

neda_barnamenevis
یک شنبه 23 مهر 1391, 08:15 صبح
می شه یکی لطف کنه تغییرات را روی کد من بده
ممنون

moshaver71
یک شنبه 23 مهر 1391, 10:41 صبح
<?php

$db_host = 'localhost';
$db_user = 'root';
$db_pwd = '';

$database = 'drupalfa6';
$table = 'testinsert2';

if (!mysql_connect($db_host, $db_user, $db_pwd))
die("Can't connect to database");

if (!mysql_select_db($database))
die("Can't select database");

// sending query
$page = $_GET['page']; //شماره صفحه دریافتی
$start = $page - 1; //آی دی اولین رکورد برای نمایش
$end = 15; //تعداد آیتم های نمایشی در هر صفحه
$result = mysql_query("SELECT * FROM {$table} LIMIT $start, $end");
if (!$result) {
die("Query to show fields from table failed");
}
$query = mysql_query("SELECT * FROM {$table}"); //بدست آوردن تعداد رکورد های موجود در جدول
$pages = ceil(mysql_num_rows($query)/15); //صفحات

$fields_num = mysql_num_fields($result);


if(isset($_POST['checkbox'])){
$select=array();
$select=$_POST['checkbox'];

foreach($select as $delete){


// $query="DELETE FROM testinsert WHERE id='".$delete."'";
//$query="UPDATE FROM testinsert SET checkbox='1' WHERE id='".$delete."'";
mysql_query("UPDATE testinsert2 SET checkbox='1' WHERE id = '$delete'")or die(mysql_error());
// mysql_query($query)or die(mysql_error());

}
}


echo "<form action=\"\" method=\"post\">";

//echo "<table border='1'>
echo "<TABLE BORDER='3' BORDERCOLOR='#336699'>
<tr>
<th><font color=' #CC9966' size='3' ><b>id</b></font></th>
<th><font color=' #CC9966' size='3' ><b>نام</b></font></th>
<th><font color=' #CC9966' size='3' ><b>نام خانوادگی</b></font></th>
<th><font color=' #CC9966' size='3' ><b>دانشکده</b></font></th>
<th><font color=' #CC9966' size='3' ><b>گروه</b></font></th>
<th><font color=' #CC9966' size='3' ><b>شماره پرسنلی</b></font></th>
<th><font color=' #CC9966' size='3' ><b>شماره موبایل</b></font></th>
<th><font color=' #CC9966' size='3' ><b>ایمیل درخواستی ۱</b></font></th>
<th><font color=' #CC9966' size='3' ><b>ایمیل درخواستی ۲</b></font></th>
<th><font color=' #CC9966' size='3' ><b>ایمیل دسترسی اضطراری</b></font></th>
<th><font color=' #CC9966' size='3' ><b>انتخاب</th>

</tr>";
while($row = mysql_fetch_array($result))
{
if ($row[checkbox]==0){
?>
<tr>
<td> <?php echo $row['id'] ?> </td>
<td align="center"><?php echo $row['Fname'] ?> </td>
<td align="center"><?php echo $row['Lname'] ?> </td>
<td align="center"><?php echo $row['Uni'] ?> </td>
<td align="center"><?php echo $row['Course'] ?> </td>
<td align="center"><?php echo $row['Studno'] ?> </td>
<td align="center"><?php echo $row['PHONE'] ?> </td>
<td align="center"><?php echo $row['Email1'] ?> </td>
<td align="center"><?php echo $row['Email2'] ?> </td>
<td align="center"><?php echo $row['Email4'] ?> </td>

<td><input type="checkbox" name="checkbox[]" value="<?php echo $row['id'];?>"/></td>
</tr>
<?php
}
}
echo "</table>";
echo "<input type='submit' value='mail activate' name='delete' />";

echo "</form>";


?>

به آدرستون یه مشخصه get بدین با نام page مثل نمونه زیر:
http://localhost/test.php?page=1
توی هر صفحه باید 15 تا رکورد رو نشون بده
براتون بدست آوردن تعداد صفحات رو هم نوشتم که می تونید ازش استفاده کنید.

neda_barnamenevis
یک شنبه 23 مهر 1391, 11:20 صبح
این error را می دهد
Query to show fields from table failed

neda_barnamenevis
یک شنبه 23 مهر 1391, 11:36 صبح
چطوری این آدرس را تعریف کنم
http://localhost/test.php?page=1
وقتی بالای صفحه این را می نویسم
بازم page =0 می گیرد

neda_barnamenevis
سه شنبه 23 آبان 1391, 09:56 صبح
این کد جدید من است لطفا یکی این کد را چند صفحه ای کند خیلی بهش احتیاج دارم


<html><head><title>MySQL Table Viewer</title></head><body>

<?php

$db_host = 'localhost';
$db_user = 'root';
$db_pwd = '';

$database = 'drupalfa6';
$table = 'testinsert2';

if (!mysql_connect($db_host, $db_user, $db_pwd))
die("Can't connect to database");

if (!mysql_select_db($database))
die("Can't select database");

// sending query
$result = mysql_query("SELECT * FROM {$table}");
if (!$result) {
die("Query to show fields from table failed");
}

$fields_num = mysql_num_fields($result);


if(isset($_POST['checkbox'])){
$select=array();
$select=$_POST['checkbox'];

foreach($select as $delete){


// $query="DELETE FROM testinsert WHERE id='".$delete."'";
//$query="UPDATE FROM testinsert SET checkbox='1' WHERE id='".$delete."'";
mysql_query("UPDATE testinsert2 SET checkbox='1' WHERE id = '$delete'")or die(mysql_error());
echo "<form action=\"?q=node/12\" method=\"post\">";
echo '<input type="hidden" name="id" value="'.$delete.'" />';





$result = mysql_query("SELECT Fname,Lname,Email1 FROM {$table} WHERE id=$delete");
if (!$result) {
die("Query to show fields from table failed");
}

while($row = mysql_fetch_array($result)){


$FName=$row['Fname'];
$LName=$row['Lname'];
$Email1=$row['Email1'];
$Email4=$row['Email4'];
//echo "<input type='text' value='ارسال ایمیل' name='delete' />";
?>

<input type="text" name="Email1" value="<?php echo $row['Email1']; ?>"/>
<?
}
echo '

<input type="hidden" name="Fname" value="'.$FName.'" />
<input type="hidden" name="Lname" value="'.$LName.'" />

<input type="hidden" name="Email4" value="'.$Email4.'" />';

echo "<input type='submit' value='ارسال ایمیل' name='delete' />";
// mysql_query($query)or die(mysql_error());

}
}


echo "<form action=\"\" method=\"post\">";

//echo "<table border='1'>
echo "<TABLE BORDER='3' BORDERCOLOR='#336699'>
<tr>
<th><font color=' #CC9966' size='3' ><b>id</b></font></th>
<th><font color=' #CC9966' size='3' ><b>نام</b></font></th>
<th><font color=' #CC9966' size='3' ><b>نام خانوادگی</b></font></th>
<th><font color=' #CC9966' size='3' ><b>دانشکده</b></font></th>
<th><font color=' #CC9966' size='3' ><b>گروه</b></font></th>
<th><font color=' #CC9966' size='3' ><b>شماره پرسنلی</b></font></th>
<th><font color=' #CC9966' size='3' ><b>شماره موبایل</b></font></th>
<th><font color=' #CC9966' size='3' ><b>ایمیل درخواستی ۱</b></font></th>
<th><font color=' #CC9966' size='3' ><b>ایمیل درخواستی ۲</b></font></th>
<th><font color=' #CC9966' size='3' ><b>ایمیل دسترسی اضطراری</b></font></th>
<th><font color=' #CC9966' size='3' ><b>انتخاب</th>

</tr>";
while($row = mysql_fetch_array($result))
{
if ($row[checkbox]==0){
$FName=$row['Fname'];
$LName=$row['Lname'];
$Email4=$row['Email4'];

?>
<tr>
<td> <?php echo $row['id'] ?> </td>
<td align="center"><?php echo $row['Fname'] ?> </td>
<td align="center"><?php echo $row['Lname'] ?> </td>
<td align="center"><?php echo $row['Uni'] ?> </td>
<td align="center"><?php echo $row['Course'] ?> </td>
<td align="center"><?php echo $row['Studno'] ?> </td>
<td align="center"><?php echo $row['PHONE'] ?> </td>
<td align="center"><?php echo $row['Email1'] ?> </td>
<td align="center"><?php echo $row['Email2'] ?> </td>
<td align="center"><?php echo $row['Email4'] ?> </td>

<td><input type="checkbox" name="checkbox[]" value="<?php echo $row['id']; ?>"/></td>
</tr>
<?php
}
}
echo "</table>";


echo "<input type='submit' value='mail activate' name='delete' />";

echo "</form>";


?>

css-man
سه شنبه 23 آبان 1391, 12:03 عصر
کدهات خیلی بهم ریختس

همه چیزو تو همین صفحه نوشتی خیلی شلوغه

ولی چشم برات درستش میکنم همینجا قرار میدم

neda_barnamenevis
سه شنبه 23 آبان 1391, 14:30 عصر
خیلی خیلی ممنونم

اینم شکل لیستم
94858


کدهات خیلی بهم ریختس

همه چیزو تو همین صفحه نوشتی خیلی شلوغه

ولی چشم برات درستش میکنم همینجا قرار میدم

neda_barnamenevis
شنبه 27 آبان 1391, 10:25 صبح
من این تغییرات را اعمال کردم کد من اینگونه شد

<html><head><title>MySQL Table Viewer</title></head><body>

<?php



// rows per page

$rowsPerPage = 3;

// if $_GET

if(isset($_GET['page']))

{

$pageNum= $_GET['page'];

}

else

$pageNum = 1;

// preceding rows

$previousRows =($pageNum - 1) * $rowsPerPage;

// the first, optional value of LIMIT is the start position

//the next required value is the number of rows to retrieve






$db_host = 'localhost';
$db_user = 'root';
$db_pwd = '';

$database = 'drupalfa6';
$table = 'testinsert2';

if (!mysql_connect($db_host, $db_user, $db_pwd))
die("Can't connect to database");

if (!mysql_select_db($database))
die("Can't select database");

// sending query
$result = mysql_query("SELECT * FROM {$table} LIMIT $previousRows, $rowsPerPage");
if (!$result) {
die('Error couldn\'t get the data').mysql_error();
}
//$result = mysql_query($query) or die('Error couldn\'t get the data').mysql_error();
$fields_num = mysql_num_fields($result);


if(isset($_POST['checkbox'])){
$select=array();
$select=$_POST['checkbox'];

foreach($select as $delete){


// $query="DELETE FROM testinsert WHERE id='".$delete."'";
//$query="UPDATE FROM testinsert SET checkbox='1' WHERE id='".$delete."'";
mysql_query("UPDATE testinsert2 SET checkbox='1' WHERE id = '$delete'")or die(mysql_error());
echo "<form action=\"?q=node/12\" method=\"post\">";
echo '<input type="hidden" name="id" value="'.$delete.'" />';





$result = mysql_query("SELECT Fname,Lname,Email1 FROM {$table} WHERE id=$delete");
if (!$result) {
die("Query to show fields from table failed");
}

while($row = mysql_fetch_array($result)){


$FName=$row['Fname'];
$LName=$row['Lname'];
$Email1=$row['Email1'];
$Email4=$row['Email4'];
//echo "<input type='text' value='ارسال ایمیل' name='delete' />";
?>

<input type="text" name="Email1" value="<?php echo $row['Email1']; ?>"/>
<?
}
echo '

<input type="hidden" name="Fname" value="'.$FName.'" />
<input type="hidden" name="Lname" value="'.$LName.'" />

<input type="hidden" name="Email4" value="'.$Email4.'" />';

echo "<input type='submit' value='ارسال ایمیل' name='delete' />";
// mysql_query($query)or die(mysql_error());

}
}


echo "<form action=\"\" method=\"post\">";

//echo "<table border='1'>
echo "<TABLE BORDER='3' BORDERCOLOR='#336699'>
<tr>
<th><font color=' #CC9966' size='3' ><b>id</b></font></th>
<th><font color=' #CC9966' size='3' ><b>نام</b></font></th>
<th><font color=' #CC9966' size='3' ><b>نام خانوادگی</b></font></th>
<th><font color=' #CC9966' size='3' ><b>دانشکده</b></font></th>
<th><font color=' #CC9966' size='3' ><b>گروه</b></font></th>
<th><font color=' #CC9966' size='3' ><b>شماره پرسنلی</b></font></th>
<th><font color=' #CC9966' size='3' ><b>شماره موبایل</b></font></th>
<th><font color=' #CC9966' size='3' ><b>ایمیل درخواستی ۱</b></font></th>
<th><font color=' #CC9966' size='3' ><b>ایمیل درخواستی ۲</b></font></th>
<th><font color=' #CC9966' size='3' ><b>ایمیل دسترسی اضطراری</b></font></th>
<th><font color=' #CC9966' size='3' ><b>انتخاب</th>

</tr>";
//while($row = mysql_fetch_array($result))
while(list($id,$Fname,$Lname,$uni,$course,$studno, $PHONE,$Email1,$Email2,$Email4) = mysql_fetch_array($result))
{
if ($row[checkbox]==0){
$FName=$row['Fname'];
$LName=$row['Lname'];
$Email4=$row['Email4'];

?>
<tr>
<td> <?php echo $row['id'] ?> </td>
<td align="center"><?php echo $row['Fname'] ?> </td>
<td align="center"><?php echo $row['Lname'] ?> </td>
<td align="center"><?php echo $row['Uni'] ?> </td>
<td align="center"><?php echo $row['Course'] ?> </td>
<td align="center"><?php echo $row['Studno'] ?> </td>
<td align="center"><?php echo $row['PHONE'] ?> </td>
<td align="center"><?php echo $row['Email1'] ?> </td>
<td align="center"><?php echo $row['Email2'] ?> </td>
<td align="center"><?php echo $row['Email4'] ?> </td>

<td><input type="checkbox" name="checkbox[]" value="<?php echo $row['id']; ?>"/></td>
</tr>
<?php
}
}
echo "</table>";
$query = "SELECT COUNT(id) AS numrows FROM testinsert";

$result = mysql_query($query) or die('Error, couldn\'t get count title=\"$page\"').mysql_error();

//use an associative array

$row = mysql_fetch_assoc($result);

$numrows = $row['numrows'];

// find the last page number

$lastPage = ceil($numrows/$rowsPerPage);

//we use ceil which rounds up the result, because if we have 4.2 as an answer, we'd need 5 pages.

$phpself = $_SERVER['PHP_SELF'];

//if the current page is greater than 1, that is, it isn't the first page

//then we print first and previous links

if ($pageNum > 1)

{

$page = $pageNum - 1;

$prev = " <a href=\"$phpself?page=$page\" title=\"Page $page\">[Back]</a> ";

$first = " <a href=\"?q=node/9?page=1\" title=\"Page 1\">[First Page]</a> ";

}

else

//otherwise we do not print a link, because the current page is

//the first page, and there are no previous pages

{

$prev = ' [Back] ';

$first = ' [First Page] ';

}

// We print the links for the next and last page only if the current page

//isn't the last page

if ($pageNum < $lastPage)

{

$page = $pageNum + 1;

$next = " <a href=\"?q=node/9?page=$page\" title=\"Page $page\">[Next]</a> ";

$last = " <a href=\"?q=node/9?page=$lastPage\" title=\"Page $lastPage\">[Last Page]</a> ";

}

//the current page is the last page, so we don't print links for

//the last and next pages, there is of course no next page.

else

{

$next = ' [Next] ';

$last = ' [Last Page] ';

}

//We print the links depending on our selections above

echo $first . $prev . " Showing page <bold>$pageNum</bold> of

<bold>$lastPage</bold> pages " . $next . $last;





echo "<input type='submit' value='mail activate' name='delete' />";

echo "</form>";


?>



من تغییرات را بر روی کد خود اعمال کردم فقط یک مشکل است که با دروپال دارم
اینم این است که اگر

$next = " <a href=\"$phpself?page=$page\" title=\"Page $page\">[Next]</a> ";

$last = " <a href=\"$phpself?page=$lastPage\" title=\"Page $lastPage\">[Last Page]</a> ";

اگر $phpself بنویسم می رود به صفحه اصلی من یعنی index.php
و اگر آدرس صفحه خود را بگذارم یعنی این

$next = " <a href=\"?q=node/9?page=$page\" title=\"Page $page\">[Next]</a> ";

$last = " <a href=\"?q=node/9?page=$lastPage\" title=\"Page $lastPage\">[Last Page]</a> ";

نگاه وقتی next را می زند
بالای صفحه می زند ?q=node/9?page=14 و error می دهد که صفحه مورد نظر یافت نشد.
صفحه درخواست شده وجود ندارد.
چطوری این مشکل را حل کنم؟




مشکل اصلی من اینست که با درپال کار می کنم اگر نه به صورت معمولی کار می کند
کسی میداند چرا؟