2012-05-18 2 views
0

지난 3 시간 동안 내 머리를 벽에 부딪 쳤습니다.함수는 URL을 수동으로 호출 할 때만 작동합니까?

PHP/MySQL 응용 프로그램의 일상적인 유지 보수를 위해 잠시 전에 작성한 간단한 스크립트가 있습니다. 문제는 스크립트 자체가 아닙니다. 이 PHP 스크립트를 URL로 수동으로 호출 할 수 있으며 올바르게 실행되고 예상 한대로 수행됩니다. 문제는 특정 이벤트가 발생하여 작동하지 않을 때 스크립트를 응용 프로그램에 포함하려고 시도했지만 작동하지 않는다는 것입니다.

치명적인 오류가 있습니다. 다음 줄을 사용하여 함수 오류에서만 배열로 문자열 오프셋을 사용할 수 없습니다. $ ingredientID = $ prepItems [$ i] [ 'ingredientID'];

오류가 문자열을 할당 한 다음 배열로 처리하려고하지만이 행 앞에 $ ingredientID가 함수의 아무 곳에서도 선언되지 않았으며 $ prepItems [$ i] [ 'ingredientID']를 의미합니다. 어쨌든 문자열 자체입니다! 내가 확인한 $ prepItems 올바르게 반환됩니다. 돌아가서 스크립트가 작동하는 URL을 호출 할 때 응용 프로그램의 다른 스크립트에서 스크립트를 포함 시키려고하면 스크립트가 작동하지 않습니다. 나는

//UPDATE PRODUCTION NUMBERS 

function fixOrders(){ 

$k = 0; 
$date = date('Y-m-d',strtotime('yesterday')); 

$qry = "SELECT a.orderID,a.qty,a.date,a.itemID,b.itemName,b.itemType FROM orders a join items b on a.itemID = b.itemID WHERE a.date > '$date' AND a.itemID = '$itemID'"; 
$res = mysql_query($qry); 
$qry = "INSERT INTO prep (orderID,dateProd,qty,itemID,dept) VALUES "; 
while ($row = mysql_fetch_array($res)) 
{ 
$itemID = $row['itemID']; 
$qty = $row['qty']; 
$itemType = $row['itemType']; 
$date = $row['date']; 
$orderID = $row['orderID']; 
$prepItems = prepItems($itemID); 
if ($prepItems) removePrepItems($orderID); 
$cp = count($prepItems); 

if ($prepItems) 
{ 
    for ($i = 0; $i < $cp; $i++) 
    {    
     $ingredientID = $prepItems[$i]['ingredientID']; 
     $ingredientWeight = $prepItems[$i]['ingredientWeight']; 
     $ingredientUnit = $prepItems[$i]['ingredientUnit']; 
     $productionOffset = $prepItems[$i]['productionOffset']; 
     $qty = ($ingredientWeight * $qty); 
     if ($ingredientUnit == 'lbs') $qty = ($qty * 16); 
     $date = date('Y-m-d',strtotime($date.' +'.$productionOffset.' days')); 
     echo $date.' '.$productionOffset.'<br>'; 
     $qry .= "('$orderID','$date','$qty','$ingredientID','$itemType'),"; 
    } 
    $k++; 
} 
} 
$qry = substr($qry,0,-1); 
mysql_query($qry); 
echo $qry; 
} 

fixOrders($itemID) 
+0

function fixOrders()가 다른 파일에서 덮어 쓸 수 있습니까? – Venu

+0

오류가 발생한 줄 앞에서'var_dump ($ prepItems);'를 실행 해보십시오. '$ prepItems'와'$ prepItems [$ i]'가 모두 배열인지 확인하십시오. – Travesty3

+0

Venu : 어떻게해야합니까? –

답변

1

문제는 $prepItems 변수/함수입니다 ....

전체 코드는 다음과 같습니다 .... 그것을 얻을하지 않습니다. var_dump을 삽입하면 실제로보고있는 내용을 볼 수 있습니다.

... 
$cp = count($prepItems); 

var_dump($prepItems); 

if ($prepItems) 
{ 
... 
+0

이상한 일은 ... 나는 예상 한 결과를 얻는다. –

+0

@JohnnyMnemonic 해당 출력을 게시하십시오. – nachito

관련 문제