2

こんにちは、私はユーザー管理システムに取り組んでいます。データベースからのすべてのレコードが表示され、追加、編集、および削除操作が正常に実行されます。Mysql テーブルのアクティブなレコードのみをホームページに表示する必要があります。管理者コントロールに 2 つのリンクがあり、1 つはアクティブで、もう 1 つは非アクティブです。アクティブ化をクリックすると、レコードがホームページに表示され、非アクティブ化すると、レコードがホームページに表示されなくなります。私はフィールドステータスを挿入しています

datatype enum('active','deactive')`.

私のコーディングは以下の通りです。コーディングでは、どのような変更が必要ですか?

Index.php:

<form method="post">
<table>

    <tr>
        <td>Title:</td>
        <td><input type="text" name="title" /></td>
    </tr>
    <tr>
        <td>Author</td>
        <td><input type="text" name="author" /></td>
    </tr>
    <tr>
        <td>Publisher Name</td>
        <td><input type="text" name="name" /></td>
    </tr>
    <tr>
        <td>Copyright Year</td>
        <td><input type="text" name="copy" /></td>
    </tr>
    <tr>
        <td>&nbsp;</td>
        <td><input type="submit" name="submit" value="add" /></td>
    </tr>
</table>
<?php
if (isset($_POST['submit']))
    {      
    include 'db.php';

                    $title=$_POST['title'] ;
                    $author= $_POST['author'] ;                 
                    $name=$_POST['name'] ;
                    $copy=$_POST['copy'] ;

         mysql_query("INSERT INTO `books`(Title,Author,PublisherName,CopyrightYear) 
         VALUES ('$title','$author','$name','$copy')"); 


            }
?>
</form>
<table border="1">

            <?php
            include("db.php");


            $result=mysql_query("SELECT * FROM books");

            while($test = mysql_fetch_array($result))
            {
                $id = $test['BookID'];  
                echo "<tr align='center'>"; 
                echo"<td><font color='black'>" .$test['BookID']."</font></td>";
                echo"<td><font color='black'>" .$test['Title']."</font></td>";
                echo"<td><font color='black'>". $test['Author']. "</font></td>";
                echo"<td><font color='black'>". $test['PublisherName']. "</font></td>";
                echo"<td><font color='black'>". $test['CopyrightYear']. "</font></td>"; 
                echo"<td> <a href ='view.php?BookID=$id'>Edit</a>";
                echo"<td> <a href ='view.php?BookID=$id'>Activate</a>";
                echo"<td> <a href ='view.php?BookID=$id'>Deactivate</a>";
                echo"<td> <a href ='del.php?BookID=$id'><center>Delete</center></a>";

                echo "</tr>";
            }
            mysql_close($conn);
            ?>
</table>

View.php:
<?php
require("db.php");
$id =$_REQUEST['BookID'];

$result = mysql_query("SELECT * FROM books WHERE BookID  = '$id'");
$test = mysql_fetch_array($result);
if (!$result) 
        {
        die("Error: Data not found..");
        }
                $Title=$test['Title'] ;
                $Author= $test['Author'] ;                  
                $PublisherName=$test['PublisherName'] ;
                $CopyrightYear=$test['CopyrightYear'] ;

if(isset($_POST['save']))
{   
    $title_save = $_POST['title'];
    $author_save = $_POST['author'];
    $name_save = $_POST['name'];
    $copy_save = $_POST['copy'];

    mysql_query("UPDATE books SET Title ='$title_save', Author ='$author_save',
         PublisherName ='$name_save',CopyrightYear ='$copy_save' WHERE BookID = '$id'")
                or die(mysql_error()); 
    echo "Saved!";

    header("Location: index.php");          
}
mysql_close($conn);
?>
<!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=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form method="post">
<table>
    <tr>
        <td>Title:</td>
        <td><input type="text" name="title" value="<?php echo $Title ?>"/></td>
    </tr>
    <tr>
        <td>Author</td>
        <td><input type="text" name="author" value="<?php echo $Author ?>"/></td>
    </tr>
    <tr>
        <td>Publisher Name</td>
        <td><input type="text" name="name" value="<?php echo $PublisherName ?>"/></td>
    </tr>
    <tr>
        <td>Copyright Year</td>
        <td><input type="text" name="copy" value="<?php echo $CopyrightYear ?>"/></td>
    </tr>
    <tr>
        <td>&nbsp;</td>
        <td><input type="submit" name="save" value="save" /></td>
    </tr>
</table>

</body>
</html>

del.php:

<?php
  include("db.php");  

    $id =$_REQUEST['BookID'];


    // sending query
    mysql_query("DELETE FROM books WHERE BookID = '$id'")
    or die(mysql_error());      

    header("Location: index.php");
?>

アイデアやコーディングを教えてください。この概念を使用するのはこれが初めてです.??

4

4 に答える 4

4

アクティブな非アクティブなロジックを使用している間..

次の手順に従う必要があります。

  1. アクティブと非アクティブの列挙値を持つフラグ ステータスを作成する必要があります。
  2. データベースからデータを取得する際に、アクティブなレコードのみを取得する条件を指定する必要があります。
  3. アクティブまたは非アクティブなボタンがある場合は、それに基づいてレコードを更新する必要があります。

これらのステップに従えば、うまくいきます!!

于 2012-09-07T04:47:30.707 に答える
1

より多くのメモリを占有するenumため、型に使用することはお勧めできません。boolean

activeレコードのデータベースにフラグのようなものを含めることができます。すでに各行に一意の ID があるため、次のようにするだけです。

SELECT * FROM `books`;

出力

+----+-----------------------+----------------------+----------------+------+--------+
| id | title                 | pub                  | author         | copy | active |
+----+-----------------------+----------------------+----------------+------+--------+
|  1 | A Matter of Time      | Outskirts Press      | Michael Bowler | 2010 |      0 |
|  2 | The Promise of Change | Soul Mate Publishing | Rebecca Heflin | 2011 |      0 |
+----+-----------------------+----------------------+----------------+------+--------+

については、非表示または表示をactive設定できます。:)01

では、本を有効にしましょうA Matter of Time。ID があります1

UPDATE `books` SET `active` = '1' WHERE  `books`.`id` = 1;

出力

+----+-----------------------+----------------------+----------------+------+--------+
| id | title                 | pub                  | author         | copy | active |
+----+-----------------------+----------------------+----------------+------+--------+
|  1 | A Matter of Time      | Outskirts Press      | Michael Bowler | 2010 |      1 |
|  2 | The Promise of Change | Soul Mate Publishing | Rebecca Heflin | 2011 |      0 |
+----+-----------------------+----------------------+----------------+------+--------+

アクティブな本だけを取得しましょう:

SELECT * FROM `books` WHERE `active` = 1;

出力

+----+-----------------------+----------------------+----------------+------+--------+
| id | title                 | pub                  | author         | copy | active |
+----+-----------------------+----------------------+----------------+------+--------+
|  1 | A Matter of Time      | Outskirts Press      | Michael Bowler | 2010 |      1 |
+----+-----------------------+----------------------+----------------+------+--------+

これを使用すると、アクティブな本だけを取得できます。書籍を非アクティブ化するには:

UPDATE `books` SET `active` = '0' WHERE  `books`.`id` = 1;

PHP コード

<?php
    $result = mysql_query("SELECT * FROM `books` WHERE `active` = 1");
    while (false !== ($data = mysql_fetch_array($result)))
        echo $data["title"];
?>

必要に応じてコードをフォーマットします。:)

于 2012-09-07T04:48:49.243 に答える
0

データを挿入または更新するときに、データまたはレコードのステータスを保存するステータス フィールドも追加します。

そして、クエリユーザー where condition like に表示したときSELECT * FROM books where status='active'

これは試してみるだけでうまくいきます。

于 2012-09-07T04:54:56.933 に答える
0

これにより、アカウントがアクティブおよび非アクティブになります。データベーステーブルにステータス列を作成してint型を指定し、データベースを挿入すると自動的に0になり、テーブルを選択するとstatus = "1" 1がアクティブを意味し、0が非アクティブを意味する条件が与えられます。例: select * from login where status='1'; デモ

于 2014-01-29T10:39:21.383 に答える