2016-04-11 15 views
0

Ich habe ähnliche Fragen durchsucht, aber ich konnte mein Problem nicht beheben. Wie gehe ich vor, um ein MySQL-Problem in PHP so zu debuggen? Es ist immer sehr zeitaufwendig, die Ursache für diese Fehler zu finden. Es ist so viel einfacher, Fehler in JavaScript zu finden/zu beheben.Undefinierter Index mit MySQL, PHP

Fehler:

Notice: Undefined index: Rolle in C: \ xampp \ htdocs \ Noobs_Search \ serverCode \ findPlayers.php auf der Leitung 48

Notice: Undefined index: Geschlecht in C: \ xampp \ htdocs \ Noobs_Search \ serverCode \ findPlayers.php on line 49

Es ist unter Hinweis auf diese Zeilen:

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

PHP-Code:

<?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-Code:

<?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

Können Sie 'print_r' die' $ result-> fetch_array() ' –

+0

versuchen print_r ($ result-> fetch_array()) vor der while-Schleife zu tun, und dann werden Sie Ihre Array-Daten als Schlüssel erhalten = > Wert der Schlüssel ist der Index Versuch, den gleichen Schlüssel zu verwenden, der in dem Ergebnis ist, erhalten Sie – PacMan

+0

Was suche ich im Array? Array ([0] => 4 [ID] => 4 [1] => Esme [erste] => Esme [2] => Torosa [letzte] => Torosa [3] => eeyoro @ mail .abc [email] => [email protected] [4] => 1 [team_id] => 1 [5] => Die Ups [team_name] => Die Ups) – Calisto

Antwort

0

Es sieht aus wie Sie es haben falsch geschriebene es $ _GET

ist
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

Oh, das habe ich vermisst! Ich bekomme immer noch den Fehler tho – Calisto

+0

Post zurück, was Sie bekommen, es scheint, dass Daten nicht gesendet werden –

0

Versuchen Sie, Ihre if-Anweisung zu diesem neu zu formatieren und fügen Sie WHERE auf Sie $platerSQL.

Da Ihre alte Anweisung Ihre Abfragezeichenfolge in diese setzt, wenn Sie beide Bedingungen in true haben. Ihnen fehlt die WHERE Bedingung für Ihre Abfragezeichenfolge.

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