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

הוסטס - פורום אחסון האתרים הגדול בישראל (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, אבל אם המטרה שלך היא לעשות טבלה, אז תשתמש בטבלה,
אל תנסה להמציא את הגלגל.
זה למה אמרתי לעשות עמודים, כדי לא להכביד על המשתמש, ולהציג כמות קטנה כל פעם

eLad 02-09-06 19:15

ציטוט:

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

בסדר, כתבתי שעובדים בדר"כ עם גדלים יחסיים

ציטוט:

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

אני לא מסכים איתך.

בדוגמא שהבחור שאל עם תמונות בשורות, זו דוגמא קלאסית לשימוש ב DIV.. אני חוסך לעצמי גם את ה IF שלך בתכנות וגם מיליון טאגיות TD ו TR בקוד מקור.

יש מקומות שבהם משתמשים בטבלה, זה לא אחד מהם.

omercnet 02-09-06 19:21

מה שאתה מקבל בסוף, זה טבלה עם תמונות, לא?
אז למה לא להשתמש בטבלה?

אם אתה משתמש בתאים, אז אתה חוסך רק את ה<table></table> ו<tr></tr>
אבל מצד שני, אתה צריך עוד קוד CSS בשביל זה.
כשעושים משהו ענק, כמו layout שלם, אז עדיף CSS,
זה חוסך הרבה יותר וזה הרבה יותר גמיש.

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

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

eLad 02-09-06 19:40

שוב פעם, לא אמרתי שכל דבר אפשר לפתור בלי טבלה וזה יהיה יעיל. פשוט במקרה הזה זו דוגמא קלאסית לשימוש ב BOX MODEL ו CSS נקי.

omercnet 02-09-06 19:43

אפשר להתווכח עוד שעות :)
you say tomato, I say tomato..

אני חושב שמי שיצר את הדיון כבר הבין את הפתרון שלו

Tomer 02-09-06 19:49

ציטוט:

נכתב במקור על ידי omercnet
אפשר להתווכח עוד שעות :)
you say tomato, I say tomato..

סלט ?

omercnet 02-09-06 19:50

הומור?
:)

Tomer 02-09-06 19:53

ציטוט:

נכתב במקור על ידי omercnet
הומור?
:)

טוב נפסיק עם הספאם ;)

פותח האשכול - קיבלת תשובה?

Art Watch 03-09-06 19:46

נראה לי שאני אלך על השיטה הכי קלה שי כאן :D:
קוד:

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


רק שאלה קטנה, כמה זה יראה מוזר,לא הבנתי מה זה ה %i שרשום שם, אם תוכלו להסביר :D

Elad-A 03-09-06 19:49

חח גיל זה בכלל קוד ASP..

Art Watch 03-09-06 19:58

:\ ביקשתי PHP :\. לא מובן?!

ובנוגע לדיווים, לא הבנתי בדיוק איך אם תוכלו להסביר לי בדיוק את הקטע, כי פשוט לא הבנתי :)

eLad 03-09-06 20:00

ציטוט:

נכתב במקור על ידי Gil & Ido
:\ ביקשתי PHP :\. לא מובן?!

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

ו % קיים גם ב PHP, זה פעולת המודולוס..

Art Watch 03-09-06 20:05

לא ביקשתי שתאכיל אותי עם כפית, פשוט לא הבנתי :|.
חשבתי שתוכלו לעזור!
אם אתם רוצים פעם הבאה אני לא אבקש כאן עזרה :\

sUP 03-09-06 20:37

נו מה אתה רוצה עומר עזר לך :|

meshuga 03-09-06 20:52

ציטוט:

נכתב במקור על ידי Gil & Ido
לא ביקשתי שתאכיל אותי עם כפית, פשוט לא הבנתי :|.
חשבתי שתוכלו לעזור!
אם אתם רוצים פעם הבאה אני לא אבקש כאן עזרה :\

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

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

בקשר לתשובה, פשוט במקום ה"Response.write" (שזה פקודת הוצאה לפלט בASP) תחליף לecho או print (שאני לא יודע אם אתה יודע, אבל אלה פקודות הוצאה לפלט בPHP).

Tomer 03-09-06 22:06

ציטוט:

נכתב במקור על ידי Gil & Ido
:\ ביקשתי PHP :\. לא מובן?!

תתחדש, קיבלת אזהרה אבל הנושא לא ינעל.

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


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

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