![]() |
בעיה עם מחלקות בPHP
או קי בניתי את המחלקה הפשוטה הזאת לטיפול במסדי נתונים לפני 10 דקות הכל עבד מעולה פתאום זה לא :S
מה הבעיה?? יש לי 3 קבצים אחד מכיל את המחלקה, database.php PHP קוד:
PHP קוד:
PHP קוד:
|
תוריד את ה@ אתה לא צריך אותם.
ומה הכוונה לא עובד? וגם עדיף להשתמש ב mysql_fetch_assoc ולא array |
קודם כל למה אתה משתמש ב ee::ee זה כבר ישן משתמשים ב new כדי לאתחל..
והנה מחלקה לדוגמא שתראה איך זה עובד: PHP קוד:
|
בניה אני עובד על מחלקה והיא תכיל את רוב הפונקציות האלו למשחק עם המסד נתונים נתתי את הפונקציה הזאת לדוגמא
ואני עובד עם @ כי אם תשים לב במקרה שיש בעיה נפלטת הודעת שגיאה מוגדרת מראש של המערכת אני מעדיף לעבוד ככה מאחר ומדובר במערכת שעוברת ללקוח ואני לא יכול שפתאום ירוצו לי שגיאות לא קשורות.... (וכן ניסיתי להוריד את כולם ולראות מה הבעיה אבל זה לא כל כך עזר) אלעד השיטה שלך היא בערך השיטה המקורית שלי פשוט חשבתי לחסוך קוד ולהפוך אותו ליותר אסטתי על ידי הכנסה של פונקצית השאילתה ישר לתוך הפונקציה של הfetch array ואלעד גם עם כל מה שאמרת: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /****/***/**********/***/classes/database.php on line 18 שורה 18 PHP קוד:
|
תציג את כל הקוד שלך, זה יעזור יותר.
ומה שהבאתי לך זה בסך הכל דוגמא שתראה איך זה בנוי.. וד"א בפונקציה FetchRow שכחתי לשים global להתחברות בגלל זה השגיאה. |
זה כל הקוד מה שהראתי לכם.
(זאת שורה 18 כי יש למעלה הסברים על הקובץ ואיך להשתמש בו אל תתייחס) |
אממ קח מחלקה שפעם השתמשתי בה:
PHP קוד:
PHP קוד:
|
תודה אלעד אבל בכל זאת מישהוא רואה את הבעיה?
אני מנסה להבין מה הולך פה :\ |
אני חושב שבגלל שלא שמת global בפונקציה וגם לא התחברת למסד בכלל..
תנסה ככה: PHP קוד:
|
אלעד תודה על הנסיון אבל אתה זורק ניחושים לאוויר ועדיין אותה שגיאה חוזרת...
תסתכל שוב על הפונקציות והמחלקה שלי.. הגדרתי אותם כglobal אני ניגש למחלקה בצורה נכונה הכל לפי הספר... |
ניסית להשתמש במחלקה שהבאתי לך?
|
לא... אני רוצה לפתור את הבעיה במחלקה שלי ולהבין מה קורה שם...
אם זה היה עניין של פשוט לרוץ לעבודה כבר הייתי מעתיק מחלקה מאיזה מערכת קוד פתוח או משהוא |
בסדר, תשמע קודם אתה צריך ליצור פונקציה התחברות למסד, זה הרבה יותר יעיל ממה שעשית ככה גם לא תצטרך לעשות global בפונקציות.
ואמרתי לך כבר יותר עדיף להשתמש ב $db->c מאשר db::c אבל איך שתבחר. |
השתמשתי בפנייה למחלקה על ידי new ו$db->$c
וגם יצרתי התחברות מראש למסד אבל עדיין... |
דבר ראשון אתה מתחבר מחדש בכל שאילתא שלך דבר השני השגיעה מראה לך שהמידע שהכנסת בפעולת הכיווץ הוא לא שאילתה ז"א המידע לא עבר דרך הפונקצייה mysql_query תראה תקוד המלא שלך שיש לך כרגע כולל השאילתה ששאלת וכ"ו
עריכה:דניאל יש לך מסנגר?אם כן אז תוסיף אותי |
מה השגיאה?
|
טוב עזבו כבר בניתי את המחלקה שוב מ0 ונראה שזה עובד בסדר עכשיו
תודה על הנסיון לעזור |
בקשר להצגת שגיאות.
כשאתה מפתח את האתר, תוסיף את הפונקציה הזו בתחילת הקוד: קוד:
error_reporting(E_ALL); וכשהאתר מגיע להרצה תשנה את הE_ALL ל0 ואז לא תופיע שום שגיאה, אפילו לא parse error ככה נהוג לעבוד. |
תודה על הטיפ בניה
אני יתחיל להשתמש בזה |
אם אתה מתחיל לקבל מלא E_NOTICE לא צריך להבהל, אלו שגיאות שהPHP עובד למרות שיש אותן, אבל יותר נכון לעבוד בצורה שהן לא מופיעות.
|
כה שמתי לב לזה בדיוק קיבלתי שגיאה כי לא שלחתי משתנה לפונקציה
(משתנה בולני שאם אני לא שולח אותו זה false במילא) |
ציטוט:
PHP קוד:
|
כל הזמנים הם GMT +2. הזמן כעת הוא 10:13. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ