שלום...:) שאלה קטנטנה...!

alexparks

New member
שלום...:) שאלה קטנטנה...!

בניתי פורום (ב-PHP כמובן!) ואין לי מושג איך למנוע שינוי של גודל הטבלה במקרה של טקסט ארוך (מאוד!) :) 10x
 

alexparks

New member
בבקשה? מישהו?...

כבר חשבתי על סיקוונס מסויים שיוריד שורה אחרי 400 תווים למשל אבל כמובן שזה לא עזר במיוחד.... למישהו יש רעיון? זה ממש דחוף...
 
לדעתי הפתרון יהיה בצד לקוח

את הטקסט "תשפוך" ל <span> ובעזרת CSS תגביל אותו לגודל רצוי ותן scrollbar
 

alexparks

New member
תודה על הרעיון אבל...

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

yuvallb

New member
למה לא?

כל 400 תווים (או כל מספר תווים אחר) , תכניס "<br>" והשורה תקפוץ. מה הבעיה?
 

alexparks

New member
גם אני חשבתי ככה בהתחלה, אבל!

כשאתה מוריד שורה למשל, זה ממשיך לספור את התווים ואז יכול להווצר מצב שהמילה "שלום" תופיע כך: של ום ...... אז די ברור למה החלטתי לוותר על הסיפור...
 
עשה ירידת שורה לאחר X תווים בעזרת

עשה ירידת שורה לאחר X תווים בעזרת הפונקציה wordwrap. זאת פונקציה חכמה, שלא תקרע לך מילה באמצע. הקוד לדוגמא שהיה באתר php.net נחתך דווקא איפה שיש רווחים, לכן העתקתי אותו וניסיתי טקסט אחר (אל תשאלו מאיפה הבאתי את הטקסט):
$text = "I have one bucket, no I have two buckets, no I have three buckets."; $newtext = wordwrap($text, 20, "<br />\n"); echo $newtext;​
לפי הספירה שלי, המילה no המופיעה בפעם הראשונה צריכה להחתך באמצע, אבל אם תנסה את הקוד, תראה שהיא יורדת שורה. כך גם לגבי המילה buckets בהופעה השנייה שלה. אז תשתמש ב-worwrap לירידת שורה לאחר X תווים. לא הייתי ממליץ ש-X יהיה 400, אבל זה כמובן תלוי באורך הטבלה, סוג הגופן וגודלו.
 

alexparks

New member
נחמד, אבל... :)

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

הנה פתרון קצת מסובך, אבל הוא הפתרון הכי טוב שאני יכול לחשוב עליו כרגע: קודם כל תעשה explode למחרוזת לפי סימן רווח, כלומר את המחרוזת של ההודעה תחלק למערך של מילים, כאשר המילים מופרדות עם רווחים (נגיד שסימני פיסוק נחשבים חלק מהמילה). explode תחזיר לך מערך של מילים. הפונקציות count או sizeof יחזירו לך כמה איברים יש במערך. אז תעבור על המילים בעזרת לולאה, כאשר אתה בודק את אורכה של כל מילה. אם מילה היא ארוכה מ-X אז תוסיף לה בכל Y תווים <BR>. אחרי זה תחזיר את כל המחרוזות למחרוזת אחת, וניתן יהיה לעשות גם wordwrap, למרות שאם אתה רוצה לטפל רק במילים ארוכות, לא חייבים לעשות את זה. זהו, אתה יכול להדפיס את ההודעה. מקווה שהפתרון מובן. אם תשים לב, לפי הבדיקה שלך, אפילו מערכת תפוז לא הצליחה להתגבר במאה אחוזים על הבעיה הזאת. הבאג נראה אצלם יותר אלגנטי...
 

alexparks

New member
../images/Emo13.gif חחח...!

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

WebKiller

New member
חחחח.... פעם בניתי את מה שאתה אומר

אבל זה מיותר כי אין מילה ארוכה יותר מ50 תווים ואפילו פחות, אבל אתה יכול לשחק ב substr()
 
למעלה