[英]Passing data from one php page to another is not working - why?
沮喪的PHP新手在這里...
我正在嘗試將ab.php的billto或shipto的“類型”值傳遞給abp.php。
ab.php代碼段:
<?php
echo '<a href="' . tep_href_link(FILENAME_ABP, 'edit=' . $bill_address['address_book_id'] . '&type=billto', 'SSL') . '">' .
tep_image_button('small_edit.gif', SMALL_IMAGE_BUTTON_EDIT) .
'</a>';
?>
確實會將&type = billto添加到網址的末尾。 看起來像這樣:www.mydomain.com/abp.php?edit=408&type=billto&id=4a6524d
abp.php代碼段:
if ($HTTP_GET_VARS['type'] == 'billto') {
then it does a db update...
但是,if返回false(根據我的判斷),因為未執行更新。
我還嘗試了$ _GET而不是$ HTTP_GET_VARS。
因為直到用戶單擊按鈕后才執行abp.php中的代碼,所以我無法使用echos來檢查值,但是我可以在url中看到類型,因此我不確定為什么它不執行。
真的可以使用某個方向...無論是我需要更改的方向,還是只是有關如何進一步解決該問題的建議。 我現在正處於巨大的學習曲線之中。 謝謝!!!
編輯:對不起,我才意識到我沒有提到在數據庫更新后,用戶會回到ab.php。 所以整個工作流程是這樣的:
用戶轉到ab.php。 用戶單擊鏈接轉到abp.php。 用戶更改abp.php上的數據。 用戶單擊abp.php上的按鈕。 執行對db的更新,並將用戶發送回ab.php。
因為直到用戶單擊按鈕后才執行abp.php中的代碼,所以我不能使用echos來檢查值為什么不?
echo '<pre>Debug: $_GET=', htmlspecialchars(var_export($_GET, true)), "</pre>\\n"; echo '<pre>Debug: billto===$_GET[type] = ', 'billto'===$_GET['type'] ? 'true':'false', "</pre>\\n"; if ( 'billto'===$_GET['type'] ) { ...
編輯:您可能也對netbeans及其php模塊感興趣:
“使用Xdebug調試PHP代碼:您可以檢查局部變量,設置監視,設置斷點並實時評估代碼。使用“轉到”快捷方式和超文本鏈接導航到聲明,類型和文件。”
嘗試這樣的事情
if ($_GET['type'] == 'billto') {
die("got to here, type must == billto");
這將證明您的if語句是否有效,可能是更新部分無效
在if語句之前-試試
var_dump($_GET);
並確保“ billto”包含在$ _GET數組中。 當然,如果您已設置調試器,則應該能夠觀察$ _GET數組的值
或嘗試:
var_dump($_REQUEST);
檢查第二頁的URL,它的格式正確嗎? 從您發布的代碼片段中,我不知道是否會有一個? 問號后。 另外,請嘗試禁用重定向,以查看您的代碼是否正常工作。
另一件事是,您可能需要先將新的url放入變量中,然后將其放入鏈接HTML中。 它的效率較低,但是使代碼更易於閱讀和調試。
嘗試打開錯誤報告,將其放在您的php腳本的開頭
error_reporting ( E_ALL | E_STRICT)
PHP可以很好地容忍拼寫錯誤和在不存在的數組中訪問下標。 通過嚴格執行並報告所有錯誤,您將能夠發現這些情況。
如果看不到輸出,請嘗試以下操作:
function log_error($no,$msg,$file,$line)
{
$errorMessage = "Error no $no: $msg in $file at line number $line";
file_put_contents("errors_paypal.txt",$errorMessage."\n\n",FILE_APPEND);
}
set_error_handler('log_error');
您可能需要為要寫入的日志文件設置一些文件許可權。
當然,您也可以獲取Netbeans及其調試模塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.