לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #1  
ישן 04-10-2007, 09:47
  משתמש זכר goldpower3 goldpower3 אינו מחובר  
 
חבר מתאריך: 06.04.07
הודעות: 106
שלח הודעה דרך ICQ אל goldpower3 שלח הודעה דרך MSN אל goldpower3
בעייה עם קריאה למתודה מתוך פונקציה רגילה

שלום לכם ובוקר טוב

אני המשכתי כמו כל בוקר לתכנת את האתר שאני מקים.
פתאום נתקלתי בerror:
Fatal error: Call to a member function on a non-object in /home/.../domains/anime-street.net/public_html/signup.php on line 98


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

השאלה:
האם עליי לוותר על שימוש במתודות בתוך פונקציה רגילה או שישנה דרך שלא תפיק את הerror שקיבלתי?
_____________________________________
בברכה, מתן.


נערך לאחרונה ע"י goldpower3 בתאריך 04-10-2007 בשעה 09:57.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 04-10-2007, 11:14
  משתמש זכר goldpower3 goldpower3 אינו מחובר  
 
חבר מתאריך: 06.04.07
הודעות: 106
שלח הודעה דרך ICQ אל goldpower3 שלח הודעה דרך MSN אל goldpower3
בתגובה להודעה מספר 4 שנכתבה על ידי netaneldj שמתחילה ב "תראה:"

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


(מזל שעוד לא שלחתי את ההודעה ישנה בעייה נוספת)
בerror הזה כבר נתקלתי בעבר
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/ass/domains/anime-street.net/public_html/scripts/mysql.inc on line 44

ואני מבין מה השגיאה, השאלה למה?
קוד PHP:
 class dbctrl{
       
// Sets a SQL query and adds 1 to queries member
    
function query($query) {
        
$query trim($query);
        
$this->queries += 1;
        return 
mysql_query($query);
    }

       
// Does the SQL function 'mysql_fetch_array'
    
function fetch_array($query) {
        
$query trim($query);
        return 
mysql_fetch_array($query);
    }
}
function 
finish_process() {
    ... 
variables ...
    
$db->query("INSERT INTO users (user, nick, pass, mail, time, mask) VALUES ('$user', '$nick', '$pass', '$mail', '$time', 0)");
    ... 
variables ...
    
$userquery $db->query("SELECT id FROM users WHERE user = '$user'");
    while (
$useridwhile $db->fetch_array($userquery)) {
    
$userid $useridwhile['id'];
    }


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


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


נערך לאחרונה ע"י goldpower3 בתאריך 04-10-2007 בשעה 11:39.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 04-10-2007, 11:47
  משתמש זכר yoavmatchulsky yoavmatchulsky אינו מחובר  
 
חבר מתאריך: 15.08.06
הודעות: 1,561
שלח הודעה דרך ICQ אל yoavmatchulsky שלח הודעה דרך MSN אל yoavmatchulsky Facebook profile
בתגובה להודעה מספר 5 שנכתבה על ידי goldpower3 שמתחילה ב "אה אוקי הבנתי, לא חשבתי שזה..."

לא הבנתי בדיוק מה הבעיה..

בנושא קצת אחר (שאולי לא קשור לבעיה שלך, ואולי כן), הקטע הזה:
קוד PHP:
 function fetch_array($query) {
        
$query trim($query);
        return 
mysql_fetch_array($query);
    } 


הפונקציה fetch_array בתוך הקלאס שלך היא לא נכונה. הפרמטר שאתה אמור להעביר לפונקציה mysql_fetch_array הוא תוצאה של שאילתא, ולא שאילתא עצמה. קוד הגיוני יכול להיות כזה:
קוד PHP:
 function fetch_array($query) {
   
$res $this->query($query);
   return 
mysql_fetch_array($res);



עריכה: טעות שלי. לא שמתי לב שהעברת לזה את התוצאה של השאילתא.
ה trim בלבל אותי

עריכה לעריכה: יכול להיות שהtrim הורס לך את התוצאה ב fetch_array. הפונקציה מחזירה string ולא אוביקט.

נערך לאחרונה ע"י yoavmatchulsky בתאריך 04-10-2007 בשעה 11:53.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #12  
ישן 04-10-2007, 14:26
צלמית המשתמש של netaneldj
  netaneldj netaneldj אינו מחובר  
 
חבר מתאריך: 01.05.06
הודעות: 7,861
Facebook profile
כן.
בתגובה להודעה מספר 11 שנכתבה על ידי goldpower3 שמתחילה ב "דור לא הסברת את זה ברור,..."

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

בעצם אתה מעביר את האובייקט כמו שהוא (ולא יוצר לו משתנה תואם ששווה לו), לכן כל שינוי שתבצע בפונקציה ישנה את האובייקט המקורי שהכנסת.
קוד PHP:
 class someclass {
 function 
clsFunc() {
  return 
'test';
 }
}
$class = new someclass;
function 
regFunc(&$regClass) {
 return 
$regClass->clsFunc();
}
echo 
regFunc($class); 



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

האם אני צודק? או שיצאתי חומוס?

אחרי זה מצאתי את זה:
http://il2.php.net/manual/en/langua...nces.return.php

שכאן, הייחוס לא מתבצע למשתנה - אלא לפונקציה.

וכאן, לא הבנתי כלום

נערך לאחרונה ע"י netaneldj בתאריך 04-10-2007 בשעה 14:31.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 09:47

הדף נוצר ב 0.05 שניות עם 11 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2025 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר