web-dev-qa-db-ja.com

mySqlデータベースデータを直接使用してWebサイトの記事を生成しますか? (初心者、どこから始めるべきかを知る必要がある))

こんにちは、私はかなりWeb開発に慣れていないので、単純なHTMLテーブルと無料のWebホストを使用して、長年にわたって自分のサイトをいくつか作成しました。

今回は、WAMPサーバーを使用して自分のサイトをホストすることを決定しましたが、すべて正常に稼働しているようです。まだシンプルなhtml/cssテンプレートを使用しましたが、まだいくつかの派手な機能が含まれていて、自分の好みに合わせて編集する方法をほとんど理解しました。

これは純粋に私自身の楽しみ/学習のためです。私はテレビシリーズに関する情報をリストするウェブサイトを作っています。したがって、私のデータベースは「ショー」と呼ばれます。 6つのフィールド(id、genre、title、imageurl、description、httplink)があります。

私がやりたいのは、6つのデータすべてを使用してhtmlに含めるいくつかのフィールドを埋める独自の「記事テンプレート」を生成することです(これが可能であれば???私はわからないが、私はかなり経験しているc#/ Javaでゲーム/アプリをコーディングし、それらのゲームで時々データベースを使用したので、テクニックが多少似ていることを望んでいます!?)

だから私が現在持っているのは、a)セルフホストされたウェブサイトで、すでに公開されていることを確認済みb)好みに合わせてカスタマイズされたcssを含むhtmlインデックスランディングページ.

これまでのところ、私の記事テンプレートは次のようになっています。

<!--Article One -->
            <section class="wrapper style1">
                <div class="inner">
                    <header class="align-center">
                        <h2>DUMMY TITLE FIELD</h2>
                        <!-- will need to pull these fields including image url from database -->
                        <img src="http://xyz.image.url/images/123.jpg"> 
                        <p>DUMMY DESCRIPTION FIELD, DUMMY DESCRIPTION FIELD, DUMMY DESCRIPTION FIELD, DUMMY DESCRIPTION FIELD, DUMMY DESCRIPTION FIELD, DUMMY DESCRIPTION FIELD, DUMMY DESCRIPTION FIELD</p>
                    </header>
                </div>
            </section>

そのため、たとえばユーザーがジャンルで並べ替えることができるようにし、そのジャンルのデータベースからのすべてのショーで記事を自動的に埋めたいと思っています。もちろん、これには、上記のhtmlコードをその場で作成することも含まれますが、デバッグテキストを実際の変数に置き換えて、データベーステキストに変更できるようにします(それが理にかなっていることを願っています!!)

本当に、私はこのプロセスの名前を知りたいので、良い現在のガイドをグーグルで検索することができます(もちろん、私にそれをもっと簡単に入力することができます!)、これが既にある場合は申し訳ありませんここで尋ねられました。私はあらゆる種類のhtml/css/Apache/php/mySqlチュートリアルを探していましたが、少し混乱しています。

誰かが助けてくれることを本当に願っています。どうもありがとう

3
Big T Larrity

2つの異なるソリューションを探しています。 MySQLから記事を生成するには、JavaやPHPなどのバックエンドコードと、データベースMySQLが必要です。ソートには、javascriptのようなフロントエンドコードが必要です。これについては後で触れます。

いくつかのサンプルコード(これをコピーして貼り付けないでください)では、PHPを使用してデータベースをチェックし、Whileループで記事コードを出力しました。

<?php

// Establish how to log in
$servername = "127.0.0.1";
$username = "root";
$password = "yourpasswordhere";
$dbname = "yourdatabasenamehere";

// create the database connection
$db = new mysqli($servername, $username, $password, $dbname);

// if it fails, kill the site.
if (mysqli_connect_error($db)) {
    die("Connection failed: " . mysqli_connect_error($db));
}

// your first query to grab all the article data
$SQL_Query = "SELECT * FROM your_table";
// run the query
$SQL_Run = mysqli_query($db, $SQL_Query);

// while data exists (it makes sure that you have post data, otherwise nothing shows up)
while ($row = mysqli_fetch_assoc($SQL_Run)) {
    echo 
    "<section class='wrapper style1'>
    <div class='inner'>
        <header class='align-center'>
            <h2>" . $row['imageurl'] . "</h2>
            <img src='" . $row['title'] . "'> 
            <p>" . $row['description'] . "</p>
        </header>
    </div>
</section>";
}

// Close the connection
mysqli_close($db);
?>

これが行っているのは、データベースに保存されているすべてのエントリをループ処理し、上記で貼り付けた記事htmlを作成することです。各値は、ループするときに「$ row」変数に保存されます。必要なデータの列名を交換できます。

PHPウォークスルーステートメントを作成し、変数に保存する必要があります。私は通常、変数名のクエリと呼んでいます。例:$ SQL_Query。

次に、データベースを介してクエリを実行する必要があります。例:$ SQL_Run

その後、2つの一般的なオプションがあります。複数の行がある場合は、whileループを実行してすべてをループするか、1行のみを返す場合(特定の投稿を探している場合)、それをフェッチして変数に保存できます。


並べ替え機能を追加するには、JqueryUIやListJSなどのjavascriptライブラリを探してください。実装が非常に簡単なので、私は個人的にListJSを使用しています http://listjs.com/


OPの質問に答える

1)は、c#などの 'for'ループと同じ 'while'ループですか?

Forループとwhileループは異なりますが、C#やPHPと比較すると同じように機能します。 whileループは条件が満たされるまで無限に実行され、Forループは設定された時間実行されます。

2)whileループ内のコードはすべて$ SQL_Runの前に実行されますか?

いいえ、$ SQL_Runはすべてのデータベース情報(すべての行と値)を変数に保存します。次に、その変数に対してwhileループが実行されます。

3)$ SQL_Run関数はどこかに自分で書く必要がありますか?

$ SQL_Runはユーザー定義変数です。 mysqli_query()は、データベース接続とMySQLステートメントを必要とする組み込みphp関数です

4)与えられた変数($ row)の値にアクセスしてHTMLドキュメントに解析するにはどうすればよいですか?

例の$ row ['column name here']で同じ方法でアクセスできます。

5)これを使用して、これらのhtmlブロックを既存のindex.html(またはそのことについては任意のページ)にスタックできますか、または作成する必要がありますか返される結果の数に完全に依存する新しいページ?

このコードはphpファイルの一部である必要があります。幸い、PHPファイルはhtmlファイルとまったく同じように機能します。 index.htmlをindex.phpとして保存し直すと、htmlは正常に動作します:)

関数mysqli_fetch_assoc())も知らないのですが、これは開発者またはSQLライブラリの一部として私たちによって書かれたものですか?

これは組み込み関数です。データベースコードを実行するときは常に安全であるため、常にmysqliを使用します。 https://www.w3schools.com/php/func_mysqli_fetch_assoc.asp

whileループ内から$ SQL_Runが呼び出されることがわかりました。私はmysqli_query()が正確に何であるかも理解していません。

mysqli_query()関数は、SQLステートメントからすべてのデータを取得し、変数$ SQL_Run内にすべて保存します。 Excelファイルのデータを単一の変数に保存するようなものです。その後、あなたはそれを使って好きなことをすることができます

2
Zach Voss