2016-11-21 4 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

可能な重複の "要約" の世界: "注意:未定義の変数"と "通知:未定義のインデックス"](http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index) – Phiter

+0

あなたは 'isset();'を使って変数 '$ _GET ['id']'または '$ _POST ['id']'が存在するかどうかは関係ありません。 –

+0

if(isset($ _ GET ['id'])){ \t \tエコー "GET_IDが存在する"; \t} else { \t \t echo "エラー"; \t} \t \t(ISSET($ _ POST [ 'ID'])){ \t \tが "post_idの存在する" エコー場合、 \t} else { \t \t echo "エラー"; } 私は「エラー」を受けましたが、理由はわかりません。 – Syntrax

答えて

1

このコードは十分な情報がないのであまりにも複雑です。 コードはあまりにも漠然としています。私はあなたがそのコードで何をしたいのか、コードがどこにつながるのかという手がかりを得ていないからです。

以下は、多分あなたを助ける:

あなたはそれがテーブルの顧客を形成取得しようとしている場合、あなたはそれが間違ってやっています。あなたは今、テーブル「kunde」からそれを得ています。実際のステートメントで取得しようとしているので、WHEREステートメントでIDを要求しています。

次のコードは、私があなたにしていると思います。

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を取得していると仮定します。もう1つの方法は、$ idを直接取得することです。心の中でそれらのもので


のは、あなたがIDを取得するためにGETを使用していると仮定しましょう。この

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

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

しかし、あなたが求めているものを明確にしてください。

まず、これを変更します。

+0

ダウンボートの理由は何ですか? – Ronald

0

$ id変数がIF文の外に宣言されていない、つまり$ id変数がif文またはelse文の内部にのみ存在し、その外側に存在しないためです。それをあなたの問題を解決するには

することができます:あなたのコードの実行

$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#を使用する三項演算子

を作る

if文の外

1つの#の宣言ます$ id

非常に使いやすいです:

$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、それは[PHPの$ _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'];