PDA

View Full Version : حلقه FOR و جداول



terrorhell
شنبه 26 بهمن 1387, 10:36 صبح
سلام دوستان
من یک صفحه دارم که در هر صفحه 100 رکورد از دیتابیس گرفته میشه و در جدول نمایش داده میشه .

حالا من میخوام کد رو طوری تنظیم کنم که 50 رکورد اول رو در ستون اول نمایش بده و 50 رکورد بعدی رو کنارش در یک ستون دیگه نمایش بده

به این صورت :



1 51
2 52
. .
. .
50 100

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

منون میشم دوستان راهنمایی کنن

terrorhell
شنبه 26 بهمن 1387, 10:53 صبح
یا اینکه 100 تا رکورد را بگیره و به این صورت نمایش بده که
اول : یک <TR> بزنه و بعد 2 تا رکورد را در 2 تا <TD> بزیزه :
<TR>
<TD>
RECORD 1
</TD>
<TD>
RECORD 2
</TD>
</TR>

و بعد باز به همین صورت کدهای بالا رو برای 2 رکورد بعدی چاپ کنه ، تا کلاً اطلاعاتی که از QUERY خواستیم رو برامون چاپ کنه


$res = $obj->query("select * from word_search ORDER BY id DESC limit 0,100 ");

و به همین صورت رکورد ها را دو به دو رو به روی هم چاپ کنه :

1 2
3 4
5 6
7 8
. .
. .
99 100

این کد رو هم واسش نوشتم اما 100 رکورد اول رو تو یه ستون چاپ میکنه و بعد باز کنارش همون 100 رو رکورد رو نمایش میده :



<?php
include '../../include/DAL_Class.php';
$obj = new DB();
$res = $obj->query("select * from word_search ORDER BY id DESC limit 0,100 ");
echo '<table border=1 ><tr>';
$conx = count($res);
for($i=0;$i<=$conx;$i++)
{
$row = $res[$i]['word'];
for($j=0;$j<2;$j++)
{
echo '<td>'.$row.'</td>';

}
echo '<tr>';
}

echo '</tr></table>';
?>


به این صورت :

1 1
2 2
3 3
4 4
5 5
. .
100 100

smhnaji
شنبه 26 بهمن 1387, 11:15 صبح
$start = (int)$_GET['start'];
$query = "SELECT `id` FROM `table` LIMIT $start-1, 50";
$result = mysql_query($query) or die();

echo "<table class='invisible_table'><tr><td>";
echo "<table class='column1'>"
while ($row = mysql_fetch_array($result))
{
echo "<tr><td>" . $row["id"] . "</td></tr>";
}
echo "</table>";
echo "</td>";

$start += 50;
// دیگه نیازی به نوشتن دوباره ی این خط نیست: $query = "SELECT `id` FROM `table` LIMIT $start-1, 50";
$result = mysql_query($query) or die(); // اما اینو باید دوباره بنویسیم که بره کوئری رو اجرا کنه چون استارت مقدار جدیدی گرفته

echo "<td>";
echo "<table class='column2'>"
while ($row = mysql_fetch_array($result))
{
echo "<tr><td>" . $row["id"] . "</td></tr>";
}
echo "</table>";

// editted: the last line was added
echo "</td></tr></table>";
این راه حل برای پست اول
دومی هم آسونه

همین جوریه فقط یه حلقه میخواد.

تا جایی که تونستم سعی کردم خوانا و خیلی معمولی بنویسم.
امیدوارم به راحتی متوجه این کد بشی دوست خوبم.

terrorhell
شنبه 26 بهمن 1387, 11:30 صبح
این کد شما هم هر رکورد رو دوبار چاپ میکنه ،
فکر میکنم روش دوم ( پست دوم ) بهتر باشه اما اونم در حلقه دوم هر رکورد رو دو بار در TD میریزه

یعنی هر رکورد دو بار چاپ میشه

ممنون میشم راجبه کد دوم زاهنمایی کنید که به اون صورت در بیارم اما بدون اینکه هر رکورد رو دو بار چلپ کنه

smhnaji
شنبه 26 بهمن 1387, 11:42 صبح
پستم رو ویرایش کردم و خط آخر رو بش اضافه کردم

الان خودم هم تست می کنم و نتیجه رو می گم.

درباره ی دومی هم توضیح می دم

terrorhell
شنبه 26 بهمن 1387, 11:57 صبح
اینم خروجی کد شما بعد از نمایش



<table class='invisible_table'><tr><td><table class='column1'><tr><td>1</td></tr><tr><td>2</td></tr><tr><td>3</td></tr><tr><td>4</td></tr><tr><td>5</td></tr><tr><td>6</td></tr><tr><td>7</td></tr><tr><td>8</td></tr><tr><td>9</td></tr><tr><td>10</td></tr><tr><td>11</td></tr><tr><td>12</td></tr><tr><td>13</td></tr><tr><td>14</td></tr><tr><td>15</td></tr><tr><td>16</td></tr><tr><td>17</td></tr><tr><td>18</td></tr><tr><td>19</td></tr><tr><td>20</td></tr><tr><td>21</td></tr><tr><td>22</td></tr><tr><td>23</td></tr><tr><td>24</td></tr><tr><td>25</td></tr><tr><td>26</td></tr><tr><td>27</td></tr><tr><td>28</td></tr><tr><td>29</td></tr><tr><td>30</td></tr><tr><td>31</td></tr><tr><td>32</td></tr><tr><td>33</td></tr><tr><td>34</td></tr><tr><td>35</td></tr><tr><td>36</td></tr><tr><td>37</td></tr><tr><td>38</td></tr><tr><td>39</td></tr><tr><td>40</td></tr><tr><td>41</td></tr><tr><td>42</td></tr><tr><td>43</td></tr><tr><td>44</td></tr><tr><td>45</td></tr><tr><td>46</td></tr><tr><td>47</td></tr><tr><td>48</td></tr><tr><td>49</td></tr><tr><td>50</td></tr></table></td><td><table class='column2'><tr><td>1</td></tr><tr><td>2</td></tr><tr><td>3</td></tr><tr><td>4</td></tr><tr><td>5</td></tr><tr><td>6</td></tr><tr><td>7</td></tr><tr><td>8</td></tr><tr><td>9</td></tr><tr><td>10</td></tr><tr><td>11</td></tr><tr><td>12</td></tr><tr><td>13</td></tr><tr><td>14</td></tr><tr><td>15</td></tr><tr><td>16</td></tr><tr><td>17</td></tr><tr><td>18</td></tr><tr><td>19</td></tr><tr><td>20</td></tr><tr><td>21</td></tr><tr><td>22</td></tr><tr><td>23</td></tr><tr><td>24</td></tr><tr><td>25</td></tr><tr><td>26</td></tr><tr><td>27</td></tr><tr><td>28</td></tr><tr><td>29</td></tr><tr><td>30</td></tr><tr><td>31</td></tr><tr><td>32</td></tr><tr><td>33</td></tr><tr><td>34</td></tr><tr><td>35</td></tr><tr><td>36</td></tr><tr><td>37</td></tr><tr><td>38</td></tr><tr><td>39</td></tr><tr><td>40</td></tr><tr><td>41</td></tr><tr><td>42</td></tr><tr><td>43</td></tr><tr><td>44</td></tr><tr><td>45</td></tr><tr><td>46</td></tr><tr><td>47</td></tr><tr><td>48</td></tr><tr><td>49</td></tr><tr><td>50</td></tr></body>

smhnaji
شنبه 26 بهمن 1387, 12:06 عصر
;
// دیگه نیازی به نوشتن دوباره ی این خط نیست: $query = "SELECT `id` FROM `table` LIMIT $start-1, 50";
مشکل از این خط بود.
نباید کامنت می شد!

کدی رو که هیچ اروری نمیده و کار می کنه (برای من کار کرد) اینه:


<?php

$start =1;//(int)$_GET['start'];

mysql_connect("localhost", "root", "") or die('err');
mysql_select_db("test");

$query = "SELECT `id` FROM `table` LIMIT $start, 50";
$result = mysql_query($query) or die(mysql_error());

echo "<table class='invisible_table'><tr><td>";
echo "<table class='column1'>";
while ($row = mysql_fetch_array($result))
{
echo "<tr><td>" . $row["id"] . "</td></tr>";
}
echo "</table>";
echo "</td>";

$start += 50;
$query = "SELECT `id` FROM `table` LIMIT $start, 50";
$result = mysql_query($query) or die(); // ??? ???? ???? ?????? ??????? ?? ??? ????? ?? ???? ??? ??? ?????? ????? ????? ?????

echo "<td>";
echo "<table class='column2'>";
while ($row = mysql_fetch_array($result))
{
echo "<tr><td>" . $row["id"] . "</td></tr>";
}
echo "</table>";

// editted: the last line was added
echo "</td></tr></table>";

?>

smhnaji
شنبه 26 بهمن 1387, 12:17 عصر
<?php

$start =1;//(int)$_GET['start'];

mysql_connect("localhost", "root", "") or die('err');
mysql_select_db("test");

$query = "SELECT `id` FROM `table` LIMIT $start, 100";
$result = mysql_query($query) or die(mysql_error());

echo "<table>";
$i = 0;
while ($row = mysql_fetch_array($result))
{
if ($i%2 == 0) // ??? ??? ???? 2 ???
echo "<tr><td>" . $row["id"] . "</td>";
else
echo "<td>" . $row["id"] . "</td></tr>";
$i++;
}
echo "</table>";
?>


موفق باشی :)