1

PHP コードで " Notice: Undefined index:k" が表示されます。K はテキスト フィールドの名前で、$_GET[] メソッドを使用して k の値を取得しています。以下の例では、フォームが送信された後でも値を利用できるようにしようとしています。このコードは最初は正常に実行されますが、2 回目は上記のエラーが発生します。

    <form name="keywordquery" method="get" action="keywordsearch.php">
<fieldset class="fieldsetclass"><legend class="legendclass">Search by 
     Keywords</legend>
    <div id="searchbox">
   <input type="text" name="k" value="<?php if(isset($_GET['k'])){echo  
   htmlentities($_GET['k']);} ?>" style="border: 1px, thin; width:92%; "/> <input     
    type="image" style="margin-bottom: 0; margin-top: 2px;" src="search.png" 
    value="submit" />
</div>
</fieldset>
    </form>
   </div>
  <table id="dataTable" cellpadding="0" cellspacing="0" border="1" style="border-    
   radius:20px; box-shadow: 9px 5px 8px #7E9044;">
  <tbody>    
<?php
        // PAGINATION Code. check if the starting row variable was passed in the 
    URL or not
  if (!isset($_GET['startrow']) or !is_numeric($_GET['startrow'])) {

  //we give the value of the starting row to 0 because nothing was found in URL
  $startrow = 0;
  //otherwise we take the value from the URL
   } else {
  $startrow = (int)$_GET['startrow'];
   }


$k1 = $_GET['k'];

$term = explode(" ", $k1);
$query = "SELECT * FROM data ";
foreach ($term as $each) {
$i++;
    if($i==1)
    {
        $query .= "WHERE keywords LIKE '%$each%' ";
    }

else {
    $query .= " OR WHERE keywords LIKE '%$each%' ";
}

}

$query .= "LIMIT $startrow, 1";

$connection = mysql_connect("xxxx", "xxxxx","");
if(!$connection)
echo "No database connected";
$dbase = mysql_select_db("xxxxxxxx", $connection);
if(!$dbase)
echo "No datatable connected";
$ourquery1 = mysql_query ($query);
if(!$ourquery1)
echo "No query found";

$row1 = mysql_num_rows ($ourquery1);
if ($row1 > 0)
{

    while($result = mysql_fetch_assoc($ourquery1))
    {
        echo "<tr>";
        $title = $result['title'];
        $link = $result['link'];
        $region = $result['region'];
        $sector = $result['sector'];
        $theme = $result['theme'];      
        echo "<td> <a href=$link><h3>$title<h3></a>";
        echo "<h4>Sector: $sector&nbsp; &nbsp; &nbsp; 
                    &nbsp; &nbsp; &nbsp; Theme: $theme &nbsp; 
        &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br> Region: $region </td>";
    }
}


    echo "</tbody>";
       echo '<a href="'.$_SERVER['PHP_SELF'].'?startrow='.($startrow+1).'">Next</a>';
       echo '<a href="'.$_SERVER['PHP_SELF'].'?startrow='.($startrow-1).'">Prev</a>';
4

2 に答える 2

0

次の行を置き換えます: $k1 = $_GET['k'];

$k1 = isset($_GET['k'])? $_GET['k'] : $default_k_value;

于 2013-02-18T03:09:18.467 に答える
0

完全なフォームを表示していないため、何が間違っているのかを判断するのは難しいですが、ここにヒントがあります。$_GET を $_REQUEST と交換します。

例:

<?php if(isset($_REQUEST['k'])){echo  
   htmlentities($_REQUEST['k']);} ?>

フォームが POST メソッドを使用している場合、値は $_POST になります。フォームが GET メソッドを使用する場合、値は $_GET になります。ただし、フォームが POST または GET を使用したかどうかにかかわらず、$_REQUEST にはフォーム フィールドが含まれます。

于 2013-02-18T03:15:41.173 に答える