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

הוסטס - פורום אחסון האתרים הגדול בישראל (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=20422)

amirs_5 21-04-06 23:25

php - בעיה במחלקה
 
רשמתי ככה..

PHP קוד:

  function Home() {

$output "";

    if(isset(
$_GET['c'])) 
    {
    
$output .= $this->view_one_cat($_GET['c']);
    }
    else 
    {
    
$output .= $this->view_all_cats();
    }

  return 
$output;

  } 

PHP קוד:

  function Home() {

$output "";

    if(isset(
$_GET['c'])) 
    {
    
$output .= $this->view_one_cat($_GET['c']);
    }
    else 
    {
    
$output .= $this->view_all_cats();
    }

  echo 
$output;

  } 

טוב נכון יש 2 קודים?,
אז בראשון יש return ובשני יש echo..
למה ה return לא עובד לי ..?..
כאילו זה היה return אבל לא עבד שיניתי ל echo ועבד..

WebProject 21-04-06 23:31

ה return מחזיר ערך ולא מדפיס אותו, על מנת שיודפס, תעשה זאת כך:

return print $output;

amirs_5 21-04-06 23:36

אבל למחלקה קוראים Home
וגם לפונקציה קוריאם Home
אז זה אמור להדפיס אוטומתית..

אני עורך ומוסיף עוד שאלה ..

רשמתי..
PHP קוד:

  function get_url($sid) {
   global 
$DB;

    
$query $DB->query("SELECT * FROM topsite_sites WHERE id='$sid'");
    
$array mysql_fetch_array($query);
    
$url $array['url'];

  
header("location: $url");  

  } 

עכשיו זה מביא לי שגיאה .. !?

Warning: Cannot modify header information - headers already sent by

LosNir 22-04-06 00:23

בקשר לשאלה הראשונה, Return לא מדפיס ערך!
שאלה שניה - הדפסת כנראה משהו לפני ההאדר!

amirs_5 22-04-06 00:30

ציטוט:

נכתב במקור על ידי LosNir
בקשר לשאלה הראשונה, Return לא מדפיס ערך!
שאלה שניה - הדפסת כנראה משהו לפני ההאדר!

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

בקשרלשניה הסתדרתי רשמתי במקום ה header
HTML קוד:

      ?><script type="text/javascript">
      window.location.href='<?=$url?>';
      </script><?


Ran1989 22-04-06 03:10

בקשר לreturn אתה צריך לעשות
echo Home();

amirs_5 22-04-06 10:37

טופ .. :)
ויש לי עוד שאלה פשוט אני לא רוצה לפתוח טופיק חדש..

רשמתי..
PHP קוד:

        setcookie("votesite",$sid,time()+60*60*24); 

ויצאה לי שגיאה כזאתי
קוד:

Warning: Cannot modify header information - headers already sent by

WebProject 22-04-06 11:01

הבעיה שלך פשוטה,

בPHP ישנם מספר פונקציות כמו לדוגמא session,setcookie,header ועוד, שלא ניתן לבצע אותן אחרי שליחת הפלט, כלומר הפונקציות אמורות לבוא לפני פלט הHTML, ולכן, ניתן לעשות זאת ע"י שני הפונקציות ob_start(), ob_end_flush, מה שיסדר את הבעיה [אבל לא יעיל כי יאט את הדף], הפונקציה הזאת עוצרת את פלט הדף, ומבצעת קודם את הפונקצייה ורק לאחר מכן שולחת את תוכן הפלט.


ניתן לבצע את שני הפונקציות ע"י המבנה הבא:

PHP קוד:

ob_start();

// דף הPHP כרגיל פה

ob_end_flush(); 

מקווה שעזרתי, טל.

amirs_5 22-04-06 11:07

זה יאט את הדף בהרבה ?

עריכה :
רשמתי את זה לא הסתדר :\


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

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