トップページ⇒php
1001コメント375KB

【PHP】くだらねぇ質問はここに書き込みやがれpart7

■ このスレッドは過去ログ倉庫に格納されています
00019662005/07/12(火) 01:47:09ID:qOoYFCn7
PHPに関するくだらない質問用すれです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい

・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/

立ってなかったんで>>970に近かった自分が勝手に立てちゃいました。
0683nobodyさん2005/07/31(日) 10:49:49ID:???
テキストボックスに["test","hoge"]
と入れて送信すると
\"test\",\"hoge\"となり、"に\が付くのですが、
どうしたら付かないように出来るのでしょうか?
0684nobodyさん2005/07/31(日) 10:58:59ID:???
>>683
magic_quotes_gpc = Off
ちょっとは自分で調べる癖をつけないと。。。
0685nobodyさん2005/07/31(日) 11:16:20ID:???
$a['name'][0] = hoge という多重配列があって、$a は可変で、様々な名前になっています。

これを、$name = hoge にしたいのですが、どうやって処理するのが効率的な抽出方法で
しょうか?
0686nobodyさん2005/07/31(日) 12:06:48ID:???
>>685
意味がよく判らないな。
とりあえず、自分の考えで書いたソースを貼ってみ。
そのほうが回答は得られやすい。
0687nobodyさん2005/07/31(日) 12:12:36ID:???
>>685
自分で書いてみたけど効率的でないっていうことなん?
効率的の意味(実行速度 or コード量 or 使用メモリ量 etc)もよく判らない。
あと、
$a['name'][0] = hoge
$a['name'][1] = hoge1
とあった場合はどうすればいいの?
0688nobodyさん2005/07/31(日) 15:22:06ID:UMC+uCHN
$valが配列か、普通の変数かを簡単に区別する方法はないでしょうか?
0689nobodyさん2005/07/31(日) 15:26:11ID:???
>>633
is_array
0690nobodyさん2005/07/31(日) 17:19:30ID:???
質問です。
php4.4.0が出ているのに今気づいたのですが、この話題はどこですればいいでしょうか?

【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/

【php】part29【php】
http://pc8.2ch.net/test/read.cgi/php/1120611474/

ここの2つには無いようです。
0691nobodyさん2005/07/31(日) 17:28:50ID:???
質問なら その2つのスレのどっちかで、
新ver.キター ウヒョー ノマノマ(ry なら、フジモト@PHPマスターを讃えるスレ でフッチー乙〜 ってのがいいかと。
06926902005/07/31(日) 17:40:29ID:???
>>691
レスありがとうございます。

フジモト@PHPマスターを讃えるスレ
http://pc8.2ch.net/test/read.cgi/php/1029342427/

このスレですね。

7/11以降の書き込み3、、、

googleでコマメに検索してみる事にします。
ありがとうございました。
0693nobodyさん2005/07/31(日) 18:22:02ID:???
Googleで検索って何がしたいのさ。
0694nobodyさん2005/07/31(日) 20:00:56ID:???
で、結局PHPの入門はどんな書籍を買えば良いのよ?
初心者ってリファレンス買うと失敗しますよねw?
0695nobodyさん2005/07/31(日) 20:17:47ID:tE006mzP
>>694
http://www.php.co.jp
0696nobodyさん2005/07/31(日) 21:33:26ID:???
GETで変数をphpに渡したいんだけど、
http://〜〜/xxx.php?2ch
といった感じで値だけで渡した場合、どうやって受け取れば良いでしょうか?
0697nobodyさん2005/07/31(日) 21:45:33ID:???
<?php phpinfo(); ?>

なページで確かめれ。
0698nobodyさん2005/07/31(日) 22:21:22ID:WZp9m1Ky
str_replaceで使う正規表現の"\r"って何?
0699nobodyさん2005/07/31(日) 22:26:23ID:???
str_replaceで正規表現は使えませんが。
0700nobodyさん2005/07/31(日) 22:40:39ID:???
>>696
QUERY_STRING
0701nobodyさん2005/07/31(日) 22:55:34ID:???
>>697,700
できました。ありがとうございます。
$_GETで取得しようとしてました。
0702nobodyさん2005/07/31(日) 23:30:19ID:???
<img src="./hogehoge.png" alt="hogehoge" />
って飛んできたら
<img src="./hogehoge.png" alt="hogehoge" width="88" height="31" />
ってな風に、画像のwidth , height を取得してタグを適宜変換してくれるようにしたいのだが、どうしたものか全くわからん。
0703nobodyさん2005/07/31(日) 23:52:01ID:???
やりたいことがさっぱりわからん
0704nobodyさん2005/07/31(日) 23:56:07ID:???
>>702
どっからどこに飛んでくるんだ?
0705nobodyさん2005/07/31(日) 23:59:31ID:???
>>702
たぶんこんな感じのことかな?

<?php
$src = './hogehoge.png';
$alt = 'hogehoge';
list($width, $height) = getImageSize($src);
?>
<img src="<?=$src?>" alt="<?=$alt?>" width="<?=$width?>" height="<?=$height?>" />

はずしてたらスマソ
07067022005/08/01(月) 00:11:11ID:???
説明不足スマソ。
だが、 >>705 の説明がかなり的確。�dクス。
0707nobodyさん2005/08/01(月) 01:47:04ID:???
すごい無駄なことするんだな
0708nobodyさん2005/08/01(月) 02:02:48ID:???
>>707
誰に言ってんの?
0709nobodyさん2005/08/01(月) 02:39:23ID:???
受け取った$_GET['hoge']の値を受け取った後でスクリプトの中で別の値で上書きしちゃうとかってありでしょうか?
これをやると処理が非常に簡単になるんですが・・・
スパーグローバルを勝手にいじるってことの良い悪いがわかりません。
0710nobodyさん2005/08/01(月) 03:03:21ID:???
>>709
あり
0711nobodyさん2005/08/01(月) 03:59:17ID:???
>>710
いや、ないだろ?
0712nobodyさん2005/08/01(月) 04:15:02ID:???
単なる変数だし、いいんじゃないの?
0713nobodyさん2005/08/01(月) 06:13:40ID:???
>>712
そういう変なことやられると、引き継いだ奴が苦労するんだよ
今は個人でも変な癖はつけられると困る
0714nobodyさん2005/08/01(月) 06:21:03ID:???
>これをやると処理が非常に簡単になるんですが・・・
この時点で結構アイタタなソースのような希ガス。
根本的に作りが変なのでは。。。
0715nobodyさん2005/08/01(月) 06:50:03ID:KP4xPzSt
定数だと思うべし
0716nobodyさん2005/08/01(月) 07:43:23ID:???
>>705
list( , , , $size) = getImageSize($src);
?>
<img src="<?=$src?>" alt="<?=$alt?>" <?=$size?> />
0717nobodyさん2005/08/01(月) 10:05:10ID:???
>>708
702に対してに決まってるだろ文盲
0718nobodyさん2005/08/01(月) 10:15:05ID:???
>>707
俺は無駄ではないと思うが。
指定しないと表示が遅くなるし、読み込み中にレイアウトが崩れる。
0719nobodyさん2005/08/01(月) 10:24:47ID:???

━━━━━━━━━━━━━━━俺様用しおり━━━━━━━━━━━━━━━
0720nobodyさん2005/08/01(月) 11:06:43ID:???
いや、詩織は漏れの物だから
0721nobodyさん2005/08/01(月) 13:19:35ID:???
マニュアルが新しくなってたんでchmファイルをダウンロードしたんだけど前回同様キーワードが文字化けします。
誰か文字化けしないchm作って
くれないか
0722nobodyさん2005/08/01(月) 13:23:31ID:???
>>721
ここを参考に自分で汁
ttp://apollo.u-gakugei.ac.jp/~sunaoka/misc/php_manual_ja/
0723nobodyさん2005/08/01(月) 13:46:58ID:???
GDで画像に文字列を描画する際に文字列を特定の範囲内でセンタリングする方法ってありますか?
0724nobodyさん2005/08/01(月) 13:51:13ID:???
>723
画角から自分で計算汁
07257232005/08/01(月) 14:05:43ID:???
>>724
やはり自分でやるしかなさそうですね。
文字列はいろいろ変わるのでその都度自動計算させる必要があるのですが、
計算の仕方に今ひとつ自信がありません。
imagettftextを使っているのですが、
単純に「全角の横幅=指定したサイズ」「半角=全角の半分」「文字間隔=1px」と考えていいのでしょうか?
フォントによっても変わりそうだし、どうしたものか・・・。
0726nobodyさん2005/08/01(月) 14:40:44ID:???
>>725
つ [imagettfbbox]
0727nobodyさん2005/08/01(月) 15:23:45ID:moKfjlj6
コマンドライン用のスクリプトを「php -l xxx.php」でチェックしたら以下のエラーが出ました。
変数周りは確認しましたが$の付け忘れや$のみなどはありません。
何が原因なのでしょうか?(linux+PHP 5.0.4(CLI)使用)

Parse error: parse error, unexpected $ in xxx.php on line 110
Errors parsing xxx.php

なお110行目はEOFです。
 108: ?>
 109: [改行のみ]
 110: [EOF]
07287232005/08/01(月) 16:13:43ID:???
>>726
自動計算ができるみたいですね。
かなり便利そうなので試してみます。
どうもありがとうございました。
07297272005/08/01(月) 16:30:01ID:???
すみません。解決しました。
0730nobodyさん2005/08/01(月) 16:30:56ID:???
>>722
最初出来なかったけどファイル名のH:/phpdoc/ja/を削除してやったら出来ました。
情報有賀と
0731nobodyさん2005/08/01(月) 18:32:41ID:???
>>713
「変なこと」か?ならば何故仕様上
書き換えできないものにしていない>PHP

いや俺も個人的にはやらないけど、書き換わってる可能性も
含めて他人のコードは読んでるよ。実際結構書ける人でも
そういうコードもあるし。
0732nobodyさん2005/08/01(月) 18:36:17ID:???
>>731
PHPの仕様は信用ならないからな
0733nobodyさん2005/08/01(月) 18:39:01ID:???
出来ること=変じゃない

が成り立つならこの世の中には変なモノは一切存在しえないよ
0734nobodyさん2005/08/01(月) 19:00:37ID:???
クライアントがクッキーを拒否しているかを
調べる方法があったように記憶しているのですが
思ったのですが、どうすればいいんでしょうか?
0735nobodyさん2005/08/01(月) 19:07:49ID:???
$sql = "select * from hoge;";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)){

大抵の場合、ここ(mysql_fetch_arrayのループ内)で、$row['hage']という形で値を取り出しますが
mysql_fetch_arrayのループより、後ろでこの値を使いたい場合はどうしたらよいのでしょうか?

$atode['a'] = $row['a'];
$atode['b'] = $row['b'];
$atode['c'] = $row['c'];
みたいにループ内で別の配列に入れておいて
}

ループを出てから
$atode['a'] 、$atode['b']、$atode['c']を使えば良いみたいですが、配列を添字を保ったまま別の配列に入れてしまう方法(いちいち配列の数の分書かなくても)方法ってあるのでしょうか?
0736nobodyさん2005/08/01(月) 19:13:08ID:???
>>714
あ、そういうのやっちゃってました。
if(!$_GET['mode']){$_GET['mode]='main';}とかって。
逝けないことだったんですか。
$_GET['mode']でcase文使って分岐させるのに、初期化の意味も込めて上記のように書いてたんですが。
0737nobodyさん2005/08/01(月) 19:18:28ID:???
>>734
全くゼロの状態でクッキーの可否を確認する方法は無いような気がする。
チェックしたいページの前にクッキーを食わせるダミーHTMLを置いて本命ページで食ってるかチェックするとかはどう?
JavaScript使えるならwindow.navigator.cookieEnabledでチェックできるみたいだけど(ブラウザの制限不明)。
0738nobodyさん2005/08/01(月) 19:35:16ID:???
>>735
1レコードだけなら
 ループ内で $atode = $row;
 ループ外で $atode['a'];
全レコードなら
 ループ内で $atode[] = $row;
 ループ外で $atode[レコード��]['a'];

でも、ループ外でレコードの内容が必要なケースってなんなんだろう。
ループ内で処理できんのかのぉ。
0739nobodyさん2005/08/01(月) 19:36:12ID:???
>>735
ループ後 $atode = $row でいけると思う。ってか$rowをそのまま使ってもいいんじゃないの?
0740nobodyさん2005/08/01(月) 19:54:11ID:IMj74JwV
>>737
>全くゼロの状態でクッキーの可否を確認する方法は無いような気がする。
そうですか。Javascriptと勘違いしてたかも。
>チェックしたいページの前にクッキーを食わせるダミーHTMLを置いて本命ページで食ってるかチェックするとかはどう?
Javascriptは使わないポリシーなので検討してみます。
蟻10
0741nobodyさん2005/08/01(月) 19:59:59ID:???
>>736
ソースのあちらこちらで変更していないであれば、いいんでないかい。
漏れも含めて多分、グローバル変数である$_GETを「あちらこちら」で
書き換えられるとトラブル時に追いかけづらいから嫌悪感があるんだろうと思う。
個人的には$_GET等のスーパーグローバル変数は参照専用のほうが心理的にはありがたいんだけどね。

ちなみにその例であれば
 switch (isset($_GET['mode']) ? $_GET['mode'] : 'main') {
  case 'main':
   //main または省略時の処理
 }
でいいのではないかと。
0742nobodyさん2005/08/01(月) 20:12:58ID:???
>>741
それならdefault使えばいいんじゃないか?
0743nobodyさん2005/08/01(月) 20:13:31ID:???
こんなことをしているんですが、もっと簡単な書き方はありませんか?

function serch ($foo) {
foreach ($foo as $key1 => $key2) {
if (! is_array($foo[$key1])) {
$foo[$key1] = htmlspecialchars(mb_convert_encoding($key2,"EUC-JP","UTF-8"));
continue ;
}
else {
foreach ($key2 as $key3 => $key4) {
if (! is_array($foo[$key1][$key3])) {
$foo[$key1][$key3] = htmlspecialchars(mb_convert_encoding($key4,"EUC-JP","UTF-8"));
continue ;
}
else {
foreach ($key4 as $key5 => $key6) {
$foo[$key1][$key3][$key5] = htmlspecialchars(mb_convert_encoding($key6,"EUC-JP","UTF-8"));
}
}
}
}
}
return $foo;
}
0744nobodyさん2005/08/01(月) 20:39:48ID:???
>>742
無指定(設計動作)と、よく判らん値を指定してきた
変なパターンは別にさせたいときもあるし。
0745nobodyさん2005/08/01(月) 20:52:46ID:cnoIwIPs
>>743
テストしてないけどリカーシブコールを使えばいいような希ガス。
元のコードをざっとしか見ていないんで間違っていたらスマソ。

function serch ($foo) {
 foreach ($foo as $key1 => $key2) {
  if (! is_array($foo[$key1])) {
   $foo[$key1] = htmlspecialchars(mb_convert_encoding($key2,"EUC-JP","UTF-8"));
  } else {
   $foo[$key1] = serch($key2);
  }
 }

 return $foo;
}
0746nobodyさん2005/08/01(月) 22:20:03ID:???
>>738
ありがとうございます。まさに知りたい事はそれでした。
いちいち書かなくても添字(キー)がちゃんと渡されるんですね。いままでなんて面倒な事をしてたんだorz
今回必要だったのは1レコードしかヒットし得ないクエリだったのですが、複数ヒットした場合の例も試してみました。
ループ内で $atode[] = $row;
ループ外で $atode[レコード�]['a'];
この場合、レコード�のところには、ループの回数(もちろん0から)が入る、ということで良い訳ですよね?(一応動作させてみましたけど念のため聞く。)

>ループ外でレコードの内容が必要なケースってなんなんだろう。
ループの前後にテーブルやリストタグを書くのがいやで、すっきりと書きたいと思ってた次第です。ただそれだけの事なんですが。

>>739
ループ閉じた後はダメじゃないですか?

>>741
自分でも解らなくなるので、もちろん最小限にしてます。値が無いときに初期値を与えるとか、その程度です。

>>744
そうそう。そんな感じです。エラーはエラー、値がないと言うのは、想定内のことなんで。
0747nobodyさん2005/08/01(月) 22:34:31ID:???
ブログのトラックバック機能を作っています。

受信は問題なくできるのですが、送信が全くうまくできません。
ただ、自分の利用しているサーバ内であれば
フリーブログなどと送受信出来るので、送信機能には
問題ないのかも?っと思っています。

ping送信するに辺り、何か設定が必要なのでしょうか?
(php.ini的に)
07487382005/08/01(月) 23:48:09ID:???
>>746
ループの回数という表現に違和感あるけど、多分あってる。
0〜レコード数(ループの回数) - 1 の値ね。希望通り動作したのなら大丈夫かと。

>ループの前後にテーブルやリストタグを書くのがいやで、すっきりと書きたいと思ってた次第です。ただそれだけの事なんですが。
ふむふむ。
確かに漏れもそう書くな。ただループ内でデータをHTML化して文字列に代入してしまうから
オマイさんのやりたかったことがピンとこなかったわ。まぁ人それぞれなので参考まで。

$optionhtml = '';

while ($row = mysql_fetch_array($result)){
 $optionhtml .= sprintf('<option value="%d">%s', $row['id'], $row['data']);
}

print <<<EOD
<select name="xxx">
${optionhtml}
</select>
EOD;
0749nobodyさん2005/08/02(火) 00:40:44ID:???
>>748
>ループの回数という表現
変な言い方でした。sqlのヒットしたレコードの1件目が[0]2件目が[1]と、こういう意味です。
示していただいた例は、漏れにはちょっと難しすぎました。が、頑張って解読してみます。
ちょっと話はそれますが、phpのスクリプトでDBと連動させて吐き出したhtmlのソース、みなさんは綺麗さとか気にしますか?
漏れは、htmlばかりずっと書いてたんで、吐き出されたソースも綺麗にインデントのレベルがそろうように書いてます。ばからしいと思いつつ。
07507392005/08/02(火) 01:00:42ID:???
>>746
DBの取得じゃないけどこれ↓だとループ後でもいける。
多分やってることは一緒だと思うので。

$a = array(1,2,3,4,5,6,7,8,9);

$cnt = count($a);
for($i = 0; $i <$cnt; $i++){
  $row["test".$i] = $a[$i];
  print($row["test".$i] ."\n");
}

$atode = $row;

$cnt = count($atode);
for($i = 0; $i <$cnt; $i++){
  print($atode["test".$i]."\n");
}
0751nobodyさん2005/08/02(火) 02:44:27ID:???
>>747
よくわからんが、オープンソースのを参考にするんじゃだめなのか?
ダメならここで聞いて作るのもダメな気がするがそれはいいの?
0752nobodyさん2005/08/02(火) 06:08:14ID:???
if (ereg("[0-9]{8}",$aaa)==false){
//エラー処理
}
$aaaが半角数字8文字でないときにエラー処理したいんだがうまくいかない
8文字以下ならエラー処理できるが8文字以上ならとおる・・・
なんか間違ってる?
0753nobodyさん2005/08/02(火) 06:34:12ID:???
^と$
07547472005/08/02(火) 06:54:45ID:???
>>751
参考にしています。ただ、外部に送信だけがなぜか出来ません。
ですので、サーバ的な問題があるのかと思い、
質問させていただきました。
0755nobodyさん2005/08/02(火) 10:56:22ID:pypKKfs6
初心者です。
画像のアップロードを含む個人情報登録画面を作ってます。

入力画面(データ入力)→確認画面(OKか確認のみ)→DB登録画面(insert文実行)

と遷移していく中で、入力画面からinput type="file"で画像を選択して
アップしたいんですが、move_uploaded_fileで渡すパラメータ($_FILESの中身)
って、hiddenか何かで持てないですかね?
そうじゃないと、DB登録と同じタイミングで画像をアップできなくて。
今は、確認画面で画像を実際にアップ、DB登録エラーなら画像を削除とか
面倒なことを考えています。
しかも、確認画面から戻るときも画像を消さないといけないし・・・。
似た処理を作った方教えてください。
ちなみにDBはMySQLです。
0756nobodyさん2005/08/02(火) 11:08:44ID:???
>>755
無理
0757nobodyさん2005/08/02(火) 11:15:37ID:???
>>755
アップロード時点でテンポラリーに入ってる訳だから、
それが消えるまでの間にDBのINSERT掛ければ良いと思うが?
成功すればmove_uploaded_fileで格納。
類推しにくいテンポラリー名だとしてもHIDDENは止めれ。
SESSIONで持っとけ。

あと確認画面でアップロードした画像はそのままで、テキストだけ
訂正したい場合の「やり直し」もモードに入れといたら?
0758nobodyさん2005/08/02(火) 11:16:37ID:???
やっぱムリすか・・・
こういうもの作ってる人いると思うんだけどどうやってるんだろう?
やっぱ上で書いた方法なのかな。
ヤフオクとかもそういう動き(あっちはJavaだが)してるけど、
効率のいい方法は何かないものか・・・
07597572005/08/02(火) 11:17:03ID:???
>確認画面から戻るときも画像を消さないといけない
これが要件なら仕方ないな。
0760nobodyさん2005/08/02(火) 11:18:39ID:???
>>755
input type="file"がなぜvalue値を指定できないようになっているのかを考えろ
それにPHP4から$_FILESで得られる名前はファイル名のみでファイルパスは含まれなくなったし
0761nobodyさん2005/08/02(火) 11:21:34ID:???
画像のアップロードは一番最後にする
07627552005/08/02(火) 11:25:12ID:???
>>757
レスどうもです。
やっぱSESSIONのほうが安全ですかね。
セッションは仕様としてやらないって方向だったんですが
(そこまでのシステムじゃないだろうってことで)
提案してみます。

>あと確認画面でアップロードした画像はそのままで、テキストだけ
>訂正したい場合の「やり直し」もモードに入れといたら?

モード追加は厳しそうです。決断権あんまりないもので・・・orz
入力画面に戻るたびに画像は再度指定し直すって方法でいこうと思ってます。
07637552005/08/02(火) 11:31:52ID:???
>>757
そうじゃないと、画像だけアップされてDBにデータの無いものは
なにも関連のないゴミ画像として残りますよね。
トランザクション成功時のみアップされればいいんですが・・・。

>>760
クロスサイトスクリプト対策、ですか?
すんませんイマイチ判ってないです。

>>761
確認画面で画像をアップ、ってことですか?
それはチト仕様上厳しいです。

厨な回答してたらごめんなさい。
0764nobodyさん2005/08/02(火) 11:45:31ID:???
全部の登録が完了してから、改めて画像アップさせりゃいいものを…

>それはチト仕様上厳しいです。

それは仕様が糞なんでは?
07657572005/08/02(火) 12:02:46ID:???
うーん、マニュアルより
>移動または名前の変更が行われていない場合、リクエストの
>終了時にそのファイルはテンポラリディレクトリから削除されます。
俺書いたプログラムでアップロードを受けるスクリプト以外でも
難なく取れてたような...ゴミ処理は自動でもしてたみたいだけど。
0766nobodyさん2005/08/02(火) 12:08:34ID:???
>>755
確認画面で画像を表示する場合は、大体こんな処理をしてるのが多いんジャマイカ?
1. 入力画面 - input type="file"
2. 確認画面 - move_uploaded_fileで一時ファイルとしてどっかに保存。
 画像表示(<img>)にもこの一時ファイルを使う。hidden(or session)で一時ファイル名を保持。
3. 登録画面 - 一時ファイルを正式ファイルに変更(変名とか移動とか)。DBに登録。

処理中断や入力し直しで残った一時ファイルは、定期的に削除。(cronやら、手動やら)

一時ファイルを作りたくなかったら、画像データそのものをhiddenに仕込むなり
sessionに仕込むなりするしか無いと思われ。
0767nobodyさん2005/08/02(火) 12:10:17ID:Svt/6T9+
PHP+MySQL
MySQLに、2つのテーブルがあり、IDというフィールドをキーにしてリレーションをします。

テーブル1:ID、category
テーブル2:ID、name

この様な場合に、テーブル1のcategoryに対するテーブル2nameを全て列挙したいのですが、
どのようなクエリとPHPを書くのが一般的なのでしょうか。

いま考えているのは、
SELECT name FROM テーブル1 WHERE ID=○○
のようなクエリ自体をテーブル1のレコード数ループさせながらprintするというものなのですが、
あまり良い方法では無いような気がします。
07687672005/08/02(火) 12:11:38ID:Svt/6T9+
追記です。

表示結果は以下の様にしたいです。

カテゴリー1
 名前
 名前
 名前
カテゴリー2
 名前
 名前
 名前
  ・
  ・
  ・
07697572005/08/02(火) 12:12:19ID:???
ごめん、やっぱりPHPの仕様に合わせて確認表示時に
アプリ自前のテンポラリーに移動してたわ。mtimeを目安に自前でgcも。
>>757と>>765は嘘。
んで、テキスト関係の登録と同時に自前のテンポラリーから正規のところに移動。
(確認→訂正時には自前のテンポラリーからは削除しない。gcか正規登録時に削除するのみ)

07707552005/08/02(火) 12:20:20ID:???
次の質問来てるとこすみません。

>>769は、つまり>>766と同じような仕様ということですよね?

つまり
確認時に画像アップ(自前の一時ディレクトリに)、DB登録時に一時ディレクトリから移動
訂正時の画像はそのタイミングでは消えない、と。

一時ディレクトリの画像は定期的に消そうと思います。
この仕様でやってみます。ありがとうございました。
0771nobodyさん2005/08/02(火) 12:24:24ID:???
>>767
DB板の方がいいと思うんだが、、、
つ [ SQL 結合 ]
07727672005/08/02(火) 12:27:47ID:Svt/6T9+
すいません。
2chビギナーで、DB板というのがあるんですね。。。
マルチポストになりそうですが、行ってきます。
0773nobodyさん2005/08/02(火) 12:31:07ID:???
いや、DB板にきても、
つ [ SQL 結合 ]
とレスしちゃいますが。。。
0774nobodyさん2005/08/02(火) 12:37:37ID:???
>>767
SELECT category, name from テーブル1, テーブル2 where テーブル1.ID = テーブル2.ID
0775nobodyさん2005/08/02(火) 12:46:50ID:???
>>767
お前リレーションがわかってないだろ
07767672005/08/02(火) 13:15:53ID:Svt/6T9+
>774
 ありがとうございます。
この結果を768の様に表示したいんです。

>775
リレーションって何ですか?
わかっている人の説明が聞きたい。
0777nobodyさん2005/08/02(火) 13:19:26ID:???
>>776
あらら。こちらのスレとマルチだったのね。MySQLスレの方にレスしちまった。
MySQLスレの106を確認よろ。
0778nobodyさん2005/08/02(火) 13:48:58ID:???
>>776
キーフィールドを使って複数のテーブルをいろいろ(LEFT RIGHT INNER OUTER)と簡単に結合(JOIN)できるのがリレーショナルデータベースの利点
0779nobodyさん2005/08/02(火) 15:47:21ID:???
Mon Aug 1 00:00:00 2005 という文字列から、
2005/08/01 という文字列を返してくれるような
便利な関数はありませんか?
07807432005/08/02(火) 15:58:18ID:???
>>745
ありがとうございました。
期待した結果となりました。

非常に参考になりました。
0781nobodyさん2005/08/02(火) 16:01:46ID:???
>>779
この手の質問って定期的にあるな。
PHPマニュアルの日付関連の辺りを読んで、色々やってみりゃいいのに。

$day = date('Y/m/d', strtotime('Mon Aug 1 00:00:00 2005'));
0782nobodyさん2005/08/02(火) 16:11:11ID:???
>>779
date('Y/m/d',strtotime ("Mon Aug 1 00:00:00 2005"))
んでも、そんな不思議文字列使うよりは、タイムスタンプに統一した方がいいんでないの?
たぶんDBからの取得データだと思うから、SQLやDBの設定あたりで解決するほうがよいかと。
■ このスレッドは過去ログ倉庫に格納されています