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

【PHP】下らねぇ質問はここに書き込みやがれ 43

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん2007/04/01(日) 04:21:50ID:VGqlLhlD
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 41
http://pc11.2ch.net/test/read.cgi/php/1173163186/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc10.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc10.2ch.net/db/subback.html
0844nobodyさん2007/04/10(火) 19:25:57ID:???
            _,,‐─-v‐、,,、
         ,,-‐'": : : : : : : : : : `ヽ
        /: : : : : : : ,,__ : : : : : : \
      r': ,、,,.-─''"゛   ミ : : : : : : : 'i、
       `/ /        ミ_ : : : : : : :,、}
      i l    _,,..-‐^‐-、 `゙i: : : /l.l|
      i、}‐-、 ヽ;;/,rェッ;;'"  ゙ー' 9iリ!
      |  ',tテi  ヽ='"     ゞ t'
       |  'i"´| , -、         ヽ-、,,___
       |  '}、 !,,tu'"  ヽ、  ,l: ‐-‐" }: : : : :
       }   lヽ、__,,,.-‐ヽ  /: : : : : : /|: : : : :
     ,r/  /: : :ヽー‐'  ノ: : : : : : : / .|: : : : :
     /: \ /: : : : : 丶,, -''_: : : : : : /  |: : : : :
    /: : : : :ヽ/: : : : : : : ヾ''‐--‐ヽ   |: : : : :
   /: : : : : : : : : : : : : : : : : : ヽ\: : /   |: : : : :

     ビップ=デ=ヤレー[Vuip De Yale]
         (1955〜 フランス)
0845nobodyさん2007/04/10(火) 19:57:30ID:daN1ASwg
PDOでMySQLに接続したいんだけど、どういうわけか接続できていない。
MySQLのバージョンは5.0.22なんだけど、PHP5.1.6のPDOはサポートしてる?
教えてくれ。
0846nobodyさん2007/04/10(火) 19:58:46ID:???
複数モジュール間での値の受け渡しで行き詰まってます。

  |(a)別のHTMLのフォームからのPOST
  ↓
+----------------+ 実行  +----------------+
| 親モジュール.php |------->| 子モジュール.php |
+----------------+      +----------------+
    ↑                 |
    └−−−−−−−−−−−┘
     (b) 親モジュールが生成するHTMLに結果を渡したい

(a)のPOSTで渡ってきたフォームのデータを、親モジュールでたとえば

  $user_id = $_POST['USER_ID']

として取って、$user_idをrequire_onceで子モジュールに渡し、子モジュールではDBからuser情報をselectします。
子モジュール内には、HTMLを出力するような処理はなく、単純にDBからのselectのみです。

次に、select結果を変数に入れ、(b)のように親モジュールが生成する
HTML上のフォームに返したいのですが、そもそものフォームへの返し方がわかりません。

希望する処理の流れを整理すると。

 (1) 静的なHTMLファイルのフォームから親モジュールにPOST
 (2) 親モジュールはPOSTされた情報を使って子モジュールを実行し子モジュール内の変数に結果を代入
 (3) 子モジュール内の変数にセットされた結果を親モジュールが生成するHTML内フォーム(HIDDEN属性など)にセット
 (4) このタイミングで、親モジュールのHTMLが出力される

という処理をやりたいと思っていますが、
どのような方法を使えばよいか、ヒントだけでもご教示いただきたく。
現状、(2)までは出来ていて、(3)の部分で行き詰まっているところです。
08478462007/04/10(火) 19:59:55ID:???
一部訂正します。
>$user_idをrequire_onceで子モジュールに渡し、

は、

$user_idをrequire_onceで実行した子モジュールに渡し、

という意味です。
0848nobodyさん2007/04/10(火) 20:17:38ID:???
>$user_idをrequire_onceで子モジュールに渡し、
ここが意味わかんないです><
0849nobodyさん2007/04/10(火) 20:20:17ID:???
IDがでてないよ
0850虚弱PHP2007/04/10(火) 20:20:37ID:???
>>846
なにに躓いているのか分からない…。

俺だったら親がResultオブジェクトを用意して子に渡し、
子はResultオブジェクトに値を設定してリターン。
0851nobodyさん2007/04/10(火) 20:21:48ID:???
何が分からないのか分からないのですが
普通にDBから取得した値を変数に代入するなりすればいいだけじゃないかと
08528462007/04/10(火) 20:22:04ID:???
>>848
わかりにくくてすみません。
まだPHPを初めて数日なものでして。。。(´・ω・`)

HTMLを生成しないPHPモジュール内の変数の内容を、
別のPHPモジュールが生成するHTMLのフォームに
渡す方法を知りたい、という感じです。
0853nobodyさん2007/04/10(火) 20:22:43ID:???
>>852
http://pc11.2ch.net/test/read.cgi/hp/1175593499/319
0854nobodyさん2007/04/10(火) 20:25:43ID:???
>>852
いやだから現在$user_idをrequire_onceを渡してるの?
できてるとこまでソース見せてくれ
0855nobodyさん2007/04/10(火) 20:26:22ID:???
>>852
requie_onceしているだけならそのままそれが使えます
>>850の言ってるみたいにその小モジュールというのが
オブジェクト群とかでそれに渡しているのならそれを返せば良いだけ
08568462007/04/10(火) 20:32:26ID:???
>>850>>851>>853-855

アドバイスありがとうございます。
ソースが会社なもので、今手元にありません。
戴いたアドバイスを元に、明日頑張ってみます。
あと、ソースを支障ない範囲に加工して明日はらせていただきます。
0857nobodyさん2007/04/10(火) 21:38:43ID:???
だめだこりゃ
0858nobodyさん2007/04/10(火) 21:40:29ID:???
そんな程度のスキルで書かれたソースなんて誰だれがパクるんだwww
無駄な心配しなくていいよ846君
0859nobodyさん2007/04/10(火) 21:42:08ID:???
プロだとは思えない
08608462007/04/10(火) 21:46:19ID:???
いえいえ、仕事はできますよ
0861nobodyさん2007/04/10(火) 21:47:05ID:???
給料もらえてるのが、幸せだと思う
0862nobodyさん2007/04/10(火) 21:49:02ID:???
まあそれはそれで幸せだからがんばってくれ
0863nobodyさん2007/04/10(火) 21:56:44ID:???
session_start()もheaderと同じく何も出力される前でいいんだっけ?
0864nobodyさん2007/04/10(火) 22:06:22ID:???
うん
08658462007/04/10(火) 22:10:47ID:???
>>858
すみません。
いえ、パクられるなんてこれっぽっちも思ってません。
ただ、作ってるソースをそのまま貼ったのが会社にバレると、
こんなものでも面倒になるので、ということで。。。

>>860
別に私をカタるのは構いませんが、初心者おちょくるのは楽しいですか?
0866nobodyさん2007/04/10(火) 22:12:12ID:???
ID出さないで質問、レス記述してるのも問題じゃないの
0867nobodyさん2007/04/10(火) 22:16:03ID:???
一応言っとくとメール欄に何も書かないとID出るから
08688462007/04/10(火) 22:23:24ID:???
>>866
トリップってやつを付ければいいんでしょう?
sage進行かと思って、ずっとsageをメル欄に入れてました。

トリップの付け方、勉強してきます。。。。
0869nobodyさん2007/04/10(火) 22:28:51ID:???
もうこりゃワザとだな
0870nobodyさん2007/04/10(火) 22:33:46ID:???
>>846

>>1をよくよみましたか?
0871nobodyさん2007/04/10(火) 22:36:53ID:???
sage信仰なんてものは都市伝説です
sageは自演隠しのための機能ですw
0872nobodyさん2007/04/10(火) 22:39:08ID:???
ワザとですね
0873nobodyさん2007/04/10(火) 22:41:28ID:NUin5iQl
class Test {
  private $var;
  function __construct($arg) {
    $arg = $this->var;
  }
  function test() {
    return $this->var;
  }
}

$obj = new Test('hogehoge');
echo $obj->test();

例だとhogehogeを出力したいのですが、出力できません。
どこがおかしいのでしょうか?
08748732007/04/10(火) 22:46:54ID:NUin5iQl
すみません、自己解決しました。
$arg = $this->var;
ではなくて、
$this->var = $arg;の順ですね。
スレ汚し失礼しました。
0875nobodyさん2007/04/10(火) 22:47:11ID:???
$arg = $this->var; 

この辺
0876nobodyさん2007/04/10(火) 23:21:59ID:6hVZtA40
空メールシステムの簡単な説明サイトなどはありませんか?
0877nobodyさん2007/04/10(火) 23:22:32ID:ywkUcui/
スイマセン 教えて頂きたいのですが PHP.iniの設定は3ファイル全部設定するのでしょうか?
0878nobodyさん2007/04/10(火) 23:28:48ID:???
>>877
意味がわからない
3ファイルって何のこと
0879nobodyさん2007/04/10(火) 23:29:09ID:???
>>876
PHPとなんの関係もないぞ
0880nobodyさん2007/04/10(火) 23:32:52ID:???
>>877
php.ini-distとか-recommendedとかのこと?
0881nobodyさん2007/04/10(火) 23:38:14ID:6hVZtA40
>>879
ごめ、普通にスレ間違えた
0882nobodyさん2007/04/10(火) 23:44:19ID:+1UvK/Fa
テキストフォームに入力されたデータが自然数かどうか判定するために
とりあえず整数かどうかの判定をしようと思って

if( is_int($_GET["data"]) == FALSE )
 echo"エラー:入力されたデータは整数値ではありません。";

としてみたのですが、何を入力してもエラーが表示されてしまいます
なぜでしょうか?
0883nobodyさん2007/04/10(火) 23:46:47ID:???
エラーに書いてあるとおりですw
0884nobodyさん2007/04/10(火) 23:47:39ID:???
>>882-883
糞ワロタwwwwwwww
0885nobodyさん2007/04/10(火) 23:48:46ID:+1UvK/Fa
???
例えば3を入力した場合
is_int($_GET["data"])の返す値はTRUEにならないのでしょうか?
0886nobodyさん2007/04/10(火) 23:52:21ID:???
is_int()の仕様読まずにカキコ
引数が整数値じゃないとfalseじゃないの?
$_POSTの値は数値でも文字列だよ
やるならctype_digit()で
0887nobodyさん2007/04/10(火) 23:59:59ID:???
入ってる値をint型にするのなかったっけ
0888nobodyさん2007/04/11(水) 00:01:03ID:???
if(preg_match("/[^0-9]+/",$_GET["data"])){
echo"エラー:入力されたデータは整数値ではありません。";
}

とかは?
0889nobodyさん2007/04/11(水) 00:03:29ID:???
なにそのゴージャスな正規表現オーバーヘッドを気にしない使い方
0890nobodyさん2007/04/11(水) 00:05:27ID:???
マニュアルみている間に書かれたけど

>>888
が一番いいんでね?
(int)あたりでキャストしてもphpだと"50abc"でも50と判断しちゃうじゃなかった?
正規表現で判断するのが無難かと。


bool is_int ( mixed var )
与えられた変数が整数かどうかを検査します。
注意: 変数が数値もしくは数値文字列の場合 (フォームからの入力の場合は 常に文字列となります) 、is_numeric() を使用する必要があります。
0891nobodyさん2007/04/11(水) 00:06:04ID:???
正規表現でオーバーヘッド気にしてんのか?
0892nobodyさん2007/04/11(水) 00:07:58ID:???
/^[0-9]+$/ じゃね?
0893nobodyさん2007/04/11(水) 00:19:57ID:ZmOxrGFo
すいませんis_intのページに
>フォームからの入力の場合は 常に文字列となります
と思いっきりかいてありましたね(´・д・`;)


もう一つ質問です
フォームに無記入で送信した時に「入力されてないよ」というエラーを出したくて

if( is_set($_GET["data"]) == FALSE )
echo"入力されてないよ";

としてみたら、データを無記入で送信したときでなく
フォームのあるページに初めてアクセスした時に既にエラーが表示されてしまいました
無記入送信した時のみに表示するにはどうしたらいいのでしょう?
0894nobodyさん2007/04/11(水) 00:27:22ID:???
>>893
if(!is_set($_GET["data"])||$_GET['Submit'])
echo"入力されてないよ";

送信ボタンの名前は何よ?
0895nobodyさん2007/04/11(水) 00:36:36ID:ZmOxrGFo
送信ボタンは<input type="submit" value="送信">としていたのですが
送信ボタンにもname属性記述できたのですか
0896nobodyさん2007/04/11(水) 00:53:01ID:???
>>893
if($_GET["data"] == "") {
  echo '変数が用意されてるかどうかと中身がカラかどうかは違うよ';
}

あと、isset()のような気がする。
0897nobodyさん2007/04/11(水) 01:53:36ID:???
issetは変数
emptyは中身
0898nobodyさん2007/04/11(水) 02:19:55ID:???
この辺は引っかかりやすいところだけどマニュアルをきちんと読めば解決するはず
0899nobodyさん2007/04/11(水) 02:45:59ID:wpqDaNbU
掲示板のログファイルの最終行のログのみを取り出したいんですが、
$file = file("bbs.log");
$count = count($file);
$count--;
$file[$count];

という流れが妥当でしょうか?
もっと効率のよいやり方がございましたらご教授お願いいたします。
0900nobodyさん2007/04/11(水) 03:19:04ID:???
逆ソートして1番目とる
0901nobodyさん2007/04/11(水) 03:39:18ID:???
メソッドの中から、自分の名前(メソッド名)を知るには
どうすればいいでしょうか?
0902nobodyさん2007/04/11(水) 03:45:38ID:???
>>901
ネタ乙。
ネタじゃないなら>>1とちょっと前のレスを読んでから質問してこい。

0903nobodyさん2007/04/11(水) 03:49:30ID:???
>>894
テキストボックスのエンターとかで送信されたときに
submit buttonの名前を送らないブラウザがあったと思う
0904nobodyさん2007/04/11(水) 03:52:55ID:???
submitをCSSで画像にすると画像のどの位置がクリックされかを
POST先のページでX軸とY軸で取得できるって皆知ってた?
0905nobodyさん2007/04/11(水) 04:02:52ID:???
「explode()で配列にし、そのn番目を返す」
これを一文で書く方法ないですか?

$a = explode('/',$str);
echo $a[1];
こういう風にテンポラリ変数を介するのではなく
explode('/',$str)[1]
のように書きたいんです
0906nobodyさん2007/04/11(水) 04:10:54ID:???
欲しかったのは最後の要素だったのでend()で出来ました
こんな関数はじめて使った
0907nobodyさん2007/04/11(水) 04:28:41ID:???
>>904
type="image"
09088992007/04/11(水) 04:32:56ID:???
>>905
おお〜それです。まさしく求めていた答えです。
905さんのやりかたに便乗します。発見してレスに残してくれてありがとうございます。
0909nobodyさん2007/04/11(水) 08:51:13ID:???
>>901
__FUNCTION__かな
0910nobodyさん2007/04/11(水) 10:47:54ID:KfKwGm7g
for ($i = 0; $i < n; $i++) {
do_action();
}

True/Falseを返すdo_action()をn回行います。
Trueが返ってきた数によって、処理を決めたいのですが、
その処理をどこにどのように書けばいいのでしょうか?
n回全部Trueが返ってきた場合の処理と、
1〜n-1回返ってきた場合の処理と、
n回全部Flaseが返ってきた処理を書きたいです。
0911nobodyさん2007/04/11(水) 10:59:41ID:???
$woofoo = 0;
for ($i = 0; $i < $n; $i++) { 
 if(do_action()) $woofoo++;

if($woofoo==$n){
}elseif(0<$woofoo and $woofoo<$n){
elseif($woofoo==0){
}
0912nobodyさん2007/04/11(水) 11:00:35ID:???
$t = 0;
for ($i = 0; $i < n; $i++) {
if(do_action()==true){$t++;}
}
if($t==0){
echo "ない";
}elseif($t<5){
echo "ある";
}else{
echo "すぎ";
}

ううう
09139102007/04/11(水) 11:14:53ID:KfKwGm7g
>>911-912
お二人方どうもありがとうございます。
見事にスクリプトが一緒ですねw
早速使わせていただきます。
0914nobodyさん2007/04/11(水) 11:30:55ID:???
一緒っていうか基本中の基本。
もっとえろい書き方もできるけどロジックに忠実に(バカ正直に)書いたらこんなものになるのが普通
0915nobodyさん2007/04/11(水) 12:52:10ID:ZybRpRjg
日付をindexにして他に4つぐらいのカラムをもたせたMySQLを,月単位で一括編集するphpを書いています.
今,編集したい月と年を受け取って,その月の各フィールドに対する情報を入れるためのフォームをphpで出力しようとしているのですが,
"SELECT * FROM schedule WHERE DATE_FORMAT('date', '%Y-%m') = " . 年 . "-" . 月;
というクエリを送って,その結果をmysql_fetch_assoc()しても
まだ何もデータを入れていないせいだと思いますが,FALSEを返します.
各フィールドにデータが入っていてもいなくても,その月の日数分だけ処理を実行するにはどうすればよいですか?
0916nobodyさん2007/04/11(水) 12:56:56ID:???
日本語でおk
0917nobodyさん2007/04/11(水) 13:03:31ID:???
>>915
まずどこまでできたのかコードを晒せ。1から聞きたいのなら丸投げスレへ
0918nobodyさん2007/04/11(水) 13:11:45ID:???
>>915
mysql_fetch_assoc()でfalseが戻ったら
目的の処理をするように
PHPで記述すればいいだろ。
0919nobodyさん2007/04/11(水) 13:15:29ID:???
なんという要領を得ない質問・・・この人は間違いなく初心者

まだデータはないけど動作確認のために編集処理したいってこと?
0件ならFALSEが返ってきて当然だけど、どう動作してほしいの?
サンプルデータを入れるなり、新規登録フォームを作って入れるなりすりゃいいじゃん
09209152007/04/11(水) 13:48:33ID:ZybRpRjg
仰る通り初心者です.MySQLとか初めてです.
昨日始めて,やっとまともに接続できるようになりました.
要領を得ない質問ですみません.

これは簡易スケジュール帳なんですが,なんでこんな処理をしたいかというと,
既にその日のスケジュールが定義されている場合は,フォームのvalueに既に入ってるスケジュールを表示して,
定義されてない場合でも,その日のスケジュールを編集するためのinputタグを出力したいからなのですが.
0921nobodyさん2007/04/11(水) 13:50:58ID:???
if(定義されてない場合でも){その日のスケジュールを編集するためのinputタグを出力したいからなのですが.}
if(mysql_fetch_assoc(なんたら) ==false){echo '<form>.................';}
それだけの話しだろ
0922nobodyさん2007/04/11(水) 13:53:34ID:???
うんやりたいことをそのままロジックに落とせばいいだけの話なんだけども。
その中で処理の仕方や書き方が分からなかったら質問してくれれば良い。
DBというよりプログラムの問題だよね。卒研かなんかですか?
0923nobodyさん2007/04/11(水) 13:56:10ID:???
>>920
言いたい事はわかるが上でみんながいっているようにphpで処理させるだけ。
問題はphpでどこまで出来ているのかということ
0924nobodyさん2007/04/11(水) 13:58:02ID:???
>>920
inputタグのvalueプロパティをDB格納値にするか、
空欄にするか、ってことでしょ?

>>922の言うように、
自分のやりたいことをナンバリングしながら
順を追って説明する文章を書けば、
90%くらいはできあがると思われ。
0925nobodyさん2007/04/11(水) 13:59:05ID:???
携帯サイトで掲示板を作っているんですが、
先にコメントなどを書かせて、
2ページ目でメールで画像を送ってもらう際、本文にIDをつけてDBと認証
投稿完了としたいんですがPHPで実現可能でしょうか?

ここみたいな感じです。
http://megaview.jp
0926nobodyさん2007/04/11(水) 14:01:36ID:???
IDだけで認証してええのん?
0927nobodyさん2007/04/11(水) 14:02:48ID:???
>>925
できる
0928nobodyさん2007/04/11(水) 14:12:36ID:aJnUgs6a
質問です。
外部に公開しているWebサーバでドキュメントルート以下に置いたスクリプトを
ローカルからのみアクセスできるようにするにはどうすればいいですか?
09299152007/04/11(水) 14:15:03ID:ZybRpRjg
素早いレスありがとうございます.
もうちょっと煮詰めます.卒研とかでは全くなく,サークルのサイトをリニュしろと言われて、、
0930nobodyさん2007/04/11(水) 14:15:03ID:yUjB1srR
プログってライブドアが最初に作ったのですか?
0931nobodyさん2007/04/11(水) 14:15:40ID:???
>>928
>ローカルからのみ
この意味が不明
ローカルホスト(たとえば127.0.0.1)でのみって言う意味か?
それともプライベートネットワーク経由という意味か?
0932nobodyさん2007/04/11(水) 14:16:36ID:???
>>928
ディレクトリのオーナーとPermission変えとけwww


>>930
んなわきゃない。
0933nobodyさん2007/04/11(水) 14:16:58ID:aJnUgs6a
ローカルホストからという意味です。
そのWebサーバが動いているPCからのみアクセスできたらと考えています。
0934nobodyさん2007/04/11(水) 14:19:39ID:???
>>928
192.168.*
三番目の*に当てはまる数字は環境によって違うからipconfigでデフォルトゲートウェイみて記入しろ

間違っても192.168.*.*と4つ数字はかくなよ
0935nobodyさん2007/04/11(水) 14:20:49ID:???
じゃあスクリプトの頭に
if($_SERVER["REMOTE_ADDR"]!='127.0.0.1') {die();}
つけときなさい。
httpd/.htaccessの設定で
deny from all
allow from 127.0.0.1
でもいいけど。
0936nobodyさん2007/04/11(水) 14:23:59ID:???
昼下がりに、こんにちは。

phpに任意のサイト丸ごとを保存させたいのですが
読み込んでも普通はhtmlソースだけですよね?

html内の画像のurlを拾って同じフォルダ構成にしてバイナリ保存して…
ではなくて何かmht的なスマートなものはあるんでしょうか?
0937nobodyさん2007/04/11(水) 14:28:12ID:???
なぜ PHP mht でグーぐるを検索しないのか
09389252007/04/11(水) 14:29:08ID:???
>>926-927さん
変レス有難うございます。

メールで送られたものを自動で取得
これはPHPでできるのでしょうか?
自動がどうやるのか思いつきません。
IDはハッシュ値かなんかで認証しようと考えています。
0939nobodyさん2007/04/11(水) 14:33:06ID:???
>>938
.forwardでphpスクリプト動かせばいいんじゃないの?
09409252007/04/11(水) 14:37:06ID:???
>>939さん
kwskお願いします!!
0941nobodyさん2007/04/11(水) 14:42:45ID:???
初回でIDださないやつに回答するの控えない?
0942nobodyさん2007/04/11(水) 14:43:03ID:???
>>940
PHP自体の話題じゃないから、.forward スクリプト とか mail alias スクリプトあたりで検索してみて。
ピント来ないのであれば、.forwardやメールaliasでよく使われるprocmailと一緒に検索。
.forward procmail とか。そこらへんからなにをやってるのか糸口をつかもう。
0943nobodyさん2007/04/11(水) 14:43:45ID:???
>>941
ああごめん。回答しちゃったw
レス数が900を超えています。1000を超えると表示できなくなるよ。