2012-05-03 7 views
-1

私は自分のプロジェクトの編集ユーザープロファイルを作成しています。私はこのエラーに遭遇しました。 " Notice:未定義のインデックス:C:\ xampp \ htdocs \ HelloWorld \ EditProfile.phpの18行目のユーザID: "。私はエラーの原因を見つけるのに1時間を費やしましたが、私はそれを見つけるように見えません。未定義のインデックス:ユーザーID

EditProfile.php事前に

<?php 
// connect to SQL 
$con = mysql_connect("localhost", "root", "2345fypj"); 
if (!$con) { 
    echo("<P>Unable to connect to the database server at this time.</P>"); 
    exit(); 
} 
// connect to database 
$dbcon = @mysql_select_db("user_profile", $con); 
if (!$dbcon) { 
    echo("<P>Unable to locate DB table at this time.</P>"); 
    exit(); 
} 

#data preparation for the query 
$id = intval($_POST["userid"]); 
foreach ($_POST as $key => $value) $_POST[$key] = mysql_real_escape_string($value); 

$sql = "UPDATE user_profile SET 
     name='$_POST[name]', 
     age='$_POST[age]', 
     WHERE userid=$id"; 

if (!mysql_query($sql,$con)) { 
    die('Error: ' . mysql_error()); 
} 

mysql_close($con); 
header ("location: http://www.domain.com/url_to_go_to_after_update"); 
?> 

おかげsave_edit.php

<?php 
// connect to SQL 
$dbcnx = mysql_connect("localhost", "root", "2345fypj"); 
if (!$dbcnx) 
    { 
    echo("<P>Unable to connect to the database server at this time.</P>"); 
    exit(); 
} 

// connect to database 
$dbcon = mysql_select_db("my_db", $dbcnx); 
if (!$dbcon) { 
    echo("<P>Unable to locate DB table at this time.</P>"); 
    exit(); 
} 

//data preparation for the query 
$id = intval($_GET['userid']); 

// selects title and description fields from database 
$sql = "SELECT * FROM user_profile WHERE userid=$id"; 
$result = mysql_query($sql) or die(mysql_error());   
# retrieved by using $row['col_name'] 
$row = mysql_fetch_array($result); 

?> 

<h3>Edit</h3> 
<form action="save_edit.php" enctype="multipart/form-data" method="post" name="myForm" /> 
    <table> 
    <tr> 
     <td><b>Name</b></td> 
     <td><input type="text" size="70" maxlength="100" name="title" value="<?php echo $row['name'] ?>"></td> 
    </tr> 
    <tr> 
     <td><b>Age</b></td> 
     <td><input type="text" size="70" maxlength="100" name="title" value="<?php echo $row['age'] ?>"></td> 
    </tr> 
    </table> 
    <input type="hidden" name="id" value="<?php echo $id; ?>" /> 
    <input name="enter" type="submit" value="Edit"> 
</form> 

<?php 
mysql_close($dbcnx); 
?> 

:私はここに私のコードだphp -'Edit' function for forum posts and suchここで、このガイドを追いました。

+1

このページの右の部分でも同様の質問をお読みください。 PS:盲目的なコピー貼り付けで、コードが何か良い結果を出さないと理解していない – zerkms

+0

"18行目のEditProfile.php"、18行目の内容は何ですか? –

+0

@icktoofayそれは "あなたが18行目にあるものを考える、エラーがある"というより多くのものでした:) –

答えて

0

変数$_GET['userid']は未定義ですが、問題を使用しようとしています。この変数は、URLのGETパラメータを指します(例:EditProfile.php?userid=42)。このパラメータがURLに渡されない場合、この警告が表示されます。変数の存在を確認する必要があります。

+0

ありがとうございます。私は 'userid = 3'をURLに追加しなければならないかどうかはわかりませんでした。 –

1
$id = intval($_GET['userid']); 

それはあなたのURLにある "ユーザーID" 変数に設定$id変数を意味します。たとえば、URLがmySite.com?userid = 12の場合、$ idは「12」に設定されます。あなたのURLの最後に "username = aValue"がない場合は、あなたが見ているエラーが表示されます。 :)あなたは、デフォルト値を設定するには、このにそれを変更することができ

$id = (isset($_GET['userid']) ? intval($_GET['userid']) : -1); 
+0

あなたの解決策を試しましたが、 ":"は構文エラーです。 –

+0

oops、スペルミス。編集中に修正されました – DACrosby

+0

私を信じて、あなたはただの素晴らしい...... – fresher

0

その使用前に、あなたのコードに問題が離れて変数を使用してからでデフォルトに設定する場合は、あなたがクエリTODO継続値がintval(常にatleast 0を返します)。数字以外の文字が渡された場合は、テーブルの行0のユーザーを常に更新します。何もしないでください。何も更新せずにユーザーにエラーを返します。クエリ内にageカラムの後にルーグ,もあります。

<?php 
if(isset($_POST["userid"]) && is_numeric($_POST["userid"])){ 

    $_POST = array_walk($_POST,'mysql_real_escape_string'); 

    $sql = "UPDATE `user_profile` SET `name`='{$_POST['name']}', `age`='{$_POST['age']}' 
      WHERE `userid` = {$_POST['userid']}"; 
    mysql_query($sql); 

}else{ 
    header('Location: ./failed'); 
} 
?> 
関連する問題