חלוקה לעמודים

bnayal

New member
חלוקה לעמודים

אני עכשיו בונה מערכת פורומים והבעיה הכי גדולה שלי היא שההודעות לא יהיה בדף אחד אלה יחולקו לעמודים אוטומטית, מישהו יכול לעזור לי עם זה?
 

idansof

New member
רמז - בSQL צריך לכלול

LIMIT start,delta כאשר:
start=(page-1)*page_length end=page_length​
 

אמיר ט

New member
חלוקה לעמודים

הרעיון יחסית פשוט, בתוך משפט ה SQL, בסופו אתה מוסיף LIMIT [row_start],[how_many_rows]1 כלומר אתה אומר לMYSQL (למשל...) מאיזה רשומה לתת לך X רשומות הלאה לדוגמא LIMIT 0,30 יתן לך את 30 ההודעות הראשונות שמסד הנתונים יוציא עוד דוגמא LIMIT 31, 30 יתן לך בעצם את הדף השני ובו גם יהיו 30 הודעות תוסיף גם איזה ORDER BY לפי התאריך ואתה מסודר. מה שניסה להסביר לך idansof זה את ה"נוסחא" לחשב איזה הודעות אתה צריך לשלוף עבור כל דף. יש מבין ? :)
 

N i X

New member
פעם הבאתי דוגמא לאיך שאני עשיתי

משהו דומה... אני יביא את זה שוב:
function print_news($sql_data, $database, $news_count, $page, $link) { global $news_per_page, $time_offset; while (list($headline, $item, $user, $TS) = mysql_fetch_row($sql_data)) { $date = gmdate("l F, d", $TS + $time_offset); $time = gmdate("H:i:s", $TS + $time_offset); $get_email = mysql_query("SELECT * FROM `newsflash_users` WHERE login='$user'", $database); list( , , $user_mail, ) = mysql_fetch_row($get_email); print("<div class=\"content\"><p dir=\"rtl\"><b>$headline</b> - <a href=\"mailto:$user_mail\">$user</a></a> :: $date $time \n</p>"); print("<p dir=rtl>$item</p>\n"); print("<a href=\"?action=all_msg&all_msg_user=$user\">כל הידיעות של המשתמש הזה</a> :: <a href=\"?action=view_info&view_user=$user\">ראה פרטי משתמש</a></div>\n"); } print("<center><p dir=rtl>עמודים: "); for ($i=1; $i <= ceil($news_count / $news_per_page); $i++) { if ($i != $page) { print("<a href=\"?page=$i&$link\">$i</a> "); } else { print("$i ");} } print("<br>\n"); print("סה\"כ ידיעות: $news_count<br></p></center>\n"); } $news_count = mysql_num_rows ( mysql_query("SELECT * FROM `newsflash` WHERE user='$all_msg_user' ORDER BY `timestamp`", $dbi) ); $result = mysql_query("SELECT * FROM `newsflash` WHERE user='$all_msg_user' ORDER BY `timestamp` DESC LIMIT $showed_msges, $news_per_page", $dbi); $link = "action=all_msg&all_msg_user=" . $all_msg_user; print_news($result, $dbi, $news_count, $page, $link);​
אולי זה יעזור לך...
 

N i X

New member
ייצא זוועה...

בכל מקרה, תיקון קטן, לפני שאני קורא לפנוקציה print_news זה הולך ככה (ולא כמו שרשום בהודעה הקודמת):
if (!isset($page)) { $page = 1; } $showed_msges = ($page - 1) * $news_per_page; $news_count = mysql_num_rows ( mysql_query("SELECT * FROM `newsflash` WHERE user='$all_msg_user' ORDER BY `timestamp`", $dbi) ); $result = mysql_query("SELECT * FROM `newsflash` WHERE user='$all_msg_user' ORDER BY `timestamp` DESC LIMIT $showed_msges, $news_per_page", $dbi); $link = "action=all_msg&all_msg_user=" . $all_msg_user; print_news($result, $dbi, $news_count, $page, $link);​
 

bnayal

New member
OK, עכשיו:

1. איך מחלקים משתנה ב10? 2. איך מעגלים כלפי מעלה? למשל: 2.56 > 3, 1.7 > 2, 23.2 > 24. אם תסבירו לי את זה אני חושב שאני יצליח!
 

bnayal

New member
רגע

עשיתי ככה:
LIMIT $firstmsg.20​
וקבעתי ש $firstmsg שווה 0 אז למה זה לא מראה לי שום הודעה?
 

bnayal

New member
לא משנה, הסתדרתי עם ה"רגע" אבל

אם השני שאלו לפני ה"רגע" לא....
 

bnayal

New member
תודה! עכשיו:

עכשיו יש לי את זה:
$msg = $db->query("SELECT id FROM msg WHERE forum_id = '".$forumid."'"); $msgs = $msg->numRows(); $pages = $msgs/30; $pages = ceil($pages);; echo $pages;​
זה נותן לי את מספר הדפים אבל איך אני עושה שיראו קישורים לכל העמודים ככה: 1,2,3,4,5,6 ולא את מספר העמודים?
 

bnayal

New member
...:::...

סליחה שאני בור אבל עדיין לא למדתי איך לעשות לולא... ( אני יודע פלאש שעד מה שאני יודע היא דומה מאוד לPHP) בבקשה תסביר לי איך עושים זאת או שתביא לי מדריך...
 

bnayal

New member
אוקיי, עכשיו:

עשיתי ככה:
$msg = $db->query("SELECT id FROM msg WHERE forum_id = '".$forumid."'"); $msgs = $msg->numRows(); $pages = $msgs/30; $pages = ceil($pages);; $i=1; while ($i<=$pages) { echo $i; $i++; }​
הכל עובד טוב אבל המחשב כל הזמן חושב! למה? זה עושה את מה שרציתי אבל המחשב תמיד חושב....
 

bnayal

New member
לא משנה, סידרתי היתה לי בעיה אחרת..

תודה רבה לכם! עזרתם לי מאוד!
 

bnayal

New member
צץ משהו חדש ../images/Emo4.gif

מכיוון שאי אפשר שתופיע רשימה מלא של העמודים אני רוצה לעשות שזה המעבר בין העמודים יראה משהו כזה: 1 2 3 4 5 6 7 8 ...30 השלוש נקודות זה כי לא היה לי כח זה כי אני רוצה שיוכלו לגשת ל6 עמודים הבאים ואז נגיד עם לוחצים על עמוד 2 אז צץ כבר עמוד 9 ברשימה ו1 מעלם ועם לוחצים 8 מופיעים עוד 8 עמודים הבאים... מישהו יודע? אפשר לראות את זה בפורומים של fresh.co.il אם אני יסתדר עם העמודים האלו אני חושב שאני לא יהיה צריך עוד עזרה... (אני לפחות מקווה)
 
למעלה