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

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



  #1  
ישן 14-06-2014, 04:56
  C-M-S.co.il C-M-S.co.il אינו מחובר  
 
חבר מתאריך: 23.04.10
הודעות: 18
באנרים מתחלפים מבוסס מסד נתונים

אהלן,
אני מעוניין ליצור באנרים מתחלפים על סמך מסד נתונים.
הטבלה שלי נקראת banner ומכילה את הערכים הבאים:
name, picture, code, link, id

השימוש הוא בעיקרון בפונקציה rand אותה הרצתי על ה-id, אך הבעיה החלה כאשר מחקתי באנרים מהמסד נתונים ואז לא כל מספר הוא אכן ID פעיל נניח שהטבלה שלי הייתה נראת כך:
קוד:
niv (name) niv.png (picture) null (code) http://www.phpuide.co.il (link) 1 (id) niv (name) niv.png (picture) null (code) http://www.phpuide.co.il (link) 2 (id) niv (name) niv.png (picture) null (code) http://www.phpuide.co.il (link) 3 (id)


לאחר מחיקת באנר מספר id 2 הטבלה נראת כך:
קוד:
niv (name) niv.png (picture) null (code) http://www.phpuide.co.il (link) 1 (id) niv (name) niv.png (picture) null (code) http://www.phpuide.co.il (link) 3 (id)


כלומר בהנחה ויוצא לי rand = 2 אין ערך כזה. ניסיתי לפתור את זה באמצעות הקוד הבא, אך הבעיה שמדי פעם הוא מחזיר לי null, מדוע?
קוד:
$query = mysql_query("select * from banner"); $array = array(); while($row = mysql_fetch_array($query)) { $array[] = $row['id']; } $narray = count($array); $rand = rand($array[0],$narray); $id = $array[$rand]; $new_query = mysql_query("select * from banner where `id`='{$id}'"); $new_row = mysql_fetch_array($new_query); exit( var_dump($id));
_____________________________________
כל עוד הנר דולק, אפשר לתקן

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 14-06-2014, 10:49
צלמית המשתמש של MatiM
  משתמש זכר MatiM MatiM אינו מחובר  
 
חבר מתאריך: 12.04.06
הודעות: 2,021
שלח הודעה דרך MSN אל MatiM
בתגובה להודעה מספר 1 שנכתבה על ידי C-M-S.co.il שמתחילה ב "באנרים מתחלפים מבוסס מסד נתונים"

ואו עירבבת כ"כ הרבה דברים בתוך קוד כל כך קצר.


  1. אם בחרת להשתמש בפונקציה rand בPHP ולהריץ אותה על מערך, אז תעבוד לפי התאים של המערך ואז האידים בכלל לא משנים לך.
    id 0 = האיבר הראשון במערך [בדוגמא זה יהיה הבאנר עם אידי 1 במסד]
    id 1 = האיבר השני במערך [בדוגמא לאחר המחיקה זה יהיה הבאנר עם אידי 3 במסד]
    וזהו..אין יותר איברים.
    והפונקציה של הrand תיראה כך:
    קוד PHP:
     rand(0,count($array) - 1); 
  2. מוחזר לך null כי count מחזיר את מספר האיברים במערך = תראה בדוגמא למעלה, אם יש 2 איברים, האיבר השני הוא מספר 1 ! ולכן, כשיוצא בrand המספר 2, הוא לא קיים במערך.
  3. אם יש לך את כל המידע של הבנארים אחרי השאילתה הראשונה, אין צורך להריץ שאילתה נוספת, כי המידע כבר קיים.
וככה אני הייתי עושה את זה:


קוד PHP:
 $query mysql_query("SELECT * FROM `banner` ORDER BY RAND() LIMIT 1");
$banner mysql_fetch_array($query);

echo 
"now shwing banner #" $banner['id']; 


* צריך להוסיף בדיקה שאכן חוזרות שורות (אם לדוגמא מחקת את כל הבאנרים והמסד ריק) וכדומה...אבל זה הקוד הבסיסי שאתה צריך.
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה


נערך לאחרונה ע"י MatiM בתאריך 14-06-2014 בשעה 10:51.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

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

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

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

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



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

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

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

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