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

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   בעיה עם מחלקה בPHP (https://hosts.co.il/forums/showthread.php?t=74272)

Shillo 06-05-09 12:48

בעיה עם מחלקה בPHP
 
יש לי מחלקה שמנהלת מסד נתונים, עכשיו יש פעולה פנימית כזו:
קוד:

public function select($table, $rows = '*', $where = null, $order = null)
    {
        $q = 'SELECT '.$rows.' FROM '.$table;
        if($where != null)
            $q .= ' WHERE '.$where;
        if($order != null)
            $q .= ' ORDER BY '.$order;

        $query = @mysql_query($q);
        if($query)
        {
            $this->numResults = mysql_num_rows($query);
            for($i = 0; $i < $this->numResults; $i++)
            {
                $r = mysql_fetch_array($query);
                $key = array_keys($r);
                for($x = 0; $x < count($key); $x++)
                {
                    // Sanitizes keys so only alphavalues are allowed
                    if(!is_int($key[$x]))
                    {
                        if(mysql_num_rows($query) > 1)
                            $this->result[$i][$key[$x]] = $r[$key[$x]];
                        else if(mysql_num_rows($query) < 1)
                            $this->result = null;
                        else
                            $this->result[$key[$x]] = $r[$key[$x]];
                    }
                }
            }
            return true;
        }
        else
        {
            return false;
        }
    }


ואז קראתי למחלקה בדף אחר, ואם אני כותב:
קוד:

$res = $msgs->getResult();
print_r ($res);


וזה מציג לי את התכנים של המערך.
אבל אם אני עושה echo $res הוא מדפיס "Array".
מה שאני רוצה בעצם זה ש echo $res ידפיס את כל התכנים של המערך.

vadimg88 06-05-09 13:29

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

Shillo 06-05-09 13:52

ציטוט:

נכתב במקור על ידי vadimg88 (פרסם 713271)
אתה לא יכול להדפיס תוכן של מערך בעזרת ECHO או PRINT. מערך מכיל מספר אלמנטים. תבצע לולאה שבכל שלב בלולאה תדפיס את התוכן של האלמנט הנוכחי.

ניסיתי עם לולאת foreach
קוד:

foreach($res as $value)
{
        echo $value;
}

ניסיתי עם for משום מה לא עובד, זה מציג עכשיו פעמיים Array (כנראה מהסיבה שיש רק שני ערכים בטבלה שבמסד):
ArrayArray

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

עריכה:
אם זה עוזר, הנה הדף המלא:
קוד:

<?php
/* Adding Messages */
$msgs = new Messages();
$msgs->connect();
$msgs->select('messages','*');
//$msgs->insert('messages',array(0,1,0,"","Shmuel","Today","","Shillo","sshilo@gmail.com"));

$res = $msgs->getResult();
//print_r ($res);
foreach($res as $key=>$value)
{
        echo $value . $key;
}
?>

יצרתי עוד מחלקה Messages שפשוט יורשת מDatabase (המחלקה שמנהלת את המסד) ככה שזה לא משנה.

vadimg88 06-05-09 14:10

print_r ($res);

מה זה מחזיר?

Shillo 06-05-09 14:13

Array ( [0] => Array ( [msg_id] => 14 [isParent] => 1 [msg_level] => 0 [smiley_path] => [msg_content] => Shmuel [msg_pdate] => Today [attachment_path] => [author_name] => Shillo [author_email] => sshilo@gmail.com ) [1] => Array ( [msg_id] => 13 [isParent] => 1 [msg_level] => 0 [smiley_path] => [msg_content] => Hello [msg_pdate] => Today [attachment_path] => [author_name] => Shillo [author_email] => sshilo@gmail.com ) )

vadimg88 06-05-09 14:17

אז הייתי מציע שתקרא אודות ARRAYS

PHP קוד:


<?php
/* Adding Messages */
$msgs = new Messages();
$msgs->connect();
$msgs->select('messages','*');
//$msgs->insert('messages',array(0,1,0,"","Shmuel","Today","","Shillo","sshilo@gmail.com"));

$res $msgs->getResult();
//print_r ($res);
foreach($res as $value)
{
    echo 
$value['author_email'];
}
?>


Shillo 06-05-09 14:30

ציטוט:

נכתב במקור על ידי vadimg88 (פרסם 713299)
אז הייתי מציע שתקרא אודות ARRAYS

PHP קוד:


<?php
/* Adding Messages */
$msgs = new Messages();
$msgs->connect();
$msgs->select('messages','*');
//$msgs->insert('messages',array(0,1,0,"","Shmuel","Today","","Shillo","sshilo@gmail.com"));

$res $msgs->getResult();
//print_r ($res);
foreach($res as $value)
{
    echo 
$value['author_email'];
}
?>


תודה רבה. :-)


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

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