לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #5  
ישן 09-01-2007, 20:18
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
חילוק תוצאות שאילתה לעמודים
בתגובה להודעה מספר 4 שנכתבה על ידי Excaliber שמתחילה ב "[QUOTE=tnadav1]אתה יכול לשלוף..."

קודם כל יש לך באשכול ה-FAQ את התגובה של dead על חילוק תוצאות שאילתה לעמודים:
http://www.fresh.co.il/vBulletin/sh...82&postcount=12.

קראתי בריפרוף ואני לא בטוח שזה הצורה הכי יעילה, אז בכל מקרה אביא לך דרך אחרת:

לפני ההסבר, אראה לך את הקוד בשלמותו (העתק את הקוד ל-Notepad לצפייה נוחה יותר):

קוד PHP:
 $per_page 2;

$_GET['pg'] = (!$_GET['pg'] || !is_numeric($_GET['pg']) || $_GET['pg']<0) ? : (intval($_GET['pg'])*$per_page); # Ensuring a numeric & logical $_GET['pg']

$query mysql_query("SELECT * FROM tbl LIMIT ".$_GET['pg'].",".$per_page);
while(
$fetch mysql_fetch_array($query))
{
    
# Act here



(אני לא בטוח, אבל יש סיכוי שיש טעות מסויימת בקוד כי כתבתי אותו הרגע. מקסימום תבדוק אם זה עובד...)

הקוד הנ"ל עובד לפי קבלת המידע של מספר העמוד ממשתנה שנמצא במתודת ה-GET. לדוגמא, אם מכניסים את המספר 7 במשתנה שבמתודת ה-GET אז זה יביא את עמוד מספר 7.
יש לציין שקוד זה רק מביא את התוצאות לכל עמוד, ולא נותן קישורים לעמודים אחרים.

הסבר השורות:
קוד PHP:
 $per_page 2

הכלתי במשתנה אחד את מספר התוצאות לעמוד כדי שיהיה יותר קל אח"כ גם לשנות את התוצאות...את מספר התוצאות לעמוד אפשר גם כמובן לקבל ממשתנה ממתודת ה-GET, ממסד הנתונים ודברים דומים.

קוד PHP:
 $_GET['pg'] = (!$_GET['pg'] || !is_numeric($_GET['pg']) || $_GET['pg']<0) ? : (intval($_GET['pg'])*$per_page); # Ensuring a numeric & logical $_GET['pg'] 


כאן ווידאתי שהמשתנה שבמתודת הGET הוא באמת מספר טיבעי (לא עשרוני וחיובי) או אפס. זה רק לצורך אבטחת השאילתה ולוודא שלא יהיו תקלות מסויימות...

קוד PHP:
 $query mysql_query("SELECT * FROM tbl LIMIT ".$_GET['pg'].",".$per_page); 


הרצתי שאילתה עם פיסקת LIMIT כדי לקבל רק את הרשומות השייכות לעמוד המבוקש לפי המשתנה של העמוד שבמתודת GET.

קוד PHP:
 while($fetch mysql_fetch_array($query))
{
    
# Act here



אני מקבל את הנתונים של הרצת השאילתה ומתחיל לעבוד איתם...

זהו...בהצלחה
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #10  
ישן 10-01-2007, 13:40
צלמית המשתמש של tnadav1
  משתמש זכר tnadav1 tnadav1 אינו מחובר  
 
חבר מתאריך: 02.10.05
הודעות: 2,355
שלח הודעה דרך MSN אל tnadav1
בתגובה להודעה מספר 9 שנכתבה על ידי DCD שמתחילה ב "כן אוכל לפרט (: יש כאלו..."

אתה מתאר דרך מסורבלת יחסית.. אפשר לחסוך את כל זה אם אנחנו שולפים את כל הנתונים מהמסד, בלי LIMIT, ושמים את כל המידע ב- DIV בלתי נראה.
אחר-כך, אנחנו לוקחים את המידע בעזרת JS, ומכניסים את התוצאות והפרטים של התוצאות לתוך מערך.
אחרי שיש לנו ב- JS מערך, אנחנו מכניסים ל- div שאמור להכיל את התוצאות, אבל לא את כולם, פה בעצם אנחנו מגבילים את התוצאות ושמרים בתוך משתנה באיזה "דף" אנחנו, עכשיו יש לנו כפתורים למשל כפתור שיעביר אותנו לדף 9, זה יהיה משהו כזה:
קוד:
<input type="button" onclick="flipPage(9)" value=9 />

וב- JS
קוד PHP:
 function flipPage(toPage)
{
    
document.getElementById("resDiv").innerHTML '';
    for(
0i  10i++)
    {
        
document.getElementById("qRes").innerHTML .= qRes[toPage +i]['title'];    
        
//i don't really know what do you want to do, so here you add what you want...
    
}


וככה בערך אתה עושה חלוקה לדפים עם JS
_____________________________________


תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #13  
ישן 14-01-2007, 08:47
צלמית המשתמש של fat fish
  fat fish fat fish אינו מחובר  
 
חבר מתאריך: 20.06.03
הודעות: 5,616
שוב??? הנה פתרון... [רנדומליות]
בתגובה להודעה מספר 1 שנכתבה על ידי Excaliber שמתחילה ב "קבלת רשומות מדאטאבייס באופן רנדומלי בנוסף לחלוקת עמודים, כיצד?"

קודם כל כשאני רואה קוד כזה אני חוטף צמרמורת:
קוד PHP:
 $query mysql_query("SELECT * FROM tbl LIMIT ".$_GET['pg'].",".$per_page); 

מי שרוצה לשמור על בטחון המערכת שלו - ל-ע-ו-ל-ם לא יכניס ככה משתנה לשאילתת SQL.

עכשיו תשובה בנוגע לנושא הרנדומליות
אני מניח שיש איזה שדה אינדקס בטבלה הנדונה (חייב להיות כזה, מומלץ שיהיה auto inc. ומפתח ראשי) - מכן ועד רנדומליות הדרך מאוד קצרה, מאחר ו-MySql מספק פונקציונליות עבור רנדומליות:
קוד PHP:
 $sql 'SELECT a,b FROM table_name WHERE x=cond ORDER BY RAND() LIMIT 5'

כמובן, שהאפשרויות where ו-limit הן אופציונליות בדיוק כמו בכל שאילתת sql.

בהצלחה,
_____________________________________
[ זיו ]
[ fat fish ]

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #14  
ישן 14-01-2007, 15:58
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
בתגובה להודעה מספר 13 שנכתבה על ידי fat fish שמתחילה ב "שוב??? הנה פתרון... [רנדומליות]"

הסתכלתי על התגובה שלך והתלבטתי אם להגיב (בסוף אתה כנראה יודע מה החלטתי)

דבר ראשון, אתה יכול לראות לפני השורה הלא מאובטחת, שכתבתי שורה שגם מאבטחת את המשתנה שהיצגת:

קוד PHP:
 $_GET['pg'] = (!$_GET['pg'] || !is_numeric($_GET['pg']) || $_GET['pg']<0) ? : (intval($_GET['pg'])*$per_page); 


דבר שני, אני לא אתחיל להוציא לו פה פונקציות לאבטחת משתנים ממתודת GET ו\או POST.
זה התפקיד שלו. אני רק כותב את הבסיס

היית אמור להבין את זה...

עריכה:
שמתי לב שלא קראת כמו שצריך, טעויות שקורות גם לי אני מודה
שים לב שהמשתמש מבקש תוצאה רנדומלית בכל פעם, אבל חשוב שהתוצאות שהמשתמש קיבל בעבר לא יתקבלו בעתיד\הווה (דפים נוכחיים או דפים בעתיד).
לכן מה שצריך לעשות, לפי מה שהצעתי, זה לשמור את מספרי ה-ID של התמונות במקום מסויים כמו מסד הנתונים.

נערך לאחרונה ע"י DCD בתאריך 14-01-2007 בשעה 16:01.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 16:08

הדף נוצר ב 0.05 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר