
28-07-2007, 21:24
|
|
|
|
חבר מתאריך: 17.05.05
הודעות: 7,321
|
|
קודם חשוב לי להגיד שאת השורה הבאה:
קוד PHP:
mysql_query("SET NAMES 'hebrew'");
אתה צריך לכתוב אחרי שאתה מתחבר למסד הנתונים, ואני לא בטוח אבל עדיף שזה יהיה גם אחרי בחירת ה-Database, כלומר צריך לכתוב כך:
קוד PHP:
$link = mysql_connect("$localhost" , "$Username" , "$Password") or die(mysql_error());
mysql_select_db("indexs",$link) or die(mysql_error());
mysql_query("SET NAMES 'hebrew'");
בנוגע לחלוקה לדפים, יש מדריך ב-FAQ. אם זה לא מספיק אנסה להסביר לך:
כדי לחלק לדפים צריך לקבל מספר נתונים: העמוד הנוכחי שנמצא בו הגולש באתר, מספר התוצאות הכלליות (כדי לכתוב למשתמש את העמודים שנשארו בשביל התוצאות) שיש עבור בקשת המשתמש, מספר תוצאות לעמוד יחיד.
את העמוד הנוכחי שנמצא בו הגולש אתה יכול לקבל באמצעות מתודת GET, כלומר מהקישור. אם הפרמטר ריק, או לא ערוך (isset), אתה יכול להסיק מכך שהערך שווה ל-1 (עמוד ראשון...).
את מספר התוצאות הכלליות אתה מקבל מהרצת הפונקציה-mysql_num_rows שאתה עושה ל-source שהוחזר מהרצת השאילתה ללא פיסקת ה-LIMIT (כי פיסקת ה-LIMIT מגבילה את מספר הרשומות).
ואת מספר התוצאות לעמוד, אתה עורך\מביא, אלא אם כן אתה נותן את זה אפשרות לגולש באתר ובמקרה זה אתה מקבל את הערך ממתודת ה-GET.
ואז:
קוד PHP:
$results_per_page = 10;
$current_page = intval($_GET['pageNum']);
$query= "SELECT 1 FROM search
WHERE good ='yes'
ORDER BY adv DESC ,vote DESC ,now_date DESC
";
$result = mysql_query($query, $link );
$total_results = mysql_num_rows($result);
$query= "SELECT * FROM search
WHERE good ='yes'
ORDER BY adv DESC ,vote DESC ,now_date DESC
LIMIT $current_page*$results_per_page , $results_per_page
";
$result = mysql_query($query, $link );
while ($row = mysql_fetch_array($result)) {
//...
}
עריכה:
ד"א, אני חושב ששימוש בפונקציה COUNT(*) של MySQL תיתן לך את סך כל הרשומות שהתקבלו מהשאילתא, ללא תלות ב-LIMIT. כלומר שה-LIMIT לא משפיע על הפונקציה COUNT, אבל אני לא בטוח בזה לגמרי.
נערך לאחרונה ע"י DCD בתאריך 28-07-2007 בשעה 21:32.
|