
初心者です。
よろしくお願いいたします。
$sql = "SELECT * FROM table WHERE s_code IN ('" .$code."')";
$res = mysql_query($sql) or die("データ抽出エラー");
echo( "<TABLE>" );
echo( "<TR>" );
echo( "<TH>コード</TH>" );
echo( "<TH>コード名称</TH>" );
echo( "<TH>情報</TH>" );
echo( "</TR>\n" );
while ($row = mysql_fetch_array($res,MYSQL_ASSOC)){
echo( "<TR>" );
echo("<td>$row[s_code]</td>");
echo("<td>$row[name_j]</td>");
echo("<td>$row[contents]</td>");
echo( "</TR>\n" );
}
上記を実行すると
$codeにカンマ区切りで入っているデータと
テーブル(table)のs_codeに一致するデータが表示されます。
一致しないデータがあった場合は
$codeのデータのみ表の1列目に記入させることは可能でしょうか。
たとえば、
$codeが (A,B,C)で
table には AとCしか ない場合
--------------------------------
コード コード名称 情報
--------------------------------
Aりんご青森産
B
Cバナナフィリピン産
---------------------------------
説明が下手ですみません。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
order by scodeで読むと仮定して(念のため$codeも自前で整形するようにして)書いてみました。
データベースから読む代わりに配列からforeachで読ませてます。$codeや$db_srrayの中身をいろいろ変えて試してみてください。
<?php
// デバッグ用データの準備
$code = 'A, B, C';
$db_array = array(
array('scode'=>'A', 'name'=>'りんご青森産'),
array('scode'=>'C', 'name'=>'バナナフィリピン産'),
);
// $codeから配列を生成
$code_array = explode(',', $code);
foreach ($code_array as $key=>$value) { $code_array[$key] = trim($value); }
sort($code_array);
$acode = array_shift($code_array); // 1件だけあらかじめ読んでおく
// 読み込み&チェック
foreach ($db_array as $row) {
while ($row['scode'] > $acode) {
print $acode . "<br />"; // データなし分を表示
$acode = array_shift($code_array);
}
print $row['scode'] . $row['name'] . "<br />"; // データあり分を表示
if ($row['scode'] === $acode) { $acode = array_shift($code_array); }
}
// 後処理
while (!is_null($acode)) {
print $acode . "<br />";
$acode = array_shift($code_array);
}
このたびは、ご丁寧にありがとうございました。
教えていただいたことは なんとなくわかるような
気がしたのですが
データベースからデータをひっぱってくることが
うまくいかず、あきらめました。
でも 教えていただいた 「$acode = array_shift($code_array);」の部分を使って
次に教えていただいたyambejpさんの案で
テーブルにいったん記入することにいたし、
うまくいきました。
本当にありがとうございました。
No.3
- 回答日時:
A、B、Cでテンポラリテーブルをつくりouter join (left?)でつなげばよいでしょう
このたびは、ありがとうございました。
先にお答えいただいておりました方の
案も参考にさせていただき
教えていただきましたouter joinでいったん
テーブルに書き込むようにして
うまくいきました。
本来なら こちらのご回答もベストアンサーにさせていただきたいのですが
ベストアンサーは1件しか選べないようでした。
申し訳ございますせん。
今後ともよろしくお願いいたします。
No.1
- 回答日時:
order by scodeになっていないんだからどの順番になるかは不定ですよね?$codeをexplodeした配列から取得出来たscodeを除外して、残ったものを表示すればいいんじゃないですか?
というか、$codeをどうやって組み立てているのかわかりませんが元は配列でしょうに(まさかフォームからの入力をそのままなんてことはありませんよね)。
order by scode を書くなら、データベースから取得したものと配列とをマッチングさせていって「空きがあった」ときに表示することになるので多少は面倒にはなります。シーケンシャルデータのマッチングとかをやった経験があるといいんですが(汗
で、order by scodeになっていなくていいんですか(orderを書くようなら、そう補足してください)。
この回答への補足
ご回答ありがとうございます。
すごい初心者で恥ずかしいのですが
たしかに order by scode でないので
順番通りではないですね。
入ってくる $code のデータの作成は、
別の人が作成していて、,区切りのデータが渡されてきます。
(手分けして作成しているもので)
シーケンシャルデータのマッチングとか やったことがないです。
こんなレベルだと order での処理は 難しいでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP PHP MySql ページング 2 2022/09/20 06:38
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語の配列をPush(追加)する...
-
PHP初心者の質問object(stdClass)
-
文字列の並び替え
-
Eclipseコンテンツアシストでプ...
-
文字列の取得について
-
連想配列に追加ってできるン?
-
かなでの並び替え
-
特定の文からメールアドレスの...
-
PHPは何故値渡しより参照渡しの...
-
php foreach 配列のソート方法
-
数独かを判断するプログラム
-
C++ VS2005におけるイテレータ...
-
配列の複数の値のデータベース...
-
一致しないデータも表示させたい
-
phpの質問です
-
String だと「 ByRef引数の型が...
-
$_SESSIONに二次元配列を使える...
-
CSV読込(fgetcsv関数)で「手...
-
C#のキャスト?
-
$_POSTを一括してサニタイズし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語の配列をPush(追加)する...
-
行列
-
CArrayの要素としてCStringArra...
-
Texでの数式
-
読み(あ行~わ行)ごとに分け...
-
CArrayのソート
-
C言語 最大値と最小値を求めて...
-
fgetc関数について
-
PHPのmin関数、「1」以上の数値...
-
連想配列の文字コードを変換
-
STLのvectorで作った配列をメン...
-
C言語のchar ポインタ
-
C言語で全角文字の扱いについて
-
配列を指定した順序でソート
-
php で1から100までの素数の表...
-
delphi 2次元配列がわかりません
-
np.stack()とnp.array()の違い
-
array_intersectで空欄を比較し...
-
cakephpでのトランザクション処...
-
verilogで、配列の一部をタスク...
おすすめ情報