最初のページ while ループ
このレッスンでは、さらに深く掘り下げて、PHP と MySQL を使用して、いくつかのシンプルで便利なページを作成します。昨日作成したデータベースから始めて、データベース内のデータを表示しますが、少し磨きをかけます。
まず、次のコードを使用してデータベースの内容をクエリします。
コードをコピーします コードは次のとおりです。
;?php
$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM 従業員",$db );
echo "
n" ;
while ($myrow = mysql_fetch_row($result)) {
printf("%s s | %s | < /tr>n", $myrow[1], $myrow[2], $myrow[3]);
}
echo "
n";
?>
このプログラムのこと。最も明白なのは while() ループです。このループは、データベースに読み取り可能なレコードがまだある限り (mysql_fetch_row() 関数を使用)、そのレコードを変数 $myrow に割り当て、中括弧 ({}) 内の命令を実行することを意味します。ここをよく見てください、この部分はより重要です。
mysql_fetch_row() 関数に注意する必要があります。ここには小さな問題があります。これは配列を返しますが、その中のフィールドには配列の添字によってアクセスする必要があります。最初のフィールドには 0、2 番目のフィールドには 1 というインデックスが付けられます。これは、特定の複雑なクエリを実行するときに実行するには非常に面倒です。 次に、ループ プロセスを詳しく見てみましょう。プログラムの最初の数行は、レッスン 1 の例ですでに見ました。次に、while() ループで、クエリ結果からレコードを読み取り、そのレコードを配列 $myrow に割り当てます。次に、printf関数を使ってデータの内容を画面に表示します。その後、ループが繰り返し実行され、次のレコードが読み取られて $myrow に割り当てられます。これは、すべてのレコードが読み取られるまで続きます。
while() ループを使用する利点の 1 つは、データベース クエリがレコードを返さなくても、エラー メッセージが表示されないことです。ループ ステートメントが最初に実行されるとき、ループ条件は満たされず、データは $myrow に割り当てられず、プログラムは直接実行されます。
しかし、クエリがデータを返さなかった場合、ユーザーにそれをどのように知らせるのでしょうか?おそらく、ユーザーに関連する情報を提供する必要があるでしょう。それは可能です。その方法を見てみましょう。 >>
2 ページ目 if-else
以下のプログラムをご覧ください。
コードをコピーします
コードは次のとおりです。
;?php
$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM 従業員",$db );
if ($myrow = mysql_fetch_array($result)) {
echo "
n";
echo "名前 | アドレス |
n";
do {
printf("%s | %s< ; /tr>n", $myrow["first"], $myrow["last"], $myrow["address"]); } while ($myrow = mysql_fetch_array($result)) ; echo " |
n";
echo "申し訳ありません、レコードが見つかりません!"
このプログラムには多くの新しいコンテンツが含まれていますが、内容は非常にシンプルです。 1 つ目は mysql_fetch_array() 関数です。この関数は mysql_fetch_row() に非常に似ていますが、1 つの違いがあります。この関数を使用すると、$myrow["first"] などの配列添字の代わりにフィールド名を通じて返されるフィールドにアクセスできます。このようにして、多くの労力を節約できます。さらに、do/while ループと if-else 条件文がプログラムに追加されます。
if-else 条件文の意味は、$myrow 変数へのレコードの割り当てが成功した場合は続行し、そうでない場合は else 部分にジャンプしてそこで命令を実行することです。
do/while ループは、前のページで使用した while() ループのバリエーションです。 do/while を使用する必要がある理由は、元の if ステートメントで、クエリによって返された最初のレコードを変数 $myrow に割り当てているためです。この時点で一般的な while ループ (たとえば while ($myrow = mysql_fetch_row($result))) を実行すると、2 番目のレコードが $myrow に割り当てられ、最初のレコードはフラッシュされます。 while ループを使用すると、ループ本体を 1 回実行してからループ条件を決定できるため、最初のレコードを誤って見逃すことはありません。
最後に、クエリ結果にレコードがない場合、プログラムはそれらのステートメントを実行します。 else{} 部分に含まれるプログラムのこの部分の実行を確認したい場合は、SQL ステートメントを SELECT * FROMemployees WHERE id=6 に変更するか、クエリが存在しないように他の形式に変更します。
ページのコンテンツを充実させるために if-else コードを拡張してみましょう。
ページ 3 の最初のプログラム スクリプト
では、ループ ステートメントについて説明します。より実践的な例で使用するには、その前に、Web フォーム、クエリ パラメーター文字列、およびフォームの GET メソッドと POST メソッドを処理する方法を理解しておく必要があります。この部分は、この記事で紹介されています。この部分に詳しくない場合は、その記事を読んでください。
次に、クエリ パラメータ文字列を処理する必要があります。ご存知のとおり、1 つ目は、クエリ パラメータ文字列にパラメータの内容を書き込む方法です。フォームで GET メソッドを使用する; 2 つ目は、ブラウザのアドレス バーに URL を入力するときにクエリ パラメータを直接追加することです。 3 つ目は、Web ページの上部構造にクエリ パラメータ文字列を埋め込むことです。ハイパーリンクの内容は次のようになります:
ここでは、データベースをクエリして従業員名をリストすることから始めましょう。ほとんどの内容はすでにおなじみです。 > コードは次のとおりです。
$db = mysql_connect("localhost", "root"); mysql_select_db("mydb",$db); $result = mysql_query("SELECT * FROM 従業員",$db); myrow = mysql_fetch_array($result)) { do { printf("%s %s
n" , $PATH_INFO, $myrow["id"] , $myrow["first"], $myrow["last"]);
} while ($myrow = mysql_fetch_array($result)); >} else { echo "申し訳ありませんが、レコードが見つかりません。 ";
}
?>
ここでは特別なことは何もありません。printf 関数が少し異なるだけです。それでは、詳しく見てみましょう。
最初に注意すべきことは、すべての引用符の前にバックスラッシュが付いているということです。このバックスラッシュは、次の文字をプログラム コードとして扱うのではなく、直接表示するように PHP に指示します。変数 $PATH_INFO の使用法にも注意してください。この変数はすべてのプログラムでアクセスでき、プログラム自体の名前とディレクトリの場所を保存するために使用されます。これを使用する理由は、ページ内でプログラム自体を呼び出す必要があるためです。 $PATH_INFO を使用すると、プログラムが他のディレクトリや他のマシンに移動された場合でも、プログラムが正しく呼び出されることを保証できます。
先ほど述べたように、プログラムによって生成された Web ページには、プログラム自体を再度呼び出すハイパーリンクが含まれています。ただし、再度呼び出すと、いくつかのクエリ パラメータが追加されます。
PHP は、クエリ パラメータ文字列に「name=value」などのペア形式が含まれていることを確認すると、特別な処理を実行します。クエリ パラメーター文字列で指定されたものと同じ名前と値を持つ変数が自動的に生成されます。この関数を使用すると、プログラムがプログラム内で最初に実行されるか 2 回目に実行されるかを判断できます。私たちがしなければならないのは、$id 変数が存在するかどうかを PHP に問い合わせることだけです。
この質問に対する答えがわかったら、プログラムを 2 回目に呼び出したときに、いくつかの異なる結果を表示できます。参照してください:
コードをコピー コードは次のとおりです:
🎜>< ;?php
$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
// 個別のレコードを表示
//単一レコードの内容
if ($id) {
$result = mysql_query("SELECT * FROM 従業員 WHERE id=$id",$db);
$myrow = mysql_fetch_array($result); ;
printf( "名: %sn
", $myrow["first"]);
printf("姓: %sn
", $myrow["last"]) ;
printf("アドレス: %sn
", $myrow["アドレス"]);
printf("位置: %sn
", $myrow["位置"]); 🎜>} else {
// 従業員リストを表示
// 従業員リストを表示
$result = mysql_query("SELECT * FROMemployees",$db);
if ($myrow = mysql_fetch_array() $result)) {
// 表示するレコードがある場合はリストを表示
// レコードがある場合はリストを表示
do {
printf("% s %sn", $PATH_INFO,
$myrow["id"], $myrow["first"], $myrow["last "]);
} while ($myrow = mysql_fetch_array($result));
} else {
// 表示するレコードがありません
// 表示するレコードがありません
echo "申し訳ありません、記録が見つかりませんでした。 "; コメントは、何が起こっているかを説明するために追加されます。// を使用して 1 行のコメントを追加することも、/* を使用することもできます。
ここで最初の実際のコメントを学びました。便利な PHP/MySQL スクリプトです。次に、Web テーブルを追加してデータベースにデータを送信する方法を見ていきます。
ページ 4: サーバーへのデータの送信
次に、データベースからデータを読み取ります。もうそれほど難しいことはありません。実際、これは PHP では問題ありません。>単純なテーブルを含む Web ページを作成します。
コードは次のとおりです: