2016-04-11 11 views
0

同様の質問で検索しましたが、私の問題を解決できませんでした。このようなPHPのMySQLの問題をどのようにデバッグするのですか?これらのエラーの原因を見つけるのは本当に時間がかかります。 JavaScriptのエラーを見つけて修正するのはずっと簡単です。MySQL、PHPを使用した未定義インデックス

エラー:

お知らせ:未定義のインデックス:Cでの役割:\ xamppの\ htdocsに\ Noobs_Search \ serverCode \ findPlayers.phpライン上の48

お知らせ:未定義のインデックス:Cでの性別:\ XAMPP \ htdocsに\ Noobs_Search \ serverCode \ findPlayers.phpライン上の49

それは、これらの行を参照することです:

$role = $row['role']; 
$g  = $row['gender']; 

PHPコード:

<?php 

require "connect.php"; 

$searchBy = $_GET["field"]; 
$searchText = $_GET["text"]; 

$playerSQL = "SELECT * 
       FROM vw_playerTeamName"; 

if(isset($GET_["role"])) 
{ 
    $role  = $_GET["role"]; 
    $playerSQL .= " AND role = $role";// .= is same as += 
} 

if(isset($GET_["gender"])) 
{ 
    $gender  = $_GET["gender"]; 
    $playerSQL .= " AND gender = $gender";// .= is same as += 
} 

$result = $mysqli->query($playerSQL); 

$pTable = "<div class='table'> 
     <div class='heading'> 
      <div class='cell'>ID</div> 
      <div class='cell'>First</div> 
      <div class='cell'>Last</div> 
      <div class='cell'>Email</div> 
      <div class='cell'>Team</div> 
      <div class='cell'>Gender</div> 
      <div class='cell'>Role</div> 
     </div>"; 

while($row = $result->fetch_array()) 
{ 
    $ID  = $row['ID']; 
    $first = $row['first']; 
    $last = $row['last']; 
    $email = $row['email']; 
    $team = $row['team_name']; 
    $role = $row['role']; 
    $g  = $row['gender']; 

    $pTable .= "<div class='row'> 
        <div class='cell'>$ID</div> 
        <div class='cell'>$first</div> 
        <div class='cell'>$last</div> 
        <div class='cell'>$email</div> 
        <div class='cell'>$team</div> 
        <div class='cell'>$g</div> 
        <div class='cell'>$role</div> 
       </div>"; 
} 

$pTable .= "</div>"; 

$mysqli->close(); 

echo $pTable; 
?> 

はJavaScript:

$(document).ready(function() 
{ 

    $('#search').click(function() 
    { 
     var searchField = $("#searchType").val(); 
     var searchText = $("#searchText").val(); 
     var g   = $("input[name=gender]:checked").val(); 
     var r   = $("input[name=role]:checked").val(); 

     $.get("serverCode/findPlayers.php", 
     { 
      field:searchField, 
      text:searchText, 
      role:r, 
      gender:g 
     },function(response) 
     { 
      $("#placeholder").html(response); 
     }); 

    }); 

}); 

HTMLコード:

<?php 

$doc = "<!DOCTYPE html> 
      <html> 
       <head> 
        <title>Noobs Search Page</title> 
        <script src='clientCode/jquery-1.12.2.min.js'></script> 
        <script src='clientCode/search.js'></script> 
        <link href='css/tableStyle.css' rel='stylesheet'> 
       </head> 
      <body> 

       <select id='searchType'> 
        <option value='first'>First Name</option> 
        <option value='last'>Last Name</option> 
        <option value='email'>Email</option> 
       </select> 

       <input id='searchText' type='text' name='text'> 

       <p>Role<br> 
        <input type='radio' name='role' value='Pion'>Pion 
        <input type='radio' name='role' value='Captain'>Captain 
        <input type='radio' name='role' value='Assistant Captain'>Assistant Captain 
       </p> 

       <p>Gender<br> 
        <input type='radio' name='gender' value='M'>Male 
        <input type='radio' name='gender' value='F'>Female 
       </p> 

       <p> 
        <input type='button' name='search' id='search' value='search'> 
        <input type='button' name='clear' value='clear'> 
       </p> 

       <div id='placeholder'></div> 

      </body> 
     </html>"; 

echo $doc; 
?> 
+0

あなたは 'print_r'ことができます' $ result-> fetch_array() ' –

+0

は、whileループの前にしますprint_rを($ result-> fetch_array())実行しようと、あなたはキーとしてあなたの配列データを取得します= > valueキーがインデックスである結果にある同じキーを使用しよう – PacMan

+0

配列で何を探しますか? 配列([0] => 4 [ID] => 4 [1] => Esme [最初] => Esme [2] => Torosa [last] => Torosa [3] => eeyoro @ mail .abc [メール] => [email protected] [4] => 1 [TEAM_ID] => 1 [5] =>アップ【TEAM_NAME] => UPS) – Calisto

答えて

0

あなたは、それはそれは$ _GET

0123ですスペルミスしているように見えます
if(isset($_GET["role"])) 
{ 
    $role  = $_GET["role"]; 
    $playerSQL .= " AND role = $role";// .= is same as += 
} 

if(isset($_GET["gender"])) 
{ 
    $gender  = $_GET["gender"]; 
    $playerSQL .= " AND gender = $gender";// .= is same as += 
} 
+0

ああ私はそれを逃した!私はまだエラーが発生しています – Calisto

+0

<?php "connect.php"が必要です。 var_dump($ _ GET); ?> ポストバックデータが送信されていないようです –

0

これにif文を再フォーマットし、WHERE$platerSQLに追加してみてください。

$playerSQL = "SELECT * 
       FROM vw_playerTeamName"; 

if(isset($GET_["role"])) 
{ 
    $role  = $_GET["role"]; 
    $playerSQL .= " WHERE role = '$role'";// .= is same as += 

    if(isset($GET_["gender"])) 
    { 
     $gender  = $_GET["gender"]; 
     $playerSQL .= " AND gender = '$gender'";// .= is same as += 
     //$playerSQL will be SELECT * FROM vw_playerTeamName WHERE role = '$role' AND gender = '$gender' 
    } 

    //if there is no gender playerSQL will be SELECT * FROM vw_playerTeamName WHERE role = '$role' 
} 

elseif(isset($GET_["gender"])) 
{ 
    $gender  = $_GET["gender"]; 
    $playerSQL .= " WHERE gender = '$gender'";// .= is same as += 
    // $playerSQL will be SELECT * FROM vw_playerTeamName WHERE gender = '$gender' 

} 

$result = $mysqli->query($playerSQL); 

あなたの古いステートメントは、両方の条件が真である場合、これにクエリ文字列を設定するためです。クエリ文字列の条件がWHEREではありません。

$playerSQL = "SELECT * FROM vw_playerTeamName AND role = $role AND gender = $gender";