שאלה

שאלה

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

shanor

New member
מממ...

ראשית, כדאי מאוד להתחיל בזה שתגביל את גודל הרשומה שאתה מאפשר להעביר מהלקוח שלך אל מאגר הנתונים: 1. בעזרת קצת JavaScript, פשוט תבדוק את הגודל של הרשומה שאתה שולח מטופס ה- HTML שלך (ותגביל את הטופס בעזרת MAXLENGTH). 2. בתוך ה- PHP תבדוק את אורך המשתנה שנשלח אליך מהטופס. 3. תגביל במאגר הנתונים שלך את גודל השדה - למשל אם הוא VARCHAR אז שים את ה-LENGTH שלו על הגודל המקסימלי הרצוי לך. עכשיו, אם יש לך כמה רשומות ואתה רוצה לבדוק את הגודל שלהן איך לעשות את זה בתור שאילתה שתברר את הגודל של הרשומה... שאלה יפה, אני צריך לחקור קצת את הנושא, אבל בגדול מה שאני הייתי עושה הוא להוציא את כל הרשומות של אותו משתמש ופשוט לבדוק את הגודל, ואז לאפשר כתיבה של משהו בגודל הנותר (סך הכל פחות מה שיש = כמה שמותר לכתוב עוד). מקווה שזה עוזר. בהצלחה, שנאור.
 
אוקיי

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

shanor

New member
מממ...

אם אתה מגביל את הטופס שלך על ידי MAXLENGTH, זה יוצר הגבלה מסויימת אבל זה עדיין לא זה. אישית אני עדיין אוהב לבדוק כל טופס וטופס ברגע לפני השליחה על ידי שימוש ב- ONSUBMIT בתוך תגית ה- FORM, ולבדוק שוב שכל הטופס הוא בדיוק כמו שאני מצפה שהוא יהיה. בנוסף לזה שימוש ב- MAXLENGTH לא אומר שאתה לא צריך לבדוק שוב את הנתונים בתוך קובץ ה- PHP שלך בדיוק לפני שאתה מכניס אותו לתוך ה- MYSQL וזה מהסיבה הפשוטה שדיי בקלות אפשר ליצור מצב שבו שולחים אליך נתונים ארוכים ואו כאלו שלא התכוונת לקבל (כמו טקסט במקום מספרים וכו'). בקיצור לא משנה מה תבדוק בתוך ה-PHP את הנתונים שלך. עכשיו אני צריך שתסביר לי משהו מה הכוונה ב"אבל אני התכוונתי לגודל רשומה בבתים, ולא מבחינת אורך"? בהנחה שאתה משתמש בתווים רגילים של אותיות מספרים וסימנים נראים רגילים, אורך הרשומה שלך ב-MAXLENGTH הוא גם גודל הרשומה בביתים (BYTE), משמע אם הגבלת את ה- MAXLENGTH שלך ל-10 תויים האורך המקסימלי של הטקסט הוא 10 תווים שזה שווה בדיוק ל-10 בייט. כל אות היא תו שמהווה בייט אחד. אם אתה רוצה לדעת במדוייק אז שוב תלוי איפה אתה רוצה לבדוק את זה. אם בצד לקוח (JAVASCRIPT) אז צריך להשתמש ב- Length יחד עם האובייקט שאותו אתה בודק, אם בצד שרת (PHP) תבדוק בעזרת הפונקציות של STRING את האורך של המשתנה. האורך שלו הוא ברוב המקרים גם הגודל שלו בביתים (פרט למקרים מסויימים של תווים מיוחדים). שנאור.
 
אאאאההההההה

לא ידעתי שגודל תו הוא בית אחד... שפות התכנות שאני מכיר הן ישנות (רק C, אסמבלי וקצת C++), ובהן גודל תו הוא באמת בית, אבל חשבתי שזה השתנה, כי יש היום הרבה יותר תווים. אז תודה. אגב, זה לא טוב לעשות MAXLENGTH שיהיה בגודל המדוייק של השדה, כי אני רוצה להשתמש בפונקציית trim, אתה בטח מבין למה. תודה על העזרה
 
למעלה