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

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

Alter 09-05-06 21:33

תמונות רנדומליות בדף אחד
 
שלום לכולם,
אני מעוניין להכניס לדף מסויים כמה תמונות אשר יתחלפו רנדומלית.
יצאתי מערך שמרכיב את כל התמונות ועושה שליפה רנדומלית פעם אחד, וגם מדפיס פעם אחת.
השאלה איך אני יכול לעשות את אותה הפעולה 5 פעמים, אך שאף תמונה לא תופיע פעמיים באותו הדף?

תודה מראש,
רון אלטר.

RS324 09-05-06 21:37

מבחינה רעיונית - אחרי שליפה מהמערך אתה מקבל את ה KEY ואת הערך
הדרך הכי פשוטה שאני חושב עליה היא ככה
נגיד שהמערך שלך נראה ככה

arry[0] = img1

וכככה עד 50 תמונות

אז כשאתה שולף מיד אחרי השליפה תעשה
unset[array[$key]

ואז הוא כביכול מוחק את התמונה מהמערך ואז היא לא תוכל להבחר שוב

Alter 09-05-06 21:53

זה הסקריפט שלי כרגע, תוכל לעזור לי להבין איך אני משלב את זה?
PHP קוד:

$file_names = array(
"icon1.jpg" => 1,
"icon2.jpg" => 2,
"icon3.jpg" => 3,
"icon4.jpg" => 4,
"icon5.jpg" => 5,
"icon6.jpg" => 6,
"icon7.jpg" => 7,
"icon8.jpg" => 8,
"icon9.jpg" => 9,
"icon10.jpg" => 10,
"icon11.jpg" => 11,
"icon12.jpg" => 12
);

$random_image array_rand($file_names1);

echo 
"<img src='images/icons/" $random_image "' />"


בניה 09-05-06 22:26

ב"ה
הינה :)
PHP קוד:

<?php
$file_names
[]="icon1.jpg";
$file_names[]="icon2.jpg";
$file_names[]="icon3.jpg";
$file_names[]="icon4.jpg";
$file_names[]="icon5.jpg";
$file_names[]="icon6.jpg";
$file_names[]="icon7.jpg";
$file_names[]="icon8.jpg";
$file_names[]="icon9.jpg";
$file_names[]="icon10.jpg";
$file_names[]="icon11.jpg";
$file_names[]="icon12.jpg";

for(
$i=1;$i<=5;$i++)
    {
$random_image=array_rand($file_names);
echo 
"<img src='images/icons/" $file_names[$random_image] . "' />\n";
unset(
$file_names[$random_image]);
    }
?>


Alter 09-05-06 22:39

הסתדרתי, דרש קצת שינוי קוד, אבל עבד.
תודה בניה!

Tomer 09-05-06 22:44

ציטוט:

נכתב במקור על ידי Alter
מצויין, אבל מה עושים שהם לא ברצף ובמקומות שונים בדף? =]

PHP קוד:

 <?php 
$file_names
[]="icon1.jpg"
$file_names[]="icon2.jpg"
$file_names[]="icon3.jpg"
$file_names[]="icon4.jpg"
$file_names[]="icon5.jpg"
$file_names[]="icon6.jpg"
$file_names[]="icon7.jpg"
$file_names[]="icon8.jpg"
$file_names[]="icon9.jpg"
$file_names[]="icon10.jpg"
$file_names[]="icon11.jpg"
$file_names[]="icon12.jpg"

for(
$i=1;$i<=5;$i++) 
    { 
$random_image=array_rand($file_names); 
$image[] =  "<img src='images/icons/" $file_names[$random_image] . "' />\n"
unset(
$file_names[$random_image]); 
    } 
?>

ואז אתה מציג:
$image[0] תמונה ראשונה
$image[1] שניה וכד'

אני מקווה שיעבוד.

בניה 09-05-06 22:45

ב"ה

הפוקנציה getimage() תחזיר כל פעם שם קובץ אחר, ברגע שתקרא לה מספר פעמים שיותר ממספר התמונות אז תהיה בעיה אבל אתה צריך רק 5 אז זה מעולה.
PHP קוד:

<?php
$file_names
[]="icon1.jpg";
$file_names[]="icon2.jpg";
$file_names[]="icon3.jpg";
$file_names[]="icon4.jpg";
$file_names[]="icon5.jpg";
$file_names[]="icon6.jpg";
$file_names[]="icon7.jpg";
$file_names[]="icon8.jpg";
$file_names[]="icon9.jpg";
$file_names[]="icon10.jpg";
$file_names[]="icon11.jpg";
$file_names[]="icon12.jpg";
function 
getimage()
    {
    global 
$file_names;
    
$random_image=array_rand($file_names);
    return 
$file_names[$random_image];
    unset(
$file_names[$random_image]);
    }
?>


Alter 09-05-06 22:48

ציטוט:

נכתב במקור על ידי בניה
ב"ה

הפוקנציה getimage() תחזיר כל פעם שם קובץ אחר, ברגע שתקרא לה מספר פעמים שיותר ממספר התמונות אז תהיה בעיה אבל אתה צריך רק 5 אז זה מעולה.
PHP קוד:

<?php
$file_names
[]="icon1.jpg";
$file_names[]="icon2.jpg";
$file_names[]="icon3.jpg";
$file_names[]="icon4.jpg";
$file_names[]="icon5.jpg";
$file_names[]="icon6.jpg";
$file_names[]="icon7.jpg";
$file_names[]="icon8.jpg";
$file_names[]="icon9.jpg";
$file_names[]="icon10.jpg";
$file_names[]="icon11.jpg";
$file_names[]="icon12.jpg";
function 
getimage()
    {
    global 
$file_names;
    
$random_image=array_rand($file_names);
    return 
$file_names[$random_image];
    unset(
$file_names[$random_image]);
    }
?>


מצויין, אני אבדוק גם את זה ויחזור אליך |winky|

בניה 09-05-06 22:51

ב"ה


שלי לא עובד טוב|: .
נראה לי שזה בגלל שזה בתוך פוקנציה אפשר לסדר אבל כבר עדיף שתשתמש בזה של Atom-Bomb

RS324 09-05-06 23:01

בעיקרון יש לי פתרון יותר טוב... תעשה כמו ARRAY שהוא DEAFULT
ואז כשנגמרות התמונות תקרא לה מההתחלה

תן לי כמה דקות אני אכתוב לך את זה

Alter 09-05-06 23:07

אממ מבחינתי הגעתי לפיתרון..
PHP קוד:

$file_names[]="icon1.jpg";
$file_names[]="icon2.jpg";
$file_names[]="icon3.jpg";
$file_names[]="icon4.jpg";
$file_names[]="icon5.jpg";
$file_names[]="icon6.jpg";
$file_names[]="icon7.jpg";
$file_names[]="icon8.jpg";
$file_names[]="icon9.jpg";
$file_names[]="icon10.jpg";
$file_names[]="icon11.jpg";
$file_names[]="icon12.jpg"
            
$random_image=array_rand($file_names);
            echo 
"<img src='images/icons/" $file_names[$random_image] . "' border='0' width='24' height='24' />\n";
            unset(
$file_names[$random_image]); 

את השלוש שורות האחרונות הצבתי בכל מקום שאני צריך באתר.
עובד מצויין ובלי פאשלות.
תודה לכל מי שעזר!

RS324 09-05-06 23:11

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

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


* לא ניסיתי את הקוד *
אני לא חושב שיש דרך יותר טובה לעשות את זה

תהנה

PHP קוד:

function fetch_image_array()
{
    
$file_names[]="icon1.jpg";
    
$file_names[]="icon2.jpg";
    
$file_names[]="icon3.jpg";
    
$file_names[]="icon4.jpg";
    
$file_names[]="icon5.jpg";
    
$file_names[]="icon6.jpg";
    
$file_names[]="icon7.jpg";
    
$file_names[]="icon8.jpg";
    
$file_names[]="icon9.jpg";
    
$file_names[]="icon10.jpg";
    
$file_names[]="icon11.jpg";
    
$file_names[]="icon12.jpg"
}

function 
getimage($array)
{
    
// next line checks if its not array or if array empty if so, get deafult images as array
    
if ((!is_array($array)) OR (sizeof($array) == 0))
    {
        
$array fetch_image_array();
    }
    
$random_image=array_rand($array);
     unset(
$array[$random_image]); 
     
     return array(
     
'myimage' =>$random_image,
     
'oldarray' =>$array
     
);
     
    
}
  
// get the orginal array  
  
$imagefiles =  fetch_image_array();
  
  
// you should do the next lines in for loop
  
  
$info getimage($imagefiles);
  
  
$myimage $info['myimage'];
  
  
$imagefiles $info['oldarray']; // get back the array without the image 


בניה 09-05-06 23:16

^^^
ב"ה


תהייה בעיה דומה לשלי ואפילו יותר קריטית, המערך מוגדר בתוך פונקציה ככה שהוא לא זמין למה שבחוץ.
לא נראה לי שבמקרה שלו צריך להסתבך כ"כ שישתמש בקוד של Atom-Bomb וזהו.

RS324 09-05-06 23:32

זה כי שחכתי להחזיר את המערך בתוך הפונקציה

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

הנה הפונקציה המתוקנת

PHP קוד:

function fetch_image_array()
{
    
$file_names[]="icon1.jpg";
    
$file_names[]="icon2.jpg";
    
$file_names[]="icon3.jpg";
    
$file_names[]="icon4.jpg";
    
$file_names[]="icon5.jpg";
    
$file_names[]="icon6.jpg";
    
$file_names[]="icon7.jpg";
    
$file_names[]="icon8.jpg";
    
$file_names[]="icon9.jpg";
    
$file_names[]="icon10.jpg";
    
$file_names[]="icon11.jpg";
    
$file_names[]="icon12.jpg"
    
    return 
$file_names;


השורה :

// get the orginal array
$imagefiles = fetch_image_array();

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

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


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

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