2014-05-14 26 views
-1

嘗試運行此命令時出現此錯誤,這是什麼意思?致命錯誤:調用未定義的函數availableDate()

if(isset($_POST['submit'])) 
    { 
     $date = $_POST['date']; 
     $partySize = $_POST['partysize']; 
     $catering = $_POST['catering']; 

     print_r($date); 
     print_r($partySize); 
     print_r($catering); 

     include "/diska/www/include/coa123-13-connect.php"; 
     $host='co-project.lboro.ac.uk'; 
     $dbName='coa123wdb'; 

     $dsn = "mysql://$username1:[email protected]$host/$dbName"; //Data Source Name 

     require_once('MDB2.php'); //Just include this line into your program - you do not have to have the source in your directory 
     $db =& MDB2::connect($dsn); //Try to make a connection 

     if (PEAR::isError($db)) { 
      die($db->getMessage()); 
     } 

     //step 1 - query 
     $sql = "SELECT * FROM venue 
     WHERE capacity >= $partySize"; 

     //step 2 - executing the query 
     $result =& $db->query($sql); 
     if (PEAR::isError($sql)) { 
      die($result->getMessage()); 
     } 

     $valueIDArray = array(); 

     while($row = $result -> fetchrow()){ 
      $valueIDArray[] = $row[0]; 
     } 


     $values = implode(',', $valueIDArray); 
     $query = "SELECT * FROM venue_booking 
     WHERE venue_id IN ($values)"; 

     //step 2 - executing the query 
     $result1 =& $db->query($query); 
     if (PEAR::isError($query)) { 
      die($result1->getMessage()); 
     } 

     while($row = $result1 -> fetchrow()){ 
      $idValue[] = $row[0]; 
      $dateValues[] = $row[1]; 
     } 

     availableDate($dateValues,$date,$idValue, $db); //Line error points to 

     function availableDate($bookedDates, $date, $idValue, $db){ 

我已經commeted就行了錯誤點,這個文件的工作時,它在自己的PHP文件,但是當如果(isset($ _ POST [「提交」]))內聲明它不工作。我究竟做錯了什麼?

回答

1

在定義之後調用availableDate,如果您已經必須在if語句中定義它。

Ex。

function availableDate($bookedDates, $date, $idValue, $db){ 
... 
} 

//and then call it...  
availableDate($dateValues,$date,$idValue, $db); //Line error points to 

編輯:

條件語句

if(1){ 

    func('a'); 

    function func($a){ 
     echo $a; 
    } 
} 

這不會工作的內部定義的非工作功能的

例子,但這會:

if(1){ 

    function func($a){ 
     echo $a; 
    } 

    func('a');    
} 
+0

這應該沒關係。它是PHP – asprin

+0

@asprin爲自己而努力,它確實很重要 – Dexa

+0

這是新的。讓我試試看。 – asprin

2

移動功能定義在if聲明之外。幾乎沒有理由這樣做 - 唯一的藉口可能是如果你想根據條件對函數作出不同的定義,但這似乎並不是你正在做的。如果您在if中定義一個函數,則必須在調用它之前對其進行定義;在頂層定義的函數可以從任何地方調用。

相關問題