0

こんにちは、私は PC とラップトップの修理業者で、修理、顧客、請求書に関する詳細を入力できるオフライン データベース サイトを構築したいと考えていました。私はそれを学び始めたばかりなので、sqliとphpの非常に基本的な知識を持っています.

現在、データベースに相互にリンクされていない 3 つのテーブルがあります。3 つのフォームを使用してデータを送信します。

クライアント

Id – name – surname – phone – address

修理

Id – name – surname – phone – address – unit – date – price

請求書

Id - paidstatus – date paid - name – surname – phone – address- unit – date – price

私の知識不足のため、データを3つの異なるページに表示しています

Clients.php
Repairs.php
Invoices.php

これは私にとって理想的な解決策ではありませんが、私の知識は非常に基本的なものであるため、これを行いました。たとえば、新しい修理を追加するためにフォームに移動するとき、クライアント テーブルから情報を取得し、次の詳細を使用したいと考えていました。

私が求めているのはデータベースの正規化と呼ばれるものだと思います。リンクはいくつかありますが、いくつかの質問に関する誰かの専門知識を求めています...

これは、上記のテーブルからデータを取得する現在の方法です。例を使用したため、コードがテーブルの名前または行に反映されない場合があります。

  <?php
    //include database connection
    include 'db_connect.php';

    //query all records from the database
    $query = "select * from repair_jobs";

    //execute the query
    $result = $mysqli->query( $query );

    //get number of rows returned
    $num_results = $result->num_rows;

    //this will link us to our add.php to create new record
    if( $num_results > 0){ //it means there's already a database record

        //start table
        //creating our table heading
        echo " <table class='table_basic'>";
        echo "<thead><tr>";
            echo "<th>Job #</th>";
            echo "<th>Name Of Unit</th>";
            echo "<th>Client</th>";
            echo "<th>Estimated Value</th>";
        echo "</thead></tr><tbody><tr>";

        //loop to show each records
        while( $row = $result->fetch_assoc() ){
                //extract row
                //this will make $row['firstname'] to
                //just $firstname only
                extract($row);

                //creating new table row per record
                echo "<tr>";
                    echo "<td width='40px'><a href='rdetails.php?id={$id}'># {$id}</a></td>";
                    echo "<td>{$type}</td>";
                    echo "<td>{$notes}</td>";
    echo '<td align="center"><span class="badge badge-success">£';
    include('repairest.php');
    echo '</span></td>';

                                    echo "</td>";
                echo "";
        }

        echo "</tr></table>";//end table

    }else{
        //if database table is empty
        echo "No records found.";
    }

    //disconnect from database
    $result->free();
    $mysqli->close();

    ?>

正規化を使用して情報を引き出すと、どれくらい違うでしょうか? また、誰でも簡単なチュートリアルへのリンクを投稿して、チュートリアルのソース ファイルをダウンロードできますか?

また、データを入力するためのフォームはどのように異なりますか?


アップデート


miah回答について

テーブルはどのように作成され、SQL を介して結合されますか? コメント欄のこの質問の下にリンクしたページに例が表示されますが、これに参加する方法を教えてもらえますか

1 対 1 および複数。

新しい修理を追加するとき、フォームを使用してユニット - 日付 - 価格を追加するだけだと考えるのは正しいですが、クライアントが作成されていない場合はどうなりますか? または、クライアントを最初に作成する必要がありますか?

何かのようなもの

クライアント: 古いもの (ドロップダウン) または新しいもの (ボタン) (調査できるように、この名前のコードのスニペットが必要になる場合があります)

次に、修理データを入力します。

請求書は、必要なすべての情報が修理テーブルから入手可能であり、後で生成できます。

4

2 に答える 2

1
<a href = "Page.php?View=Invoices">View Invoices</a>
<a href = "Page.php?View=Repairs">View Repairs</a>
<a href = "Page.php?View=Clients">View Clients</a>



<?php

  if (isset($_GET['View'])){

    //query all records from the database
    $query = "select * from ".$mysqli->real_escape_string($_GET['View']);

    //execute the query
    $result = $mysqli->query( $query );
  }

これに似た方法は、驚異的に機能し、ビューを 1 ページに保つことができます。データベースのセットアップが多かれ少なかれ同じであれば、個々のケースでは、次の$_GET['View'];場合の結果に従ってビューを検証する必要があります。

if ($_GET['View'] === "Test_1"){
  echo "Validate as Clients";
}elseif ($_GET['View'] === "Test_2"){
 echo "Validate as Repairs";
}elseif ($_GET['View'] === "Test_3"){
 echo "Validate as Invoices";
}

これはデモンストレーションです。このコード/調査結果を自分の環境に適応させる必要があります。

于 2013-08-23T14:22:26.933 に答える