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

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

Art Watch 02-09-06 14:00

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

אתה יכולים לעזור?

mlnn 02-09-06 14:08

לא מובן מה הבעיה.. תגדיר כמה שאתה רוצה, אתה בונה תמערכת לא?

Art Watch 02-09-06 14:31

כה אני בונה את המערכת, אבל אני צריך עזרה עם קודים :\.
ככה:
אני רוצה שבעמוד צפייה בתמונות יהיה 5 תמונות מוקטנות בכל שורה, אז אם אני לא טועה צריך לעשות לולאת FOR שתגדיר לו שיציג בשורה אחת, רק 5 תמונות ואז שירד שורה.
אתה יכול לעזור או מישהו יכול לעזור?

mlnn 02-09-06 15:32

תשתמש ב LIMIT

eLad 02-09-06 17:16

אפשרות אחת:

PHP קוד:

if (i%5==0)
 
Response.write("</tr><tr>"); 

זאת אומרת, כשהוא משלים 5 בשורה, הוא סוגר אותה ופותח שורה חדשה

אפשרות שנייה:

כל אחד מהם אתה שם בתוך DIV שהרוחב שלו הוא חמישית מרוחב ה DIV המכליל ולכן ייכנסו כל פעם רק 5, השאר יירדו שורה.

omercnet 02-09-06 17:27

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

המטרה שלנו היא לעשות כמה שפחות שאילתות ע"מ ליעל את הקוד שלנו בצורה המקסימלית.

ההצעה שלי:
PHP קוד:

<?

define
('PICS_PER_ROW'5);
$iPics 0;

print(
"<table>\n");

$qPictures "SELECT id,name FROM `images`";

while ( 
$sPictures mysql_fetch_assoc($qPictures) ) {
    
    
/* Open a TR if it's a new row */
    
if ($iPics == 0) { print('<tr>'); }

    
$iPics++;
    print(
'<td><a href="pics.php?t=full&id={$sPictures[id]}"><img src="thumbs\{$sPictures[name]}_t.jpg"></a></td>');

    if ( 
PICS_PER_ROW == $iPics) { /* Close TR and reset counter if reached the limit */
        
print('</tr>\n');
        
$iPics 0;
    }
}

/* Close the TR if there wasn't enough pics in the last row. */
if ( $iPics PICS_PER_ROW ) { print('</tr>'); }

print(
'</table>\n');
?>

אם אתה רוצה להפריד את זה לעמודים, למשל לא יותר מ50 תמונות בעמוד, אז תוסיף LIMIT לשאילתא ותפצל את זה לעמודים.

בהצלחה

omercnet 02-09-06 17:28

ציטוט:

נכתב במקור על ידי eLad
אפשרות אחת:
כל אחד מהם אתה שם בתוך DIV שהרוחב שלו הוא חמישית מרוחב ה DIV המכליל ולכן ייכנסו כל פעם רק 5, השאר יירדו שורה.

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

eLad 02-09-06 17:30

ציטוט:

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

המטרה שלנו היא לעשות כמה שפחות שאילתות ע"מ ליעל את הקוד שלנו בצורה המקסימלית.

יעילות היא בפירוש לא עבודה עם טבלאות. כשיש לך להציג למשל 100 תמונות בעמוד, המערכת קודם תצטרך לבנות את הטבלה (עד שתמצא את </table>) ורק אז היא תוצג.

השיטה היעילה היא השיטה השנייה שציינתי, עבודה עם DIVים -

כל תמונה שמים ב DIV משלה, כך:
PHP קוד:

<div class="some-class"><img src="pic.jpg" alt="" /></div

כש some-class מקבל רוחב של: הרוחב של ה DIV המכליל חלקי מס' התמונות הרצוייות בשורה.

eLad 02-09-06 17:31

ציטוט:

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

לא

אם אתה נותן ערכים קבועים ב PX או EM, זה ייראה אותו דבר בכל הרזולוציות.
אתה יכול גם להשתמש באחוזים וזה ייראה "בהתאמה" בשאר הרזולוציות

omercnet 02-09-06 17:37

ציטוט:

נכתב במקור על ידי eLad
לא

אם אתה נותן ערכים קבועים ב PX או EM, זה ייראה אותו דבר בכל הרזולוציות.
אתה יכול גם להשתמש באחוזים וזה ייראה "בהתאמה" בשאר הרזולוציות

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



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


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

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