הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   עזרה, איך לעשות בחירה רנדומלית מהמסד אבל ביחס מסויים (https://hosts.co.il/forums/showthread.php?t=58201)

al_n 21-12-07 23:39

עזרה, איך לעשות בחירה רנדומלית מהמסד אבל ביחס מסויים
 
נגיד יש לי טבלה של פרסומות
איך אני מוציא פרסומות רנדומליות אבל שאחת תופיע יותר

נגיד אני צריך לקבוע שפרסומת של האתר X תופיע 1 ל 4 פעמים...

Labs 21-12-07 23:50

לא הכי יעיל
אבל אתה יכול לעשות משהו כזה
לספור כמה שדות יש במסד
להגריל מספר מ1 - (מספר השדות)
לעשות FATCH ולהריץ אותו עד כמה שהמספר הוגרל
ולהוציא ככה את הנתונים
לגבי היחס פשוט שים יותר שורות של השורה הרצוייה

DavidBD 22-12-07 00:47

מתוך מערכת באנרים שאני בניתי:
PHP קוד:

<?php
    
include("connect.php");
    
$show mysql_query("SELECT ID, image, alt FROM banners WHERE inout='1' order by ID") or die(mysql_error());
    
$rows mysql_num_rows($show);
    
$randnum rand(1,$rows);
    
$i 1;
    while (
$res mysql_fetch_array($show)) {
        
$banner{$i} = '<a href="http://www.domain.com/goto.php?id=' $res['ID'] . '" target="_blank"><img src="' $res['image'] . '"
            alt="' 
$res['alt'] . '" border="0" /></a>';
        
$i++;
    }
    
$showbanner $banner{$randnum};
?>


Kfir.G 22-12-07 01:34

ציטוט:

נכתב במקור על ידי al_n (פרסם 593596)
נגיד יש לי טבלה של פרסומות
איך אני מוציא פרסומות רנדומליות אבל שאחת תופיע יותר

נגיד אני צריך לקבוע שפרסומת של האתר X תופיע 1 ל 4 פעמים...

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

אני די בטוח שאפשר לחשב את זה בקלות בעזרת הסתברות אבל מאחר שעדיין לא למדתי את הנושא אני לא יכול לתת לך את המשוואה ;P

מקווה שעזרתי,
כפיר

Striker 22-12-07 12:21

אתה יכול לעשות לאחר השאילתה של השליפה :

PHP קוד:

<?php
$times 
2;
while (
$times 2)
{
if (
$ad != "הפרסומת הרצוייה")
{
חזרה על הפעולה של השליפה
}
$times++;
}
?>



כל הזמנים הם GMT +2. הזמן כעת הוא 04:21.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ