ホームページ > バックエンド開発 > PHPチュートリアル > データベースにクエリを実行し、条件に従って配列グループの内容を表示するにはどうすればよいですか?

データベースにクエリを実行し、条件に従って配列グループの内容を表示するにはどうすればよいですか?

WBOY
リリース: 2016-06-23 14:02:41
オリジナル
1206 人が閲覧しました

ウェブサイトのビジネス上の理由により、注文の内容には N 個の異なる名前、携帯電話、性別、その他の情報が含まれています。フォームをアップロードする際、注文の合計を表示する必要があります。注文番号に従って各注文をグループ化します。 はい、配列形式で出力および表示するためにクエリする必要もありませんか?初心者なのでアドバイスを求めて質問させていただきます!

データベース構造は次のとおりです:

id shoji sex zhuangtai orderid 138XXX 男性 1 1
2 Li Si 186XXX 女性 1 1
3 Wang Wu 172XXX 男性 1 1
4 189XXX 男性 1 2
5 Shaozhuang 186 XXX 男性 1 2
6 天天 133XXX 女性 2 3
7 ダバオ 131XXX 男性 3 4
… 各注文番号の [orderid] フィールドのみが同じで、その他は異なります。

次に、これらの注文をページに出力して表示する必要があります。次のようにすればよいでしょうか。方法と例を書いていただけませんか?まずは皆さん、ありがとうございました!




ディスカッションに返信 (解決策)
それはまだ簡単ではありません

データベースから読み取ったデータを処理のために配列に入れます

while($arr = mysql_fetch_row($result)){   $row[$arr['orderid']][] = $arr;}
ログイン後にコピー


それはまだ簡単ではありません
データベースから読み取ったデータを入れます配列に入れる 配列内で処理します

PHP code?1234while($arr = mysql_fetch_row($result)){ $row[$arr['orderid']][] = $arr;}

こんにちは、ありがとうございますご回答は以上です。もう少し具体的に教えていただけますか? PHPやデータベースのことは全く分かりません

ざっくりこんな感じで書けます

 $r=mysql_query('select orderid,zhuangtai,group_concat(`name`) as name,group_concat(`shouji`) as shouji,group_concat(`sex`) as sex from `order` group by orderid'); echo "<table width=950 border='1px solid'>"; echo "<tr><th>姓名</th><th>手机</th><th>性别</th></tr>";while($row=mysql_fetch_assoc($r)){    $shouji_arr=explode(',',$row['shouji']);	$sex_arr=explode(',',$row['sex']);    echo "<td colspan=3>订单号:".$row[orderid]."  状态:".$row['zhuangtai']."</td>";	foreach(explode(',',$row['name']) as $k=>$v){	     echo "<tr>";		 echo "<td>$v</td><td>$shouji_arr[$k]</td><td>$sex_arr[$k]</td>";		 echo "</tr>";	}}echo "</table>";
ログイン後にコピー

ざっくりこんな感じで書けます
PHP code?1234567891011121314 $r=mysql_query('select orderid,zhuangtai,group_concat(` name`) as name,group_concat(`shoji`) as shoji,group_concat(`sex`) as sex from `order` group ……


explode()関数は文字列を配列
に分割します。

ざっくりこんな感じで書けます
PHP code?1234567891011121314 $r=mysql_query('select orderid,zhuangtai,group_concat(`name`) as name,group_concat(`shoji`) as shoji,group_concat(`sex`) as sex `order `group…


group_concat() から、この関数はグループから NULL 以外の値を含む文字列結果を返します

定義と使用法
explode() 関数は文字列を配列に分割します
構文。
explode(separator,string,limit)

区切り文字に必須

Limit はオプションです


のように書くことができます。この
PHP コード?1234567891011121314 $r=mysql_query('select orderid,zhuangtai,group_concat(`name`) を名前として、group_concat(`shoji`) を shoji、group_concat(`sex`) を `order` グループの性別として……

ありがとうございます、このテーブルに時間フィールドを追加した場合、順序は時間に従っている必要があります

おおよそ次のように記述できます

?1234567891011121314 $r=mysql_query('select orderid,zhuangtai,group_concat(`name`) as name,group_concat(`shoji`) as shoji,group_concat (`sex`) as sex from `order` グループ ……


こんにちは、ボス、上記の質問に従って、各注文の時刻 (つまり、同じ orderid を持つ行) が同じ場合、クエリ ステートメントに ORDER を直接追加できます。BY 時刻を使用して問題を解決できますが、異なる行がある場合は、クエリ ステートメントに ORDER を直接追加できます。注文に異なる時間が含まれている場合、時間の短い順に並べ替える場合はどうすればよいでしょうか?

3階のjordan102さんからのリプライ引用: ざっくりこんな感じで書けます

PHP code?1234567891011121314 $r=mysql_query('select orderid,zhuangtai,group_concat(`name`) as name,group_concat(`shoji`) as shoji,group_concat(` sex`) as se...


クエリにORDER BY min(time)を使用しましたが、大きなデータテーブル内にある場合、何か問題はありますか?

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート