2016-11-21 117 views
-1

你好,我有一些問題,我的代碼:

if (!empty($_GET['id'])){ 
    $id = $_GET['id']; 
}else if (!empty($_POST['id'])){ 
    $id = $_POST['id']; 
} 

$get_id = 'SELECT * FROM kunde WHERE id=' . $id; 
$r = mysql_query($get_id); 
$t = mysql_fetch_array($r); 

$_SESSION['id'] = $t['id']; 

我也有我的隱藏字段:

<input type="hidden" name="id" value="<?php echo $_SESSION['id']; ?>"> 

但我總是相同的錯誤:

Notice: Undefined variable: id in C:\xampp\htdocs\Uebungsklausur\PHP\change.php on line 30 

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Uebungsklausur\PHP\change.php on line 32 

請幫我傢伙..我只是想從表「孔德」

ID用3210

編輯:謝謝你們我解決了它。問題出現在表單標籤中。這是第一個代碼:<form method="post"> 現在它是:'<form method="post" action=" change.php?id=' . $row[0] . '">';

+3

[PHP的可能重複的 「總結」: 「通知:未定義的變量」和「注意:未定義的索引」](http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index) – Phiter

+0

你應該使用'isset();'來檢查是否變量'$ _GET ['id']'或'$ _POST ['id']'存在或不存在。 – 2016-11-21 23:12:05

+0

if(isset($ _GET ['id'])){ \t \t echo「GET_ID exists」; \t} else { \t \t echo「Error」; \t} \t \t 如果(isset($ _ POST [ 'ID'])){ \t \t回聲 「POST_ID存在」; \t} else { \t \t echo「Error」; } 我得到了「錯誤」,但我不知道爲什麼.. – Syntrax

回答

1

這段代碼現在太複雜了,因爲沒有足夠的信息。 代碼太模糊了,因爲我沒有理解你想要做什麼以及代碼應該引導你到哪裏。

下面將可能幫助您:

,如果你想獲得它的形式表的客戶,你就錯了。你現在從表'kunde'得到它。你還需要在WHERE語句中提供一個ID,你沒有,因爲你試圖用實際的語句來得到它?

下面的代碼是我認爲你要做的。

做一個輸入,如果它存在,發送它的ID。

<input type="hidden" name="id" value="<?php if (isset($_SESSION['id'])) { echo $_SESSION['id']; } ?>"> 

然後在下面的代碼檢查是否設置了'id'並返回id?

if (isset($_POST['id'])) { 
$id = $_POST['id']; 
// REST OF CODE (The $get_id, $r, $t and setting $_SESSION) 
} 
if (isset($_GET['id'])) { 
$id = $_GET['id']; 
// REST OF CODE (The $get_id, $r, $t and setting $_SESSION) 
} 
0

讓我們來解決您提供的代碼一些事情:
1.您使用GET和POST在同一時間?我想知道你實際使用的是哪一個。
2.我假設你從$ _SESSION ['id']獲得ID。另一種方法是,你可以直接從它獲得$ id。

考慮到這些事情:

讓我們假設你正在使用GET獲取的ID。

首先,改變這種:

if (!empty($_GET['id'])){ 
    $id = $_GET['id']; 
}else if (!empty($_POST['id'])){ 
    $id = $_POST['id']; 
} 

這個

if (isset($_GET['id'])){ 
     $id = $_GET['id']; 
    } 
    else if (!isset($GET['id'])) { 
     $id = $_SESSION['id']; 
    } 

不過,請清楚你的要求。

+0

任何理由downvote? – Ronald

0

發生這種情況是因爲$ id沒有從IF語句中聲明出來,即$ id變量只存在於if或else語句中,而且它不存在。

要解決它,你可以:

1#申報的$ id以外的if語句

這使得你的代碼運行

$id; // or $id = null 
    if (!empty($_GET['id'])){ 
     $id = $_GET['id']; 
    }else if (!empty($_POST['id'])){ 
     $id = $_POST['id']; 
    } 

    $get_id = 'SELECT * FROM kunde WHERE id=' . $id; 
    $r = mysql_query($get_id); 
    $t = mysql_fetch_array($r); 

    $_SESSION['id'] = $t['id']; 

2#使用三元操作

使用非常簡單:

$id = (!empty($_GET['id'])) ? $_GET['id'] : $_POST['id']; 

    $get_id = 'SELECT * FROM kunde WHERE id=' . $id; 
    $r = mysql_query($get_id); 
    $t = mysql_fetch_array($r); 

    $_SESSION['id'] = $t['id']; 

3#使用$ _REQUEST全球

$ _REQUEST全局這是一個的$ _POST和$ _GET

$id = $_REQUEST['id']; 

    $get_id = 'SELECT * FROM kunde WHERE id=' . $id; 
    $r = mysql_query($get_id); 
    $t = mysql_fetch_array($r); 

    $_SESSION['id'] = $t['id'];