-3

ユーザーが 3 種類の検索から選択できる検索セクションを自分の Web サイトに作成したいと考えています。名前で検索、専門分野で検索、または場所で検索できます。

出力は、名、姓、およびプロフィール写真になります。

問題は、このコードの構造とクエリの書き方がわからないことです。

これは私が書こうとしたものですが、多くのエラーが発生します:

  • お知らせ : 未定義 索引 : 地区
  • お知らせ : 未定義 索引 : 村
  • 注意: 未定義のインデックス: sql
  • 警告 :mysql_fetch_array() は、パラメーター 1 が resource 、null であることを期待しています

検索.php

<?php
session_start();
if($_SESSION['login'] != 'true'){
        header("location:index.php");
    }


   $login = ($_SESSION['login']);
   $userid = ($_SESSION['user_id']);
   $login_user = ($_SESSION['username']);
   $fname = ($_SESSION['first_name']);
   $lname = ($_SESSION['last_name']);
   $sessionaddres =($_SESSION['address']);


require_once('for members/scripts/connect.php'); 

// function for selecting names
function nameQuery(){

  $nameData = mysql_query("SELECT * FROM user") or die("could not select database");

  while($record = mysql_fetch_array($nameData)){

     echo'<option value="' . $record['user_name'] .  '">' . $record['user_name'] . '</option>';

  }

}



// function for select by specialization

function specializationQuery(){

$specData = mysql_query("SELECT * FROM specialization");

  while($recordJob = mysql_fetch_array($specData)){

     echo'<option value="' . $recordJob['specialization_name'] .  '">' . $recordJob['specialization_name'] . '</option>';

  }


}

if(isset($_POST['search']))
{
    $Sname =$_POST['name']; 
    $Sspec = $_POST['specialization'];
    $Sgov = $_POST['governorate'];
    $Sdist = $_POST['district'];
    $Svillage = $_POST['village'];

    // query  search by name
    if($Sname !=0)
    $sql = mysql_query("SELECT first_name, last_name, profile_pic FROM user WHERE user_name ='$Sname'")or die(mysql_error());
    while($getrow = mysql_fetch_array($sql))
    {
        $firstname = $getrow['first_name'];
        $lastname = $getrow['last_name'];
        $profilepic = $getrow['profile_pic'];

        var_dump($firstname);
        var_dump($lastname);
        var_dump($profilepic);


        echo "<ul>
                 <li>
                    '.$firstname'  '' '.$lastname'
                 </li>
                 <li>
                  '.$profilepic'
                 </li>
              </ul>";
    }
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>search page</title>
<link href="style/stylesheet.css" rel="stylesheet" type="text/css" />
<script type = "text/javascript" src = "http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<script type="text/javascript">

 $(document).ready(function(){
                $("select#district").attr("disabled","disabled");
                $("select#village").attr("disabled","disabled");
                $("select#governorate").change(function(){
                $("select#district").attr("disabled","disabled");
                $("select#district").html("<option>wait...</option>");
                var id = $("select#governorate option:selected").attr('value');
                $.post("select_district.php", {id:id}, function(data){
                    $("select#district").removeAttr("disabled");
                    $("select#district").html(data);
                });
            });
            $("select#district").change(function(){ 
            id = $(this).val(); 
            $("select#village").attr("disabled","disabled");
            $("select#village").html("<option>wait...</option>");
            $.post("select_village.php", {id:id}, function(data){


            $("select#village").removeAttr("disabled");
            $("select#village").html(data);
         });
        });
            $("form#registerform").submit(function(){
                var cat = $("select#governorate option:selected").attr('value');
                var type = $("select#district option:selected").attr('value');
                var village = $("select#village option:selected").attr('value');

            });
    });


</script>
</head>


<body>
<div class="container">
<!--<?php require_once('header.php'); ?>-->
<br />
<br />
<br />
<br />

  <!-- <?php require_once('leftsideBar2.php'); ?>-->


   <div id="search-title">Search section</div>
    <div id="search-form">
    <?php include "select.class.php"; ?>
        <form action="search.php" method="post">
         Search By Name:<br />
         <select name="name" >
            <?php nameQuery(); ?>
             <option id="0">-- select By UserName --</option>
             </select>
           <br/><br/>
           Search By Governorate:<br />

        <select id="governorate" name = 'governorate'>
                <?php echo $opt->ShowGovernorate(); ?>
                </select>
           <br /><br/>
           Search by District:<br />

      <select id="district" name="district">
                    <option value="0">choose...</option>
                </select>

           <br /><br/>
           Search by Cities:<br />
           <select id="village" name="village">
                    <option value="0">choose...</option>
                </select>
           <br /><br/>
           Search By Specialization:<br />
           <select name="specialization">
             <option id="0" disabled="disabled">-- select Job --</option>

          <?php specializationQuery(); ?>
          </select>
          <input type="submit" name="search" value="Search"  />
        </form>
    </div>
</div>
<?php require_once('footer.php'); ?>
</body>
</html>
4

1 に答える 1

0

isset を使用して、$_POST のリクエスト変数が適切に設定されていることを確認する必要があります。

if (isset($_POST["district"])) { $district = $_POST["district"]; }
//etc

このコードには「sql」という名前のインデックスへの参照がありません。後で search.php に含めた「select.class.php」を確認してください。

最後の問題については、すべてのクエリが有効であることを確認する必要があります。そうでない場合、mysql_query() は結果を返さず (mysql_query() はリソース型を返します)、mysql_fetch_array() は配列を取得できません (mysql_fetch_array() はリソースを期待していますが、null を持っていました)。

于 2013-04-26T02:08:38.500 に答える