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

くだすれPHP(超初心者用)5

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/11/22(土) 06:36:02ID:???
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。

PHP Home Page
http://www.php.net/
http://jp.php.net/



くだすれPHP(超初心者用)4
http://pc11.2ch.net/test/read.cgi/php/1213356756/

適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
01661602008/12/10(水) 07:53:28ID:???
>>165
ご返答有り難う御座います

現在インターン中なのですが
そこで課題として従業員のシフト表を作成しています

従業員テーブルから情報を引き出して
それを元に休日テーブルから情報を引き出して表を作成しようと考えています

当初は一度配列に入れてから配列一つひとつをfor文とif文で参照しようと考えていましたが
担当の方にそのアイデアを話してみた所
配列に入れなくても出来ると一蹴されて困っていました。

一度>>165様に頂いたワードを調べて参考にしたいと思います

また別の方法が有りましたら教えていただけると
有り難く思います
0167nobodyさん2008/12/10(水) 07:54:29ID:???
2chでアルゴリズム聞いて実装するとか嫌なインターンだなw
0168nobodyさん2008/12/10(水) 08:13:18ID:???
いや、話を聞いてみるとよくある話。
ちゃんと説明しない嫌な担当だな。

ところで、面白い方法(拡張しないなら冗長だけど)あるよ。
配列もforループも使わない。たぶんifも最小限になる。
RecursiveIteratorIteratorっていうのがあるから、
個人イテレーターを親に日付イテレーターを子に持つようなイテレーターを
定義して、PDOをマップする。日付イテレーターのnext()は次にSQLデータの
有無にかかわらず日付をインクリメントする。
フィルターイテレーターも同時に実装して月別フィルターとか年別フィルター
とか週別フィルターとかも実装する。
テーブルソースの作成部分はデコレーターでデータをラップして文字列化
するようなものにする。
すると、
$obj = new shiftTable(array('scope'=>'month', 'target' => 12));
echo $obj;
で表が自動出力されるようなものが作れる。
01691602008/12/10(水) 08:34:45ID:???
>>167
グループ課題の担当している部分なのでグループ全体に
影響が出ないよう早く見当を付けたいと思い質問させていただきました

>>168
私の知識では拡張という言葉がどれ程の物をあらわしているのか分かりませんが
>>160は若干端折って記入しており、実際には×では無く
休日テーブルを書き換える為のチェックボタンが付いており
従業員が現在休みになっている日は初期画面で黒くチェックが入って表示され
画面テーブルの外部にsubmitボタンが付いています

担当の人の話では
休日テーブルから5と7という値を取得すれば配列に入れなくても
画面テーブルの5番目に表示させてから7まで空のセルをつくり
7番目でまた表示させることが出来ると言われました

それを解決しようと思い>>160の質問に至ったわけです

>>168様の方法も調べて参考にさせて頂きたいと思います
ご返答ありがとうございました
0170nobodyさん2008/12/10(水) 08:48:49ID:???
> 休日テーブルから5と7という値を取得すれば配列に入れなくても
> 画面テーブルの5番目に表示させてから7まで空のセルをつくり
> 7番目でまた表示させることが出来ると言われました

なんというトーニャハーディング、できりゃいいんかい!って感じの考えだな。
SELECTで前回表示のレコードを取得しとくのか、forループで前回データを保存するのか
いずれにしても、表示ロジックをデータ処理に放りこむのか・・・すごいな。
そういうところでは、はいはいって言うこと聞いて逆らわない方がよさそうw

もし、フォーム要素なんかが絡むんなら>>168の方法で基本ロジックを作成して
デコレーターでラップするといいんだけど、習得には多少なりとも時間が
かかるかもしれないのでお勧めはしない。
0171nobodyさん2008/12/10(水) 10:52:26ID:???
fromのポストでsubmitのnameの値を取得する方法を教えてください。

<input type=”submit” name="取得する値” value=”送信” />

0172nobodyさん2008/12/10(水) 11:00:06ID:???
$_POST['取得する値']
0173nobodyさん2008/12/10(水) 11:01:37ID:???
もしくは"送信"が限定されてるなら、array_search("送信", $_POST);
0174nobodyさん2008/12/10(水) 11:07:56ID:???
>>173
誤解していました。
ありがとうございます。
array_search覚えました。
0175nobodyさん2008/12/10(水) 11:29:34ID:???
少しおしえてください。
PDOでInsertをプリペアドステートメントで行うとき、値が空っぽの時、
NULLを挿入したいのですが、NULLじゃなく、''の空が挿入されます。

これってPDOのオプションで自動で''の時は、NULLを挿入することは出来ないのですか?
0176nobodyさん2008/12/10(水) 11:34:32ID:???
どんなソースで実装したの?
0177nobodyさん2008/12/10(水) 12:04:52ID:???
>>176

例えばこんな感じ

$id = 1;
$name = 'abc';
$tel = '03-3333-3333';
$email = '';

$sth = $dbm->prepare("INSERT INTO `test` (id, name, tel, email) VALUES (?, ?, ?, ?);");
$sth->execute(array($id, $name, $tel, $email));

この場合、$email が空になってるので、''でInsertされたと同じになって、
NULLが入りませんので、これをPDOのオプションでNULLに出来たらなと・・

0178nobodyさん2008/12/10(水) 12:13:26ID:???
$emailをNULLにすればよろしい
0179nobodyさん2008/12/10(水) 12:33:55ID:???
$sth->execute(array($id, $name, $tel, null));
にすれば、NULLが入るのは分かってるのですが、、それはめんどくさいですよね。。
0180nobodyさん2008/12/10(水) 12:47:47ID:???
空文字入れたいのか、null入れたいのかの区別がつかないじゃないか。
もし空文字のときは必ずnullでいいならば、間に関数1つかませばいいべ。
0181nobodyさん2008/12/10(水) 12:57:22ID:???
>>179
バインドメソッドで明示的に指定すれば?
0182nobodyさん2008/12/10(水) 12:57:33ID:???
そうですよね。
かますことにします。

ありがとうございます。
0183nobodyさん2008/12/10(水) 13:03:54ID:???

もう一つ聞いてもいいですか?
PDOとMySQL5です。

PDOを使ってSELECTをした場合、クエリーキャッシュは使われてるのでしょうか?

(PDO::MYSQL_ATTR_USE_BUFFERED_QUERYは無効にしてあります)
0184nobodyさん2008/12/10(水) 13:13:49ID:???
MySQLのクエリーキャッシュのことを言ってるなら、MySQLの設定次第
0185nobodyさん2008/12/10(水) 13:18:14ID:???
書き忘れましたが、PHP5.2.0です。

>>184
PHPのネイティブ関数であれば、クエリーキャッシュは効いてるですが、PDOを使うとだめぽっい。。


PHP5.2.1にアップするしかないのかなぁ・・。
0186nobodyさん2008/12/10(水) 14:41:30ID:???
動画データFLVの1コマ目だけをjpegにして、サムネイル化して表示
をしたいのですが、どうすれば出来るでしょうか?


PHP5.2を使ってます。詳しい方いらっしゃったらおしえてください。
0187nobodyさん2008/12/10(水) 14:48:09ID:???
>>185
PHP5.2.0ってだめなの?5.1.17ぐらいから使えるはずだけど。
まぁ、書いてるんだしそうなのかな・・・
0188nobodyさん2008/12/10(水) 15:00:33ID:???
>>187

PHP5.2.0のPDOだとクエリキャッシュが効いてないみたいですね。

PDO::MYSQL_ATTR_USE_BUFFERED_QUERYを有効にすると効きますが、副作用があって。。
0189nobodyさん2008/12/10(水) 18:06:24ID:???
どんな?
0190nobodyさん2008/12/10(水) 18:38:54ID:???
LIMIT ?,? とかやるとエラーになります。
なので、LIMIT 0,10 とか LIMIT {$offset}, {$limit}とやれば良いんですけど・・。 
0191nobodyさん2008/12/10(水) 19:00:30ID:???
まだ勉強中なんですが、phpで実現可能かどうか質問させて下さい

メールを受信した後、それをHTMLとして表示させたいんです。
エンコード状態のマルチパートなメール(ソース?)があるとして、
それをHTMLとして出力するライブラリみたいなのとかありますか?
問題は画像の部分だと思っています。(どう実現するかイメージも沸きません)

具体的な使い方は調べますので、あるかどうかと、
名前とかヒント教えてもらえるとありがたいです。

ちなみに、レンタルサーバ借りて(Web/Mail/php/DB)
iPhoneから使えるWEBメールシステムを自分の為に作ってます
0192nobodyさん2008/12/10(水) 19:05:12ID:???
PEAR Mailに受信したメールを読ませれば添付ファイルまで抽出できる。
メールサーバが立ってるなら、.forward等でphpプログラムに渡すと簡単。
他所のメールサーバーでも、POPやIMAP用の関数でアクセスすることも可能。
解釈部分はPEARが実績があると思う。
0193nobodyさん2008/12/11(木) 01:53:18ID:???
>>191 レンタルサーバだと難しいと思うよ
0194nobodyさん2008/12/11(木) 12:19:57ID:???
>>191
iPhoneならGmail使えば良いのに・・・
0195nobodyさん2008/12/11(木) 12:31:14ID:???
191です
ありがとうございます

>>192
PEAR MailのPOP3でメールとってますが
画像部分を一旦保存しなきゃダメですかね〜
極端な話、メールのテキストと埋め込み画像をまとめて
1つの画像に落としてくれる関数があればいいんですけど都合よすぎですね><
>>193
ネックは画像を抽出する部分とかでしょうか?
>>194
Gmailはメール入力が難ありで・・・
Yahoo!JメールはiPhone用のメール作成画面ないし・・
それと、
あるAさん宛てのメールとAさんから来たメールを抽出して
一覧で見せるようなのをイメージしてます
0196nobodyさん2008/12/11(木) 15:16:35ID:???
>>195 画像抽出は簡単だけど、
送信されてきたメールをプログラムに渡すにはサーバの設定が必要で、
POPから取得するとCRONの設定が必要。
メール送信して、スクリプトにアクセスするならいいけど。
0197nobodyさん2008/12/11(木) 15:47:11ID:???
特定URLに定期的にアクセスしてくれる、CRONサービスがあるから、
それを利用すればOK
0198nobodyさん2008/12/11(木) 15:48:27ID:???
WebMailに使うならアクセス時に全部取りに行けばいいので、
cronはいらないんじゃね?
01991962008/12/11(木) 17:30:03ID:???
ごめん勘違いしてた。じやあIMAP関数使えば楽勝。
0200nobodyさん2008/12/11(木) 22:26:19ID:nahQekTa
//↑DB接続からSELECT文実行まで↑
$perPage=10;
$index=0;
for($i = $index; $i < $index + $perPage ; $i++){
$row = $res->fetchRow(DB_FETCHMODE_OBJECT,$i);
echo $row->id;
//↓$row->***を使用した処理
}
クエリ結果$resから順次行を取り出し$row->***で取得されるデータを使って処理をしたいのですが、echo $row->idを実行してもなにも表示されません(ソース上も)。

$row = $res->fetchRow(DB_FETCHMODE_OBJECT,$i);
↑この部分がおかしいんだとは思うんですが・・・
0201nobodyさん2008/12/11(木) 22:51:56ID:???
fetchRowで$iやめてみたら?
そのままだと$rowでbreakする必要があるかもしれないけど。
0202nobodyさん2008/12/11(木) 22:54:53ID:nahQekTa
>>201
レスありがとう

本当は$indexに現在のページ数が入って$indexの時は1〜10行目まで、$index=2のときは11〜20行目までという風に処理をさせたいのでfetchrowに$iを使わずwhileなどで処理できないんですorz
0203nobodyさん2008/12/11(木) 23:04:10ID:???
>>202
それ、結果セット時点でseekしといた方がいいんじゃないの?
全結果セットから、毎回行指定じゃ重いでしょ。

とはいえ、やりたいことができない理由は他にあるだろうね。
クエリが間違ってるとかない?
0204nobodyさん2008/12/11(木) 23:12:27ID:???
>>203
レスどうもです。
まだ勉強中なのでseekっていうのが・・・・
結果セットから配列なりに格納して結果セットを開放しておくということでしょうか?

クエリのコードは
sql = "select * from table ORDER BY id DESC ";
$res =& $db->query($sql);
if (PEAR::isError($res)) {
die($res->getMessage());
}
で、他のwhileで全行取り出しした場合には上手くうごいてくれているのでクエリは大丈夫かと思うのですが・・・
0205nobodyさん2008/12/11(木) 23:46:54ID:???
あぁ、ごめん、seekって勢いでミスったw

ところで、クエリにLIMITを含めておくわけにいかないの?

あと、fetchRowの行指定は1回だけ発動して、あとはループでいいと
思うんだけど。

あと、単にフィールド名が違うとかじゃないよね?
var_dumpとかしてます?
0206nobodyさん2008/12/12(金) 01:30:02ID:???
普通limitだわな
0207nobodyさん2008/12/12(金) 11:46:01ID:MaDVXqed
if (!is_dir($dir)) {
$rc = mkdir($dir, 0755);
でディレクトリーを作ったら所有者がwwwになります
これをuserにして作ることはできないのでしょうか?
よろしくお願いします
0208nobodyさん2008/12/12(金) 12:32:00ID:???
そんなことができたらセキュリティホールになるでしょう。

しかし、対応としては
Webサーバーの実行ユーザーを変えるか
root権限wで実行してchownもしくは、mkdirのオプションを買うか
CGIモード+suexecで起動するか、
setuidした別のラッパーをかますか、

ま、そんなとこだろう。
0209nobodyさん2008/12/12(金) 12:51:31ID:???
パーミッション777にしとけば困ることないお^^
0210nobodyさん2008/12/13(土) 14:37:33ID:???
そんなことをしたらセキュリティホールになるでしょう。
0211nobodyさん2008/12/13(土) 15:33:14ID:???
>>210
使い方次第でしょ
0212nobodyさん2008/12/13(土) 22:52:57ID:6AnKxTPA
move_uploaded_fileでアップロードされたファイル保存するときに別ドライブを指定するパスの書き方がわからんorz
0213nobodyさん2008/12/13(土) 23:02:04ID:???
そうか
0214nobodyさん2008/12/14(日) 00:20:22ID:???
現在、Windows(XP)で自宅サーバを構築し簡単なphpを使ったサイト(システム)を運営しています。
ところが諸事情の為にレンタルサーバを借りて、自宅サーバで運営していいる物とは異なる
別のphpサイトを構築しようと思っているのですが、現在は自宅サーバで運営しているサイトは、

C:\Program Files\Apache Software Foundation\Apache2.2\htdocs

の直下に配置されたphpのみが起動する作りになっておりますが、
ASP.netの様にプロジェクトごとにディレクトリを分ける事は、出来ないでしょうか?

例)
 @C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\自宅サーバ\index.html
 AC:\Program Files\Apache Software Foundation\Apache2.2\htdocs\レンタルサーバ\index.html

要するに開発しているサイトによってディレクトリを分けたいです。




0215nobodyさん2008/12/14(日) 00:21:45ID:???
rewrite使えば?
02162142008/12/14(日) 00:38:16ID:???
ぐぐってみたところ

動的ページを静的ページにする (mod_rewrite)


というページがトップに表示されたのですが、いまいち私のやりたい事は実現出来なさそうです。
私の認識が誤っているだけかもしれませんが、その「rewrite」というのは
一体何なのでしょうか?

もし参考になうサイトをご存知でしたらお教え願います。
02172142008/12/14(日) 00:52:09ID:???
自己解決しました。
mod_rwrite
という方法を使わなくてもディレクトリをもう一つ用意するだけで事足りました。
02182122008/12/14(日) 01:50:36ID:???
>>213
もし知ってたら教えてくだされorz
0219nobodyさん2008/12/14(日) 01:51:30ID:???
いいよorz
02202122008/12/14(日) 03:24:13ID:???
>>219
かたじけないorz
02212122008/12/14(日) 12:58:16ID:vrT8sAoj
(´・ω・`)
0222nobodyさん2008/12/14(日) 13:21:34ID:???
教えてあげようか?
02232122008/12/14(日) 13:23:01ID:???
>>222
(*´д`;)はいっ
0224nobodyさん2008/12/14(日) 15:06:54ID:???
D:/
とかじゃだめなん?Windowsでやった事ないから勘だけど
0225nobodyさん2008/12/14(日) 15:11:30ID:???
で、でぃーどらいう゛っ?
0226nobodyさん2008/12/14(日) 16:29:22ID:???
>>224
ちょと試してみます
0227nobodyさん2008/12/14(日) 16:32:11ID:???
>>224
これでいけました!!
盲点だったorz
0228nobodyさん2008/12/14(日) 17:42:47ID:???
ほうほう,それで?
0229nobodyさん2008/12/15(月) 06:26:47ID:???
file_put_contents -- 文字列をファイルに書き込む

連続して fopen() , fwrite() , fclose() をコールすることと等価です。

この関数ってどうなの?
0230nobodyさん2008/12/15(月) 06:49:26ID:???
は?
0231nobodyさん2008/12/15(月) 06:52:34ID:???
短く書けるから便利といえば便利だがPHP4では使えない
PHP5なら好きなほう使えばいい
0232nobodyさん2008/12/15(月) 12:09:28ID:???
PHP5つかってます。
youtubeみたいな動画共有サイトを作りたいのですが、動画のアップロードは出来るのですが、
アップロードされた動画をサムネイルで表示する方法がわかりません。どなたか詳しい方いらっしゃったら
教えてください。
0233nobodyさん2008/12/15(月) 12:27:15ID:???
>>232
それよりも作るのはかまわないけど公開するならインフラ周りのこと考えろよ?
まわりに迷惑かけるのだけはやめてくれな
0234nobodyさん2008/12/15(月) 22:35:55ID:???
>>233
インフラを考えずに作ったって糞遅くなるのは目に見えてるよw
しかも維持費にどれだけ金が掛かると思ってるんだろうね。

一流のエンジニアが集まって作られているYouTubeですらあれだけ
重いのに。
0235nobodyさん2008/12/15(月) 22:42:38ID:???
>>234
> インフラを考えずに作ったって

それを言うなら、考えて、では。
0236nobodyさん2008/12/15(月) 23:16:47ID:???
インフラはAmazon EC2、S3とかがオススメだな
回線速度の面で微妙かもしれんが
0237SF4マニア2008/12/16(火) 01:03:15ID:???
本職ではクラサバをメインに開発しているPGですが、
趣味で2年程前からphpでWEBシステムを作っています。

私は、実務でphpを使ったWEBシステムの構築は行った事がないのですが、
実務ではどういった開発環境でphpを使ったWEBシステムの構築を行っているのでしょうか?

因みに、自分はsakuraエディタだけです。
正直、画面のレイアウト等プログラミング以外の部分で時間を取られており、
ASP.net(VS)での開発と比べて無駄に工数が掛かってしまう感が否めません。

皆さんは、どういった環境でphpWEBシステム(サイト)を構築しているのでしょうか?
開発工数を大幅に削減出来るお勧めソフトがあればぜひお教え願います。

0238nobodyさん2008/12/16(火) 01:10:54ID:???
>>237
普通はデザイナーを使うと思うが・・・
0239nobodyさん2008/12/16(火) 01:19:53ID:???
テキストエディタからレベルアップしてけ
0240nobodyさん2008/12/16(火) 01:22:14ID:???
>>238
という事は、画面の作成はデザイナに任せてシステム部分だけをphp(マ)が開発していいるのですか?


>>239
オススメのソフトはありますか?
VSのデザイナ画面は個人的に非常に使い易いです。
0241nobodyさん2008/12/16(火) 01:22:54ID:???
All-in-OneのPDTいれたらhtmlもデザイナでいじれるから楽チンや
0242nobodyさん2008/12/16(火) 01:23:38ID:???
>>240
EmEditorいいよ
0243nobodyさん2008/12/16(火) 01:41:30ID:???
>>241 >>242
参考にさせて頂きます。
0244nobodyさん2008/12/16(火) 01:51:06ID:???
デザイナーというのは、人のこと?
それとも、デザイナーという、ソフトのこと?
0245nobodyさん2008/12/16(火) 02:13:10ID:???
人名
0246nobodyさん2008/12/16(火) 02:20:37ID:???
>>244の意訳

ボタン配置とかして直感的にデザインしたものをコード変換する機能のことか、
職業としてのデザイナーのことかどっちなの?
0247nobodyさん2008/12/16(火) 03:06:22ID:???
>>244
238は職、241は機能
0248nobodyさん2008/12/16(火) 20:12:46ID:XMobQjfA
>>110で質問した者ですが
>>112さんの教えてくださった

$url = array(1 => "リンク1", 2 => "リンク2", ....
uksort($url, "cmp");
print_r($url);

のとこを、

$url = array(apple => "リンク1", banana => "リンク2", ....
uksort($url, "cmp");
print_r($url);

みたいにidを数字ではなく文字にしたい場合どう書けば同じように動作するか教えてほしいです
宜しくお願いします。
0249nobodyさん2008/12/16(火) 20:19:24ID:???
応用能力皆無なのな
0250nobodyさん2008/12/16(火) 20:46:30ID:???
>>248
function中の$a - $bのところ、strcmp($a, $b)に変える
0251nobodyさん2008/12/16(火) 21:20:01ID:???
>>250
ありがとうございます
説明不足ですみません。やってみましたがこれはアルファベット順で並ぶのでしょうか?
キー順でソートしたいのです。
一応自分なりに調べてはいるのですが
foreach ($url as $key => $value)
なんて文をどこかへ追加って感じで方向は合っているでしょうか?
0252nobodyさん2008/12/16(火) 21:22:18ID:???
応用能力皆無なのな
0253nobodyさん2008/12/16(火) 21:25:19ID:???
>>251
ちなみに並ぶけどさ、やってみたんなら並ぶかどうか確認できるでしょ?
配列の並べ替えが終わったら、foreachでもeachでも好きなループ組めば?
0254nobadyさん2008/12/17(水) 17:32:12ID:???
質問があります。PHP5でflvファイルの最初のコマを取得して、画像としてサムネイル化
する事って出来るのでしょうか?レベルが高いかも知れませんが、詳しい方がいらっしゃったら
教えてください。
0255nobodyさん2008/12/17(水) 17:42:39ID:???
なんかこないだからその質問を何回も見るんだけど。
0256nobodyさん2008/12/17(水) 17:52:54ID:???
とりあえず環境書いてないから適当に答えるけど
ffmpegインストールしてphpから呼び出して使えば出来ると思う。
0257nobodyさん2008/12/17(水) 18:01:15ID:???
ググれば簡単に出てくるのに
0258nobodyさん2008/12/18(木) 05:46:38ID:???
教えてください。

PDOでPostgreSQLにアクセスしています。
ところが、全部PDOメソッドだけで実現できないことがあり、
PDOとpg_*関数を混在使用するハメになりました。

そこで質問ですが、
PDOオブジェクトで、pg_*を使うためのデータベースハンドル
を得ることはできるのでしょうか?
できないのなら、PDOでのDB接続とは別に、pg_connectで
DB接続する必要があるということでしょうか?
0259nobodyさん2008/12/18(木) 07:10:30ID:???
実現できないことって何?
0260nobodyさん2008/12/18(木) 09:11:27ID:???
>>259
PDOで、PostgreSQLのbytea型に格納してあるバイナリデータを
読み出そうとすると、不具合があるようなのです。
(公式情報ではないので自分の勘違いかもしれませんけど)

そこでほとんどの処理はPDOで行い、bytea型のR/Wのみ
pg_*関数を使いたいと思っています。
(pg_escape_bytea()とか)
0261nobodyさん2008/12/18(木) 09:45:27ID:???
「PDO」つったら、普通はPECL::PDOの意味?
0262nobodyさん2008/12/18(木) 13:15:36ID:???
標準クラスのだろ
0263nobodyさん2008/12/18(木) 17:34:01ID:???
URLの最後が文字列にするにはどうしたらいいですか?
具体的には
http://test/user/favorite
のようなものを作るにはどうしたらよいですか?
0264nobodyさん2008/12/18(木) 18:26:00ID:???
>>263
mod_rewrite
0265nobodyさん2008/12/18(木) 19:28:42ID:???
>>264
ありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています