0

データベースには 2 つのテーブルがあります。1 つ (テーブル 1) は、ID、名、姓、ログイン、パスワードを含むユーザー用です。もう 1 つのテーブル (table2) にはデータがあり、ID フィールドもあります。テーブル 2 の ID = テーブル 1 の ID の場合、テーブル 2 のデータのみを表示する方法を知りたいです。

以下のパラメーターに追加する必要があると思いますが、その方法がわかりません

$sql="SELECT * FROM Triage WHERE completed= 'no'";
$result=mysql_query($sql);

説明があれば教えてください、ありがとう

表 2 のデータを一覧表示するコードのページ

require_once('auth.php');

 $host="*"; // Host name 
 $username="*"; // Mysql username 
 $password="*"; // Mysql password 
 $db_name="*"; // Database name 
 $tbl_name="*"; // Table name 

// Connect to server and select database.
 mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
 mysql_select_db("$db_name")or die("cannot select DB");

$sql="SELECT * FROM Triage WHERE completed= 'no'";
$result=mysql_query($sql);

 ?>
<style type="text/css">
body {
    background-color: #FFF;
}
</style>

<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<table width="1270" border="0" cellspacing="1" cellpadding="0">
  <tr>
    <td width="1270"><table width="1270" border="1" cellspacing="0" cellpadding="3">
      <tr>
        <td colspan="400"><p align="center"><strong>List of patients for triage</strong></p></td>
      </tr>
      <tr>
        <td width="70" align="center"><strong>Reference</strong></td>
        <td width="120" align="center"><strong>Forename</strong></td>
        <td width="120" align="center"><strong>Surname</strong></td>
        <td width="100" align="center"><strong>DOB</strong></td>
        <td width="120" align="center"><strong>Mobile Number</strong></td>
        <td width="120" align="center"><strong>Home Number</strong></td>
        <td width="100" align="center"><strong>Date of Call</strong></td>
        <td width="100" align="center"><strong>Time of call</strong></td>
        <td width="100" align="center"><strong>Physio ID</strong></td>
        <td width="120" align="center"><strong>Triage completed</strong></td>
        <td width="120" align="center"><strong>Update</strong></td>
      </tr>
      <?php
 while($rows=mysql_fetch_array($result)){
 ?>
      <tr>
        <td><? echo $rows['Reference']; ?></td>
        <td><? echo $rows['Forename']; ?></td>
        <td><? echo $rows['surname']; ?></td>
        <td><? echo $rows['DOB']; ?></td>
        <td><? echo $rows['Mobile']; ?></td>
        <td><? echo $rows['Home']; ?></td>
        <td><? echo $rows['Date']; ?></td>
        <td><? echo $rows['Time']; ?></td>
        <td><? echo $rows['PhysioID']; ?></td>
        <td><? echo $rows['completed']; ?></td>
        <td align="center"><a href="update.php?Reference=<? echo $rows['Reference']; ? >">update</a></td>
      </tr>
      <?php
 }
 ?>
    </table></td>
  </tr>
</table>
<p>
  <?php
 mysql_close();
 ?>
</p>
<p>&nbsp;</p>

アップデート

//Include database connection details
require_once('config.php');

//Array to store validation errors
$errmsg_arr = array();

//Validation error flag
$errflag = false;

//Connect to mysql server
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if(!$link) {
    die('Failed to connect to server: ' . mysql_error());
}

//Select database
$db = mysql_select_db(DB_DATABASE);
if(!$db) {
    die("Unable to select database");
}

//Function to sanitize values received from the form. Prevents SQL injection
function clean($str) {
    $str = @trim($str);
    if(get_magic_quotes_gpc()) {
        $str = stripslashes($str);
    }
    return mysql_real_escape_string($str);
}

//Sanitize the POST values
$login = clean($_POST['login']);
$password = clean($_POST['password']);

//Input Validations
if($login == '') {
    $errmsg_arr[] = 'Login ID missing';
    $errflag = true;
}
if($password == '') {
    $errmsg_arr[] = 'Password missing';
    $errflag = true;
}

//If there are input validations, redirect back to the login form
if($errflag) {
    $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
    session_write_close();
    header("location: login-form.php");
    exit();
}

//Create query
$qry="SELECT * FROM members WHERE login='$login' AND passwd='".md5($_POST['password'])."'";
$result=mysql_query($qry);

//Check whether the query was successful or not
if($result) {
    if(mysql_num_rows($result) == 1) {
        //Login Successful
        session_regenerate_id();
        $member = mysql_fetch_assoc($result);
        $_SESSION['SESS_MEMBER_ID'] = $member['member_id'];
        $_SESSION['SESS_FIRST_NAME'] = $member['firstname'];
        $_SESSION['SESS_LAST_NAME'] = $member['lastname'];
        session_write_close();
        header("location: member-index.php");
        exit();
    }else {
        //Login failed
        header("location: login-failed.php");
        exit();
    }
}else {
    die("Query failed");
}
?>
4

2 に答える 2

1

INNER JOIN(table1 と table2 が 1:1 の場合) またはLEFT JOIN(table1 と table2 が 1:n の場合)を使用する必要があります。

$sql="
  SELECT t1.*, t2.*
  FROM Triage t1
  INNER JOIN members t2 ON (t2.PhysioID = t1.member_id)
  WHERE t1.completed = 'no'
";

編集#1:

$sql="
  SELECT t1.*, t2.*
  FROM Triage t1
  INNER JOIN members t2 ON (t2.PhysioID = t1.member_id)
  WHERE t1.completed = 'no' AND t1.member_id = ".$_SESSION['SESS_MEMBER_ID']."
";

そして、$_SESSION['SESS_MEMBER_ID']ログインしたユーザーのIDになります。

編集#2:

$sql="
  SELECT t2.*
  FROM Triage t1
  INNER JOIN members t2 ON (t2.PhysioID = t1.member_id)
  WHERE t1.completed = 'no' AND t1.member_id = ".$_SESSION['SESS_MEMBER_ID']."
";
于 2013-11-07T12:41:23.783 に答える
0

SQL JOIN 式を使用して、table1 と table2 のデータを結合する必要があります。

SELECT * 
FROM 
  table2 
  JOIN table1 
    ON table1.id=table2.id 
WHERE completed= 'no'

さまざまな種類の JOIN (左結合、クロス結合など) があります。調べてください。

于 2013-11-07T12:41:47.790 に答える