【PHP】下らねぇ質問はID出して書き込みやがれ 89at PHP
【PHP】下らねぇ質問はID出して書き込みやがれ 89 - 暇つぶし2ch577:nobodyさん
09/10/24 12:01:27 o7jv7fS8
>>572
レスアンカーは自分(>>570)にですよね?
そうだと思って返答させて下さい

>人が作成したPHPのプログラムを落としてHTML部分がどうなってるか探してみる

こういうのはWebサイトで検索して、人が書いたサンプルコードを集めて学習しろという事なのでしょうか?
それとも、自分は知らない(というかコードを読み取られると危険なのでそもそも出来ないのではと思うのですが)、ソース読み取りソフトとかあるのでしょうか?
例えばWebサイトであればIEのソース機能やFireFoxのFireBugのようなHTMLのコードを表示出来る様なソフトの事です



>>573
あぁ、すみませんでした
自分の表現がおかしかったようです
HTML+CSSにPHP(テンプレートやライブラリ含む)を組み込んで実装する、実際に運営する為の雛形コードを学習したかったのです


578:nobodyさん
09/10/24 12:05:25
>>570
単にフォームからのリクエストを処理するPHPのコード、ってんなら、
PHPの本で2~3章かけて解説してるんじゃね?
あとは自分の作りたいものに似てるの探して、コード読むべし。

579:nobodyさん
09/10/24 12:05:29
>HTML+CSSにPHP(テンプレートやライブラリ含む)を組み込んで実装する、
>実際に運営する為の雛形コードを学習したかったのです

フレームワークのview部分とか見てみるといいかもしれない

580:nobodyさん
09/10/24 12:10:51
>>574
aaa<br>
<?php
>>562のコード
?>
bbb<br>

でbbb<br>より後にdestructが現れるってことか?
どっちみちDBクローズならそれでもいいだろ

581:555
09/10/24 12:11:40
すいませんでした
無知を晒してしまいました
ごめんなさい

582:nobodyさん
09/10/24 12:22:14
ちなみにスコープ閉じるってどうやるの?
objにnullいれるだけ?

583:nobodyさん
09/10/24 12:59:43
>>580
その下にまた<?phpが出てくるとか、include/requireされてるとか。

>>582
$objはスコープから外れてないけど、インスタンスは
ガベージコレクションで回収されるから、そのときに
デストラクタが起動されるんだと思う。

PHPで明示的なスコープって言ったら関数かな。
ローカル(グローバルでない)変数のスコープは関数内でしょ。

584:nobodyさん
09/10/24 13:03:20
>>281
いやだからそれは俺が振られた理由になってねえよ
なんで会社の休憩時間にイタリアフルコース頼まないといけないんだよ

585:nobodyさん
09/10/24 13:16:46
フラれたのか、ま、元気だせ、応援してるから。

586:nobodyさん
09/10/24 13:56:20
要らないもんはunsetしちゃおうぜ

587:552
09/10/24 14:16:10 BvPjRTUm
結局クラスを自作して対応しました。
class sqlite{
  var $_result = array();
  var $_pointer = null;
  var $_message = null;
  function connect($dbfile){
    return $this->_pointer = sqlite_open($dbfile,0666,$this->_message);
  }
  function close(){
    sqlite_close($this->_pointer);
  }
  function exec($que){
    return sqlite_exec($this->_pointer,$que,$this->_message);
  }
  function array_query($que){
    return sqlite_array_query($this->_pointer,$que,$this->_message);
  }
  function get_escape($str){
    return sqlite_escape_string($str);
  }
  function get_result(){
    return $this->_result;
  }
  function get_pointer(){
    return $this->$_pointer;
  }
  function get_message(){
    return $this->$_message;
  }
}

588:nobodyさん
09/10/24 14:37:03
>>587
オブジェクト指向スタイル用意されてる意味ねーw

589:nobodyさん
09/10/24 14:57:50
fscanfがおかしいです

590:nobodyさん
09/10/24 18:28:54
なるほどね、凸者さんの判断次第ってことか。
あと、ヤンデレこえぇwww

591:nobodyさん
09/10/24 18:29:35
誤爆

592:nobodyさん
09/10/24 19:04:29
どうしてもnewで作ってclose()したいんだ、という強い意志が感じられます。
若いっていいね。

593:nobodyさん
09/10/24 19:35:19
>どうしてもnewで作ってclose()したいんだ、という強い意志が感じられます。

はずかしいから黙ってて

594:nobodyさん
09/10/24 20:43:07
newで作ったらdeleteを使いたくなるよね。
で、ダミー関数であるdeleteが登録されてるせいで、
delete($classA)とか書いてもしばらく気がつけない

595:nobodyさん
09/10/24 20:45:44
え?

596:nobodyさん
09/10/24 20:47:28
え?

597:nobodyさん
09/10/24 21:14:45
これ何のスレだっけ

598:nobodyさん
09/10/24 21:21:53
質問じゃない時はsageで書きやがれスレ

599:nobodyさん
09/10/24 22:35:42 aM0DiAaq
【OS名】Windows xp
【PHPのバージョン】php5.2.10
【連携ソフトウェア】mysql
【質問内容】
心理テストのようなサイトを作ろうとしています。
何人がその答えを選んだかの集計と、
それとは別に選んだ答えがどのような性格をあらわすのかを表示できるようにしたいです。
チェックボタンを選んだ状態で「あなたはこんな人」のようなラジオボタンで
そのページに遷移させたいです。
どのようにしたらいいのでしょうか?
アバウトな質問でごめんなさい。


600:nobodyさん
09/10/24 22:39:54
>>599
で、何ができないの?PHP?本買え

601:nobodyさん
09/10/24 22:39:57
>>599
そのまんまじゃね?何が問題なんだ?

602:nobodyさん
09/10/24 22:40:40
全部作らせる気かww
最近の若者は安易だなぁ

603:nobodyさん
09/10/24 22:45:01 aM0DiAaq
くだらなすぎてごめんなさい・・・


604:nobodyさん
09/10/24 22:45:53
くだらないというか何が(どこが)できないのかが分からんのだよ

605:nobodyさん
09/10/24 22:50:44 aM0DiAaq
アンケートのページで「投票」を押したらその選んだ結果によって違うページに飛ばしたいです。
例えば赤を選んだら赤色を好きな人の性格について書いてあるページで、
青を選んだら青色が好きな人の性格について書いてあるページです。
アバウトすぎてごめんなさい。


606:nobodyさん
09/10/24 22:51:31 aM0DiAaq
今こんな感じで書いているところです。。

<html>
<head><title>心理テスト</title></head>
<body>
<h1>メンタル編</h1>
<p>あなたがいつか天国へ旅立つとしたら、何色の石をお守りにしたいですか?
<?php
// スクリプト名取得
$script = basename(__FILE__);
// メンバー名配列
$member = array("", "赤いルビー", "ピンクのローズクォーツ", "ゴールド",
"イエロートパーズ", "緑のヒスイ", "青のラピスラズリ", "紫水晶", "白の水晶");

// 投票がある場合
if ($_POST['COLOR'] > 0) {
// 投票者番号
$no = $_POST['COLOR'];
// MySQLに接続
$db = mysql_connect("localhost", "root", "root");
// DB選択
mysql_select_db("graduation", $db);
// insert文実行
mysql_query("insert into ninki values(null, {$no},
now())", $db);
// DB切断
mysql_close($db);
}
?>

607:nobodyさん
09/10/24 22:52:32 aM0DiAaq
<p><font color="red"><?= $msg ?></font></p>
<form method="POST" action="<?= $script ?>">
<p><input type="radio" name="COLOR" value="1">赤いルビー</p>
<p><input type="radio" name="COLOR" value="2">ピンクのローズクォーツ</p>
<p><input type="radio" name="COLOR" value="3">ゴールド</p>
<p><input type="radio" name="COLOR" value="4">イエロートパーズ</p>
<p><input type="radio" name="COLOR" value="5">緑のヒスイ</p>
<p><input type="radio" name="COLOR" value="6">青のラピスラズリ</p>
<p><input type="radio" name="COLOR" value="7">紫水晶</p>
<p><input type="radio" name="COLOR" value="8">白の水晶</p>
<p><input type="submit" value="投票"></p>

</body></html>


こんな感じです。
ごめんなさい。

608:nobodyさん
09/10/24 22:56:06
>>607
switch($COLOR){
case 1
処理&リダイレクト1
break;
case 2
処理&リダイレクト2
break;
case 3
処理&リダイレクト3
break;
.....
}

あとaction="<?php echo $script ?>"はまずくね?
それだったらaction=""で空でいいと思うよ

609:nobodyさん
09/10/24 22:58:11
case 1:

ね":"を忘れずに

610:nobodyさん
09/10/24 23:01:10 aM0DiAaq
>>608
>>609
やってみます
情けない質問に答えてもらってありがとうございます



611:nobodyさん
09/10/24 23:05:20
情けない質問wwww

612:nobodyさん
09/10/24 23:24:44 TvoLhocc
switch内のbreak;のインデントってたまに悩むけどどうしてますか?
俺はcaseからインデントつけて位置に書いてるけど
そうすると最後でインデントが2つ一気になくなってしまう違和感がある
>>608みたいに書くとcase処理内な感じがしない違和感

613:nobodyさん
09/10/24 23:34:28
>>612
その書き込みエスケープされただけだお

  case $a:

 break;

が多いけどおれも結構曖昧だ

614:nobodyさん
09/10/24 23:35:29
逆だ

 case $a:

  break;



615:nobodyさん
09/10/24 23:41:58
switch ($a) {
 case 0:
  do_something();
  break;
 case 1:
  do_something();
  break;
 default:
  do_something();
  break;
}

どの言語の解説でもたいていこうなってるしこれがスタンダードじゃないかね

616:nobodyさん
09/10/24 23:42:52
下らねぇ回答はID出さないでここに書き込みやがれ 90

617:nobodyさん
09/10/25 00:28:25
次スレの季節か

618:nobodyさん
09/10/25 00:56:35
switch文で気になったのでメモ
switch('a'){
 case 'a'; //末尾が ;
}

switch('a'){
 case 'a': //末尾が :
}
は等価


619:nobodyさん
09/10/25 05:29:05 TWuysydg
$test = " 1c 2c 3c!";
$search = "/([^0-9])([0-9])c([^0-9])/";
$replace = "$1c$2$3";
echo preg_replace($search, $replace, $test);

これで、期待する出力は
c1 c2 c3!
実際の出力は
c1 2c c3!

質問は、
・なぜこのような動作になるのでしょうか?
・どうすれば解決できるでしょうか?

後、欲しいアイデアとして
・"1c 2c 3c"のように、先頭にスペースを入れなくても"c1 c2 c3"に変える正規表現を教えてほしい
(ただし"11c"のような形の場合は変化させないでほしい)

620:nobodyさん
09/10/25 05:53:15
explodeで配列にわけて
substrで文字を抜き出したのを結合すえばええ

621:nobodyさん
09/10/25 10:22:02
認定回答者採用試験は今日までですので頑張って回答してください

622:nobodyさん
09/10/25 11:14:26
>>619
$test = "1c 2c 3c!";
$search = "/([^| ][0-9]{1})c/";
$replace = "c$1";


623:nobodyさん
09/10/25 13:01:49
トリもIDも出さずに試験官気取りとな?

624:nobodyさん
09/10/25 13:03:49
>>623
お前鬱病だろ

625:nobodyさん
09/10/25 21:45:40
phpでシングルトンって意味あるの?
リクエスト終わったらメモリ開放されるんでしょ?

626:nobodyさん
09/10/25 22:19:54
2行目は正解。
1リクエストの中だけでも必要なときはあるさ。

627:nobodyさん
09/10/25 22:38:37 Ltpwqrvc
mod_rewriteを使ってクリックカウントをとりたいのですが
以下のようにするとcount.phpにリダイレクトできるのですが、
count.phpからLocationで飛ばすとループしているのか404NotFoundになってしまいます。
どうすれば正常にできますか?

例:www.example.com/img/abc01.jpg をクリックしてcount.phpを介してカウント
www.example.com/img/abc01.jpgのまま表示する

//サーバー側
RewriteEngine on
RewriteRule ^/img/abc([0-9]+).(*)$ /img/count.php?id=$1&extension=$2

//count.php側
header("Location: URLリンク(www.example.com)");

628:nobodyさん
09/10/25 22:42:08
readfile使えばいいと思うよ

629:627
09/10/25 22:54:09 Ltpwqrvc
>>628
やってみましたがだめでした・・・。

630:nobodyさん
09/10/25 23:07:22
count.phpがabc01.jpgを出力するんだぜ。

631:nobodyさん
09/10/25 23:15:10
リライトログ見てみたら?吐いてなかったら吐かせて

632:627
09/10/26 00:20:09 8+sjsIrs
>>630-631
アドバイスありがとうございます。
何とか解決できたみたいです。
/img/を物理ディレクトリ、URL表示部分を新規に/img2/として(抽象ディレクトリ)
リライトしたらできるようになりました。

633:627
09/10/26 00:33:00 8+sjsIrs
>>628
readfileも必要だったみたいです。
ありがとうございました。

634:nobodyさん
09/10/26 05:27:50
質問させてください。

<html>
<body>
<?php include("./hoge.php");?>
</body>
</html>

で閲覧に問題はないのですが、
ソースを見ると

<html>
<body>
<html><body></body></html>
</body>
</html>

と2度使われ重複している状態です。

hoge.phpには<html><body></body></html>などの記述はしておりません。
問題の箇所等ご指摘願います。

635:nobodyさん
09/10/26 05:31:55
hoge.phpの中身書くのがいやなら簡略化したもの書いてくれないと
それだけではなんともいえない

636:nobodyさん
09/10/26 05:40:09
>>635
ありがとうございます。

hoge.phpの中身はモバイル版AdSenseコードのみです。

637:nobodyさん
09/10/26 05:48:48 n4efgg6U
質問です。MagpieRSSを使っています。
日付順に取得記事をソートしたいのですが、うまくいきません。
アドバイスお願いします。

$rssurl = array ();
$rssurl[] = "URLリンク(mainichi.pheedo.jp)";
$rssurl[] = "URLリンク(rss.asahi.com)";

foreach ($rssurl as $pre) {
$url = $pre;
$rss = fetch_rss($url);
$title = $rss->channel['title'];
$title = mb_convert_encoding($title, "shift_jis", "auto");
$url = $rss->channel['link'];
$rss->items = array_slice($rss->items, 0, 1);

foreach ($rss->items as $item ) {
$day = date('n/j',strtotime(substr($item['dc']['date'],0,10)));
$time = date('H:i',strtotime(substr($item['dc']['date'],11,8)));
$date = "$day $time";
$rdf = $item[link];
$article = $item[title];
$article = mb_convert_encoding($article, "shift_jis", "auto");
$linkstr = "$date $rdf $article $url $title<br>\n";
$rssarray["{$date}"] = $linkstr;

krsort($rssarray);
echo "$linkstr";

638:nobodyさん
09/10/26 05:52:16
>>637
$linkstrは全て想定通りになってるの?

639:nobodyさん
09/10/26 05:55:31 n4efgg6U
>>638
はい、順序以外は期待通りの実行結果です。

640:nobodyさん
09/10/26 06:00:30
じゃkrsortの問題ですね
どんな$linkstrを入れるとどのようなソート結果になるか例を出してもらえますか?

ちなみに第二引数にソートフラグを指定して挙動を変えることができる
URLリンク(www.php.net)
今回の場合は全て文字列だから関係ないかもしれないけど

641:nobodyさん
09/10/26 06:09:43 n4efgg6U
RSSの取得を下のようにしたとして
$rssurl[] = "URLリンク(mainichi.pheedo.jp)";
$rssurl[] = "URLリンク(mainichi.jp)";
$rssurl[] = "URLリンク(mainichi.jp)";
$rssurl[] = "URLリンク(mainichi.jp)";

10/26 05:00 ■URL ■人事:法務省(26日) ■URL ■毎日jp-ニュース速報(総合)
10/25 21:00 ■URL ■注目アニメ紹介:「空中 ■URL ■毎日jp-まんたんウェブ
10/25 22:14 ■URL ■the GazettE ■URL ■毎日jp-エンタメ
10/25 23:10 ■URL ■横浜:巨人・尾花コーチ ■URL ■毎日jp-スポーツ
(長いので削ってます)

このような結果が出ます。
日付でソートをかけているつもりですが、まったくされていません。
$rssurl配列の上から順に表示されています。

642:nobodyさん
09/10/26 06:10:21
>>636
echoで文字列を出力してるのか?
それともただアドセンス部分のHTMLだけ書いてるのか?
試してみたがhtml bodyタグが加わることはない
サーバかPHPの設定かもしれないがどの設定項目かはわからんわ
PHP使えるレン鯖が2つ以上あるなら両方で試してみ
ローカルに環境作るのが一番いいけど

643:nobodyさん
09/10/26 06:11:55
>日付でソートをかけているつもり
使う関数まちがってるんじゃね?
krsortって逆順ソートだよ

644:nobodyさん
09/10/26 06:15:55
日付だから逆順であってんでねーの?

645:nobodyさん
09/10/26 06:17:41
いやいや
ただ単にキーを逆順にするソートってこと
ユーザー定義のソートをしたいのならusort()とかじゃないと

646:nobodyさん
09/10/26 06:18:06 n4efgg6U
$rssurl[] = "URLリンク(mainichi.jp)"; //まんたんウェブ
$rssurl[] = "URLリンク(mainichi.jp)"; //エンタメ
$rssurl[] = "URLリンク(mainichi.pheedo.jp)"; //ニュース速報(総合)
$rssurl[] = "URLリンク(mainichi.jp)"; //スポーツ

10/25 21:00 ■URL ■注目アニメ紹 ■URL ■毎日jp-まんたんウェブ
10/25 22:14 ■URL ■the GazettE ■URL ■毎日jp-エンタメ
10/26 05:00 ■URL ■人事:法務省( ■URL ■毎日jp-ニュース速報(総合)
10/25 23:10 ■URL ■横浜:巨人・尾 ■URL ■毎日jp-スポーツ

例がわかりにくかったので書き直しました。

647:645
09/10/26 06:19:49
あ、ごめん。
よくよんでなかったw
>日付でソートをかけているつもりですが、まったくされていません。
ってかいてたからてっきり
データ見る限りだとkrsortでよさそうだね

648:645
09/10/26 06:20:38
とか書いた瞬間にデータの日付ルールが変わった件

649:nobodyさん
09/10/26 06:22:04 n4efgg6U
usortにしたらエラーがでました。
Warning: Wrong parameter count for usort() in C:\WWW\php.php on line 30

>>648
26日が真上だと日付でソートされているように見えたので…
配列順に表示されるだけでソート機能が働いていないというのが今回の悩みです。。。

650:nobodyさん
09/10/26 06:25:26
>usortにしたらエラーがでました。
マニュアルみようぜ
URLリンク(www.php.net)
krsort($rssarray);を
usort($rssarray);にかえただけじゃだめ
第2引数入れないと

651:nobodyさん
09/10/26 06:26:20
それぞれどんな$linkstrなの?

652:nobodyさん
09/10/26 06:34:30 n4efgg6U
>>650
すいません、ありがとうございます。
試している最中ですが、cmpの設定に少し時間がかかりそうなので結果が遅れます。

>>651
$day 記事の更新日
$time 記事の更新時間
$date 上記二つを合わせた文字列
$rdf 記事のURL
$article 記事のタイトル
$url 配信元のURL
$title 配信元のタイトル

です。

653:nobodyさん
09/10/26 06:41:45
>>652
ごめん、krsortに$linkstr関係なかったね

$array = array('10/25 21:00'=>1,'10/25 22:14'=>2,'10/26 05:00'=>3,'10/25 23:10'=>4);
var_dump($array);
krsort($array);
var_dump($array);

array(4) {
["10/25 21:00"]=>
int(1)
["10/25 22:14"]=>
int(2)
["10/26 05:00"]=>
int(3)
["10/25 23:10"]=>
int(4)
}
array(4) {
["10/26 05:00"]=>
int(3)
["10/25 23:10"]=>
int(4)
["10/25 22:14"]=>
int(2)
["10/25 21:00"]=>
int(1)
}
こちらで試してみたら想定どおりにソートされてる気がするけども

654:nobodyさん
09/10/26 06:43:43
usortの$aの部分を日付をunixタイムに変えたものいれればそのまま使えるんじゃね
$a部分を連想配列にしてキーを$rssarrayのキーと一致させておけば簡単
比較は値のunixタイムにしたものを比較する感じで
マニュアルの例そのまま使うならrsort()にしたほうがいいと注意書きに書いてるから
まずはusortで形をつくってからパフォーマンスのためにrsortで書き直してみては?

655:645
09/10/26 06:48:17
なんか話をややこしくしてすまんかった
krsortの使い方を勘違いしてたようだ
>>653でよさそう

656:nobodyさん
09/10/26 06:50:28
オマエラ馬鹿じゃね?
$rssarrayをソートかけてんのに$linkstr表示してっからだろ

657:nobodyさん
09/10/26 06:50:51
>>637
krsort($rssarray);
echo "$linkstr";

froeachの終わりがどこかわからんけど、echo結果を見ているなら$rss->itemsの順番に表示されてるんじゃ?
$rssarrayに入れたいものを全部入れてからkrsortしてprint_r($rssarray)で確認してみたらどうかな

658:nobodyさん
09/10/26 06:56:25 n4efgg6U
>>653
phpは昨日触ったばかりなのでじっくり参考にさせて頂きます。

>>654>>655
助言を求めたのは私なのでハマりから抜け出すためのしっかり参考にさせて頂きます。

>>656>>657
やっと原因が究明出来ました。
表示がまだ思い通りにいかないので試行錯誤してみます。

659:nobodyさん
09/10/26 07:00:40 n4efgg6U
foreachを閉じた後

krsort($rssarray);

for(reset($rssarray); $i=i($rssarray); next($rssarray)){
echo "$rssarray[$i]";
$count++;
if($count == 4){
break;
}
}

これでしっかりと表示出来ました。
原因はkrsort($rssarray);をforeachの中に入れていたことと
$linkstrを表示していたことです。
皆様ありがとうございました!

660:nobodyさん
09/10/26 07:01:41
echo "$linkstr";
の行は単にデバッグのためループの中で出力を確認しているだけで
当然そのあとにテーブルか何かで一覧を表示して、正しくソートされてないと言ってるもんだと思ってた。

$linkstrはkrsortどころか$rssarrayとも関係ない。foreachの順で表示されるだけじゃん。

661:nobodyさん
09/10/26 07:07:28
終わった後に言っても仕方ねぇだろ無能。
オマエラ馬鹿すぎ。

662:nobodyさん
09/10/26 07:23:29
煽るのすきだね
リアルでどういうやつなのかぜひ見てみたいわ

663:nobodyさん
09/10/26 07:36:34
>>662
的外れな回答する奴よりはマトモだよ

664:nobodyさん
09/10/26 10:20:50
それはない

665:nobodyさん
09/10/26 10:41:51
クッキーにパスワード保存するのはあれだよね。次回から自動でログインとかどうすればいいんだろう

666:nobodyさん
09/10/26 10:50:47
>>665

>>!

667:nobodyさん
09/10/26 10:58:01
>>665
何かユニークIDを発行してそれを保存

668:nobodyさん
09/10/26 11:15:48
>>665
なにか問題でも?

669:nobodyさん
09/10/26 11:27:59
他人の端末のクッキーコピって来たら、
俺が自動ログインで、そいつの振りして利用できる?

670:nobodyさん
09/10/26 11:33:33
できるよ

671:nobodyさん
09/10/26 11:34:10
そもそも他人に簡単に起動を許す、または誰でも簡単に利用できるようなPCのセキュリティに問題アリ

672:nobodyさん
09/10/26 11:44:57
パスワードだけは暗号化すれば良さそうだね

673:nobodyさん
09/10/26 11:49:41
暗号化が簡単ならね

674:nobodyさん
09/10/26 11:54:38
クッキーなんか暗号化必要ないんじゃない?

>>673
暗号化なんて簡単じゃん

675:nobodyさん
09/10/26 11:57:30
簡単ならおk

676:nobodyさん
09/10/26 12:18:54
そもそもクッキーコピーできるような状況なら、そのPCで他人がブラウザ使ってもログイン可能って
ことだしなあ。

677:nobodyさん
09/10/26 12:30:15
そもそも自動ログインなんて許すのは金の絡まないサイトとか
個人情報があまり意味ないサイトとかだよね。
ひまわり動画とか

678:nobodyさん
09/10/26 16:44:56
>>677
そういう問題か? 糞だな^^;

679:nobodyさん
09/10/26 17:53:40 +hgb+ZZq
一応>>1にMySQL等は別スレとありますが、php+MySQLに対してのスレがなかったので、此方で宜しかったでしょうか?
スレチでしたら誘導お願いします。
Sample.phpへ、buttonを配置し、JavaScriptでメソッドを定義。

function A1(){
if(confirm('ごまだれですか?')){
<?php
mysql_query("begin");
mysql_query("update `gomagoma` set `syurui` = 'くろごま' where `syurui` = 'alpha'") or die(mysql_error());
mysql_query("commit");
mysql_query("begin");
mysql_query("update `gomagoma` set `syurui` = 'しろごま' where `syurui` = 'beta'") or die(mysql_error());
mysql_query("commit");
mysql_query("begin");
mysql_query("update `gomagoma` set `syurui` = 'ごまふあざらあし' where `syurui` = 'hex'") or die(mysql_error());
mysql_query("commit");
?>
window.alert('内容を変更しました。')
}
}

としていますが、DBを覗いてみたところ、アップデートされていませんでした。
ですが、MysqlErrorは返ってきておらず、そのままJavaScriptで記述したalertが実行されます。


原因を現在当たっていますが、何か思い当たる点がありましたらご指摘お願いします。

680:nobodyさん
09/10/26 18:00:11
>>678
677じゃないけど、そんなもんだと思うぞ
大して重要でもないのに何を気にする事あるんだ?
そんなに気になるなら自動ログインなんてしなきゃいいだけじゃないか

681:nobodyさん
09/10/26 18:08:17
>>679
サーバサイドとクライアントサイドがごっちゃになってないか?

「function A1()」ってのはjavascript側で定義している関数だろ?
その中のphp(mysql_query)は、button押下に関係無くそのページロードしたら実行されるぞ?
ブラウザのソース見てみなよ。

682:nobodyさん
09/10/26 18:09:49
>>679
そのHOSTからmysqlで同じSQLを手で入れるとどうなるよ
トランザクションの使い方も間違ってる

683:nobodyさん
09/10/26 18:17:35
>>679
PHPの中身はともかくとしても、

PHP部が実行されて、DBが書き換えられるなどした後、
出力などがなければ<?php から ?>までが無くなったテキストが、
ヘッダなどがついてブラウザに渡され、それからjavascriptが動くので、
ブラウザがうけとるのは
function A1(){
if(confirm('ごまだれですか?')){

}
}
になります。



684:nobodyさん
09/10/26 19:14:03
function A1(){
if(confirm('ごまだれですか?')){

window.alert('内容を変更しました。')
}
}
抜けてた

685:nobodyさん
09/10/26 21:38:32
>>683で答えでてるじゃん

686:nobodyさん
09/10/26 22:16:19
初心者相手に悪いけど、これは吹いたww>>679

687:nobodyさん
09/10/26 22:27:35
mysqlの問題と思ってる時点でアレだな

688:nobodyさん
09/10/26 23:39:47
「ごまふあざらあし」が気になってプログラムが進みません!

689:nobodyさん
09/10/27 00:54:28
クライアントへhtmlを送る時に、ボタンと、押した時にサーバーサイドで実行する
クエリを書いておく事が出来る。
というフレームワークのアイデアを頂きました。
クレームワームの名前は「ごまふあざらあし」にしようと思います。

690:nobodyさん
09/10/27 10:58:21
ごまだれですか?

691:nobodyさん
09/10/27 11:16:23
いえ、「ごまふあざらあし」です

692:nobodyさん
09/10/27 11:34:04
いっそPHPonJavascript HTTP通信で。

693:nobodyさん
09/10/27 11:44:23
PHP側で実行する内容が、htmlソースから丸見えになるんで良くないなw

694:nobodyさん
09/10/27 15:59:34
>>693
SQLをクライアントで構築して送信する前システムを思い出した
最悪だな

695:nobodyさん
09/10/27 19:25:48
"name":"名無し","body":"あいうえお"
このように書かれたテキストファイルから「名無し」「あいうえお」を取得する方法は
正規表現でひとつずつ抜き出すほかにありますか?

696:nobodyさん
09/10/27 19:26:58
>>695
explode

697:nobodyさん
09/10/27 19:33:13
>>696
できました!
ありがとうございます

698:nobodyさん
09/10/27 19:39:41 73GIvY2U
サーバ変数のQUERY_STRINGのPOST版を取得したいのですがどのようにしたら取れますか?

また、上で取得した文字列を$_POSTのような配列形式に変換したいのですが、そのような関数はありますか?

699:nobodyさん
09/10/27 19:44:58
意味が分からん
$_REQUEST

700:nobodyさん
09/10/27 19:59:04
>>698
何もしなくても良いのではないだろうか。

701:nobodyさん
09/10/27 19:59:55
>>698
POSTされた生のデータが欲しいって事かい?

parse_str(file_get_contents('php://input'), $f);
var_dump($f);

702:nobodyさん
09/10/27 21:21:52
fopen("php://memory", "r+");

すげえ

703:698
09/10/27 21:41:14
>>701
すばらしい。ありがとうございます。

704:nobodyさん
09/10/28 01:05:41 EMbPGL3Y
simplexmlについての質問です。

simplexml_load_fileで読みこんだObjectから
$q = $_GET["q"];
echo $xml->item[$q]->name;
としたいのですが、何も表示されません。

echo $xml->item[0]->name;
だと正しく表示され

$q = 0;
echo $xml->item[$q]->name;
でも正しく表示されます。

$q = $_GET["q"];
echo $q;
echo $xml->item[$q]->name;
とした場合は、$qだけが表示されました。

simplexmlでは$_GETが使えないのでしょうか?
解決策をお教えいただきたいです。


705:nobodyさん
09/10/28 01:09:43
>>704
$qの中身の問題だろそれは

706:nobodyさん
09/10/28 01:12:57 EMbPGL3Y
>>705
ありがとうございます!

$q = $_GET["q"]+1-1;
と試してみるとうまくいきました。

ホントにお恥ずかしい限りです・・・

707:nobodyさん
09/10/28 01:16:08
型違うと検索してくれないんだ?

708:nobodyさん
09/10/28 01:17:19
$q = (int)$_GET["q"];
でおk

709:nobodyさん
09/10/28 01:18:34
includeって必要なときにだけ呼び出したほうがいいの?
負荷とかそんなに変わらないのならクラス定義をまとめて最初に読み込んだほうがらくだよね。。。

710:nobodyさん
09/10/28 01:20:18
えっ

711:nobodyさん
09/10/28 01:27:19
>>709

>>1

712:nobodyさん
09/10/28 02:52:06
Javaのimportのようなもんだと思ってるんだろう
ただJavaの場合コンパイラが最適化してくれるので問題ないが
PHPはインタプリタなので最適化のしようがないという
つまり全部includeなんてしたらそりゃ遅くなる

713:nobodyさん
09/10/28 05:46:33
>>712
なるほど、ありがとう。必要なときにincludeしたほうが良いってことね


714:nobodyさん
09/10/28 09:18:20
>>695-697
文字列中に,も出てくるかもしれないから
json_decode()を使ったほうがよくない?

715:nobodyさん
09/10/28 10:42:00 v0axKvNX
セッションの開始をつげるsession_start()って
セッションを使用する場合は必ずつけなければならないのですよね?
これを記述するのはMVCモデルだとVの部分に記述するのであってますでしょうか?

716:nobodyさん
09/10/28 10:43:21
コントロールじゃね?

717:716
09/10/28 10:45:50
コントロールですか?
ありがとうございます
早速組み方を考えて見ます

718:nobodyさん
09/10/28 10:47:23
bootstrapだろ

719:679
09/10/28 14:53:16 op4mA5/p
返答遅くなりました。
そうか・・・表示されてる時には既にHTMLとして返ってきてるんですよね。

この場合は、dbedit.phpのようなものを別途つくり
<?php
include("dbedit.php");
A1();
?>
という風にすればいいのかな?

しかし、この場合でも、A1だけではなく、A2,A3と続く様であれば
それの振り分けはどう実装したらいいでしょうか?
ご意見や、実装例等がありましたら、ご教示よろしくお願い致します。

720:nobodyさん
09/10/28 15:23:46
>>719
まずjavascriptなしでやることを考えてみ。

721:nobodyさん
09/10/28 15:30:07
ちょっと答え方まちがったかな。

まずそのA1, A2, A3でなにをするのか書かないと。あと関数ってわかってる?振り分けってどういうことするの?

722:nobodyさん
09/10/28 15:43:14
>>719
A1()って>>679を見る限りJavaScriptのfunctionだろ? 呼べるわけがないw
>>720の通りにまずJavaScriptなしで動くようにしてみたら?
サーバー側でpostされた内容によってSQL発行するだけだよ

723:nobodyさん
09/10/28 18:25:52
>>679はもう諦めてこれプログラムできる人にやってもらったほうが世のため人のため>>679のためと思うのはおれだけか?

724:nobodyさん
09/10/28 18:34:44
いきなりいろいろ手をつけすぎだな
javascript無し、DB無しでPHPだけでいろいろ慣れるのが先だな

725:nobodyさん
09/10/28 18:35:06
A1()で「くろごま」
A2()で「しろごま」
A3()で「ごまふあざらあし」
を処理する気まんまんの>>679にWeb100.0

726:nobodyさん
09/10/28 23:02:06
>>679
歳幾つ?

727:nobodyさん
09/10/29 00:12:37
phpとmysqlを同時に説明してる本とか売ってるし それ見た方がいいよね
それと同時にプログラミングの概念について解説してる本を読んだ方がいいのかも
概念が足りてない

728:nobodyさん
09/10/29 03:46:52
test

729:nobodyさん
09/10/29 09:54:12 xBLZE2eU
【OS】cent
【バージョン】php5.2.10

SimpleXMLElementに関する質問です。
mlから特定の属性を持った要素を削除するにはどうすれば良いのでしょうか?
例を挙げると、

『sample.xml』
<?xml version="1.0" encoding="UTF-8" ?>
<library>
  <book id="00001">
    <title>aaa</title>
    <author>Emily</author>
  </book>
  <book id="00002">
    <title>bbb</title>
    <author>John</author>
  </book>
  <book id="00003">
    <title>ccc</title>
    <author>Mike</author>
  </book>
</library>

とした場合、idが「00002」の要素を削除するという感じです。

--続く--

730:729
09/10/29 09:56:09 xBLZE2eU
--続き--

いろいろ調べたところ、

$xml = new SimpleXMLElement('sample.xml', null, true);
unset($xml->book[0]);

で削除は出来るのようですが、配列で何番目という指定ではなくid「00002」の要素を指定して削除し、

<?xml version="1.0" encoding="UTF-8" ?>
<library>
  <book id="00001">
    <title>aaa</title>
    <author>Emily</author>
  </book>
  <book id="00003">
    <title>ccc</title>
    <author>Mike</author>
  </book>
</library>

となる事が目的です。
どうぞよろしくお願いします。

731:nobodyさん
09/10/29 12:08:53
>>730
foreachで出来た方いたら教えてください。


$xml = new SimpleXMLElement('sample.xml', null, true);
for ( $i = 0 ; $i < count($xml->book);$i++) {
if ( $xml->book[$i]["id"] == " 00002") {
unset( $xml->book[$i] );
}
}
echo $xml->asXML();

732:729
09/10/29 23:49:16
>>731
出来ました!
どうもありがとうございます。

確かにforeachだと更に良いかも知れませんね。でも感謝です。


733:nobodyさん
09/10/30 06:12:51 5l/tuOOs
以下のようなメールアドレスのうち「@の前部分」を、文字数分だけ*に置換したいのです。
taro@example.com

これだと4文字決め打ちになってしまいます。
preg_replace('/[a-z0-9\.\-\_]+@/i', '****@', $text);

いまのところシンプルに書ける方法で思いつくのは、
長い文字数から順に置換していく方法です。
forなど使えばシンプルには書けそうです。
preg_replace('/[a-z0-9\.\-\_]{10}@/i', '**********@', $text);
preg_replace('/[a-z0-9\.\-\_]{9}@/i', '*********@', $text);
...

でも美しい方法とは思えません。
定石、または美しい方法はありますか?

734:nobodyさん
09/10/30 08:26:53
>>733
たとえば

$text = "taro@example.com";
echo preg_replace('/([a-z0-9\.\-\_]+)@/ie', "str_repeat('*',strlen('$1')) . '@'", $text);

735:nobodyさん
09/10/30 10:41:53
例えば

$text = "taro@example.com";
$array = explode('@', $text);
echo str_repeat('*',strlen($array[0])) . '@' . $array[1];

736:nobodyさん
09/10/30 16:17:27
例えば

$text='taro@example.com';
echo str_repeat('*', strpos($text,'@')).strstr($text,'@');

737:nobodyさん
09/10/30 17:16:58 5l/tuOOs
>>734-736
ありがとうございます。e修飾子とかはじめて認識しました。
Yahoo!グループの過去ログのように「メール本文中の署名などの個人情報を隠匿」が目的なので、
>>734の方法で行かせていただこうと思います(目的を書いとくべきでしたごめんなさい)。

精進します。

738:nobodyさん
09/10/30 20:21:02 k7DoHVtB
2chの大量規制があったとかのせいか、ここも勢いがないね

phpのソースコードそのものを取り込んで
そのコードを解析する
みたいな手段ってありませんか?

739:nobodyさん
09/10/30 20:25:31
どう解析するの?

単に構文解析だったら、PHPでPHP用のレキシカルアナライザとパーサ作ればいいんだけど、
それだけやったって面白くないよね、手間なだけで。

何をしたいのかが良く分からん。

740:nobodyさん
09/10/30 22:48:05 pyIKqVVx
class test
{
private $ar,$tes;
public function __construct()
{
$this->ar = array('tes');
(ここで 変数 $this->($this->ar[0]) この場合 $this->tes に何らかの値を代入したい)
echo $this->tes;
}
}
$this-> に続く変数名を変数の値で表す方法はありますか?
宜しくお願いします。

741:nobodyさん
09/10/30 22:52:15
日本語で

742:nobodyさん
09/10/30 23:25:37 pyIKqVVx
上のコードで$this->tesに、例えば"b"を代入したいとき、
$this->tes = "b"; と書くのではなく、tesの部分に、"tes"が代入された変数を使いたいのです。

743:nobodyさん
09/10/31 00:17:51
$var = 'tes';
echo $this->$var;
こんな感じで

744:nobodyさん
09/10/31 00:38:36
>738
runkit
URLリンク(jp2.php.net)

745:nobodyさん
09/10/31 07:26:05
>>743
ああ、一回代入すればいいのですね
思いつきませんでした。ありがとうございます!

746:nobodyさん
09/10/31 09:17:44 5b/pi/nw
質問です。
アップローダー作る時にテンポラリのディレクトリから保存用のディレクトリに
ファイルをcopy → もとのテンポラリファイル削除 って流れがあり、
if(copy($tmpFile, $lastFile)){unlink($tmpFile);} 
という感じの処理をすると思います。
しかし条件部分がtrueにならないとき、どうしたら良いんでしょうか?
「コピー失敗しました」みたいなアラート表示すべき? そんなことやってますか?
そもそも、上のif文でのチェックは必要なんでしょうか…
条件成立・不成立をどこまでフォローすべきか悩んでいます。

747:nobodyさん
09/10/31 15:10:42
move_uploaded_file 使った方がええんじゃないか?

748:nobodyさん
09/10/31 15:13:55
コピーするのがそのサイト内部処理として必須であるなら(まあそうだろうけど)、
それに失敗したらアップロード処理失敗のエラー返すしかなかろ。

749:nobodyさん
09/10/31 15:30:20
エラーが発生したときに可能な限り元の状態に戻す設計にした方が良いな
コピー失敗したらそのファイルを削除してメッセージを表示&エラーログを残すとか

750:nobodyさん
09/11/01 23:38:51
>>740
$this->{$this->ar[0]} = "何らかの値";

751:nobodyさん
09/11/02 18:13:40 uSMOoO6C
画像とhtmlを同一のファイルにしたいんですが、
phpでmhtmlを出力するほうほうはありませんか?

752:nobodyさん
09/11/02 18:43:28
>>751
OSは?

753:nobodyさん
09/11/02 18:58:04
>>751
URLリンク(www.hedgerwow.com)

754:751
09/11/02 18:58:15
>>752

Linuxです。サーバーの設定も自由に変更できます。

755:751
09/11/02 19:01:23
>>253

ありがとう。

756:nobodyさん
09/11/03 00:57:00 OxH3Rb8V
質問です、
PHPの言語仕様として確認したいのですが、
1リクエストごとにstaticメソッドであろうが毎回PHPのリソースをメモリに読み込んで、
レスポンスを返した時点でメモリ破棄する。
そのため、複数のリクエスト間での共有ができず、たとえばDBのコネクションプール
などという考え方は基本ない。であっていますか?

757:nobodyさん
09/11/03 02:25:30
言語仕様(標準ライブラリ)の範疇で言えば、そう。
たいていの言語は、別々に起動された、親子関係
でないプロセス間でソケットを共有する方法は、
言語仕様にはないと思う。

758:nobodyさん
09/11/03 05:32:26
関係ない質問してごめん。
SpeedyCGIみたいな常駐プログラムを使ったらDBコネクション繋ぎっぱなしできるよね?
それをphpから呼び出したら、プログラム呼び出しののオーバーヘッドとDB接続のオーバーヘッド天秤にしても常駐の方が早い希ガスだけどどうなの?
あと、phpでSpeedyCGIみたいシステムないの?

759:nobodyさん
09/11/03 10:19:58
DBコネクションプールといえばpgpoolとかあるけど。
MySQLならSQLrelayとか。

760:nobodyさん
09/11/03 10:39:36
phpはモジュールで動かしてる場合が多いから・・・

761:nobodyさん
09/11/03 21:21:41 ppv8Lxeq
ちょっと質問。
wikipediaで携帯のIPアドレス一覧があって、それを元にアクセスした人のIPが携帯なら携帯用のページに飛ばすのをPHPで以前に作ったんだけど
知らない間に携帯用のIPアドレスが増えてるみたいで、修正しようかと思うんだけど、結局イタチごっこだから
シンプルにユーザーエージェントで分別しようかと思うけどそれだとPCで偽装もできるので
ちゃんと的確に分けられる方法教えて。

762:nobodyさん
09/11/03 21:23:10
携帯依存文字でYES・NOでもやってろ

763:nobodyさん
09/11/03 21:34:29
わざわざUA偽装してアクセスするのは携帯用ページが見たいからでしょ
だから普通にUAで振り分ければいいとおもうが

764:nobodyさん
09/11/03 21:38:57
>>761
ケイタイ用のIPを常に更新して、IPでキャリアを判別するサイトのサービスを始めるのだ!

765:nobodyさん
09/11/03 23:00:04 Hf2P9qWB
phpのApacheの設定が全くできません!Vistaです。本に書いてある通りにしても、ブラウザに乗せるとダウンロードダイアログが出ます
助けてください

766:nobodyさん
09/11/03 23:08:14 ppv8Lxeq
確かに携帯用のページが見たくて偽装するんだろうし、別に携帯用ページをPCで見られて困ることはないよ。
だけど、UAの文字列の一部で携帯かPCかを判断すると、今後携帯キャリアがUAの仕様を変えた時に、
携帯だかPCだか判断できずに、携帯なのにPC用ページを表示してサイズでかすぎて表示できないとかだと最悪でしょ。

妥協してユーザーエージェントでやるとするといくつあるの?
ドコモ、au、ソフトバンク、ボーダフォン、J-PHONE、あと何?
ウィルコムとかイーモバイルとかも固有のUAあるの?ディズニーモバイルは?あとiフォンもある?

767:nobodyさん
09/11/03 23:42:05
俺はIPでやってるけど、ホスト名でもいいんじゃないの振り分け

768:nobodyさん
09/11/03 23:44:16
PEAR::Net_UserAgent_Mobileは?

769:nobodyさん
09/11/04 04:13:04
>>759
トンクス。
でも SQLRelay いれたら遅くなったって意見が多くてちょっとガッカリ

770:679
09/11/04 09:18:30
規制ががが
>>720
・・・申し訳ない。
以前あったレスからJavascriptは使わないと決めて
元々記述したJsコードを全部削除してPHPに実装しなおしていましたが
報告忘れてました

>>721
A1とかA2とかは、それぞれupdateでsetする内容が違うだけ。
むしろコレなら変数で勝手に変わる様にしたほうがいいのかもしれないですが・・。

>>722
一応削除はしてます。

>>723
諦めたらそこで終わりじゃないですか??

>>724
はい。実はJavaはやっていたのですが
どうもHTMLやらJavascriptやらPHPやらとくると・・どうにも

771:679
09/11/04 09:19:55
>>726
まだまだ若いですよ。上司には当然教えてくださる方もいないので独学になりますが。
いかんせん会社が大きく無いのでしょうがないです。

>>727
本・・ですねえ。
でも今月はCiscoの本やらいっぱい買ってしもたorz
経費で落ちそうなら考えてみます。


今のところ一応Formタグを追加し、typeをSubmitにして飛ばすようにしてます。
次のphpでname属性から拾ってきたものを取り上げ、PHP側のif分岐等でのマッチング査定をしつつ
その先で上書き処理、という流れで、やっていくつもりです。

772:nobodyさん
09/11/04 09:50:46
>>765
それ、Apacheの問題であってPHPのじゃないじゃん。

<httpd.conf>
AddType application/x-httpd-php .php
PHPIniDir [PHP.iniのあるディレクトリ]
LoadModule php5_module [php?apache*.dllへのフルパス]

書いたらApacheの再起動。


773:nobodyさん
09/11/04 13:15:10 +cyJ/kJv
あのさぁ、まずはちょっと聞いてくれ。

ドキュメントルート(サイトのルート)の中の一つのフォルダを完全にPHP使えないようにしたい。
そうしないとそこがアップロード用のファイル保存フォルダになっているので
PHPのファイルをアップされブラウザでファイルをアクセスされると危険。unlink()とかされたら完全に終わる。
かと言ってアップ時に、拡張子が.phpのファイルをはじくとかだとそれも困るし、そのファイルの内容をチェックするのも大変。
.htaccessファイルに、拡張子.phpは.htmlとするように書いてもいいけど.php5とかPHPとして動く拡張子が他にもあるから対処しきれない。

で、特定のフォルダにだけPHPを使わせない機能ないの?

もしくはアパッチでドキュメントルート以外のフォルダを作り、

C:/root_A(PHP可能)
C:/root_B(PHP不可)
として
http://ドメイン/root_B以下にアクセスがあった時はC:/root_B/index.htmlを表示させるとかできないかな?
バーチャルホストじゃなくドメイン同じで二つのルートを使い分けるって事。

774:nobodyさん
09/11/04 13:18:32 +cyJ/kJv
今書いててふと疑問に思ったんだけど、レンタルサーバーって複数の人が使ってて
同じドライブに複数の人のルートがあると思うけど他人のファイルをunlink()したりできないのは何で?

775:nobodyさん
09/11/04 13:22:13
FOR($i=0;;$i++){

PRINT 'マンコ';

}

初めて作ったプログラムがこれ。

776:nobodyさん
09/11/04 13:26:07
>>773
apacheのDirectory設定でできるよ

777:nobodyさん
09/11/04 13:31:39
>>774
一つはパーミッション。
削除権限はそのファイルが含まれているディレクトリのパーミッションによるが
777とかしてたら消せる。
でもphpだと全ユーザーが同じ実行ユーザーになる場合もあるので
phpのSafeModeを使う。
これは、実行ファイルのオーナー(実行時のユーザーではない)が
他のオーナーのファイルをいじれなくする仕組み。

778:nobodyさん
09/11/04 16:27:43 +cyJ/kJv
>>776-777
ありがとう。ちょっとググってみるよ。

779:nobodyさん
09/11/04 17:03:15
そういや、拡張子で制御は把握しきれないから・・・とか書いてるけど
基本的にhttpdは拡張子で実行するか決めてるんだから
拡張子で制限すればいいはずだよ。

780:nobodyさん
09/11/04 17:37:09
>>773
phpファイルはアップロード禁止にしたらいいんじゃない?
どうしてもアップロードしたい場合はZIPって手もあるし

781:nobodyさん
09/11/04 18:05:34
>>773
Options -ExecCGI -Includes -MultiViews
php_flag engine off
こんな感じで.htaccessを設定したらCGIとPHPは動かなくなるはず


782:nobodyさん
09/11/05 02:39:02 bdU2dbgu
URLリンク(example.com)
というURLでアクセスしたら
URLリンク(example.com)
の結果を返すにはどうしたらいいですか?

783:nobodyさん
09/11/05 02:43:08
mod_rewrite

784:nobodyさん
09/11/05 02:56:01 bdU2dbgu
>>783
ありがとう

785:nobodyさん
09/11/05 09:23:02
FOR($i=0;;$i++){

PRINT 'パイズリ';

BREAK;
}

二番目に作ったプログラムがこれ。

786:nobodyさん
09/11/05 10:17:21
for ($i = 0; i <= 10000; $i++) {
 print "まんこ\n";
}
print 'な? 9999の次でも1に戻るってことは無いだろ?';


787:nobodyさん
09/11/05 10:31:55
あたまおかしい

788:nobodyさん
09/11/05 12:50:44
やっぱり大量規制でいいや。

789:nobodyさん
09/11/05 13:16:33
てst

790:nobodyさん
09/11/05 15:22:19 17l6YWCO
ユーザー関数は、あちこちのページで使い回すから当然別のファイルにして、その都度インクルードとかするでしょ。

index1.php
↑インクルード
user_func.txt
↓インクルード
index2.php

でもこうなるとindex1.phpにアクセスするということはuser_func.txtにもアクセスする事になるので、鯖に負担がかかる。呼び込むファイルが増えればなおさら。

負荷を無くすにはどうしたらいいでしょうか?

個人的にできたらいいなと思うのは、この様な自作関数もメモリ上に置けるようにしてほしい。
最初に鯖を立ち上げた時に読み込んで後は元々ある関数みたいに使いたい。

791:nobodyさん
09/11/05 15:33:59
>>790
実際、どの程度の負荷がかかってるのさ?

一度user_func.txtが読み込まれれば、2回目からはメモリを見に行くから気にしなくて良いレベルだと思うぞ。

792:nobodyさん
09/11/05 16:22:18 17l6YWCO
>>791
えっ?そうなの?って事はindex.phpとかも一回読まれたらメモリ見るの?
知らなかった。どの位の負荷がかかってるかはどうやって調べたらいい?
最近サイトを開くと重いんだよね。特に夜。LAN内のPCからでも遅いから回線が原因じゃないかと思うんだけど
HDDがあれこれファイルを読んだりして追いついていけないのかもって思って。
CPU仕様率は結構低いんだけど。LANもギガビットLANだし、原因がHDDとしか思えないんです。

793:nobodyさん
09/11/05 16:39:49
>>792
気になるならdataスキーム形式にして埋め込めばいいよ


794:nobodyさん
09/11/05 16:55:33
>>792
普通は一度ファイルを読み込めば、次回はメモリを参照する。
readで毎回必ずHDDを読んでいたら大変な事になるよ。

CPU使用率がわかってて、DISK周りの負荷は調べてない?
Linuxならiostatとかで見て見なよ、sarが入ってればそれでもいいし。

795:nobodyさん
09/11/05 16:59:36
>>792
ギガビットは過信しないほうがいい
LANカードやHUBがしょぼかったら無意味
転送量が少なくても一度に大量の接続があれば捌ききれなくなる。

796:nobodyさん
09/11/05 19:35:22
>>792
世の中にはキャッシュと言うものがあってだな・・・
てか、HDDからの読み込みが気になるくらいでかいファイルなのか?そのスクリプト。

797:nobodyさん
09/11/05 20:31:20 17l6YWCO
>>793-795
OSはWindowsなんだけど、とりあえずHDDをSSDとか1万回転のHDDに変えたら速くなりそうな気がするんだよね。
ルータやLANケーブルはそれなりのやつを使ってるけど。
実際商用のサーバーってどうやって負荷計ってるの?そういうフリーソフトないかな?
何を改善すればいいか分からん。

>>796
スクリプトはでかくないよ。ただ動画のダウンロードが多い。これが遅延の原因かも。

あとデータベースとOSのドライブは別のドライブにした方が速い?パーティションじゃなくて完全に個別という意味で。

798:nobodyさん
09/11/05 23:07:04
>>797
流石にスレ違いだろ。

DISKは複数あったほうが速いにきまっとる
書いてるようにOSとDB分けたほうがいい。

799:nobodyさん
09/11/05 23:39:13
>790
PHPのファイルは、OSによってディスクから内容がメモリに読まれた上で、インタプリタによって機械語にコンパイルされ、実行される。
ここまでが基礎知識。

で、まず、今どきのOSはディスクからの読み込みをキャッシュする。
つまり、一度読んだファイルはメモリにそのまま持っておいて、更新がなければ次回以降はそいつを使う。
次に、APCやeアクセラレータといったPHP関連ライブラリを使うと、機械語にコンパイルされたコードを使いまわしてくれるようになる。

800:nobodyさん
09/11/05 23:55:44
>>797
NICかHubが壊れかけてるとか?
とりあえず遅延がどの時点で発生しているのか調べないと。
なんかPHPが原因じゃないっぽい感じがする。

801:nobodyさん
09/11/06 15:02:27 uY82lX0B
Tomcat+Javaで、Javaのローカルページ開くと、コンソール画面に出力できるよね
System.out.printlnで
あれ、デバッグですごく便利なんだけど、
EclipseでPHPでできないのかな

802:nobodyさん
09/11/06 15:30:23 +6dsWJpT
GoogleSafeBrowsingで質問です

URLリンク(www.madirish.net)
上記を参考にPostgreSQLで作ってみました。
BL取得→DBに保存→webから利用があったらmd5してdbにSELECT発行
という形で作ってみたのですが、BL取得→DBに保存
ここまで上手くいって294,830件のハッシュがDB内に存在する所までは確認できました

ところが実際にwebから本家GoogleSBでBL入りしているようなドメインを送ってもBL判定されません。
どなたかMySQL環境がある方、このソースをまんまで試してみて頂けますでしょうか…。
例として下記
URLリンク(www.google.com)

803:nobodyさん
09/11/06 21:29:10 qkr//tmU
変数に値が入っているか入ってないか調べる時

if(isset($val))かif(!empty($val))

if($val != "") か if($val <> "")

では、どちらの方が処理が速いのでしょうか?

804:nobodyさん
09/11/06 22:11:01
>>803
とりあえず、「empty isset」のキーワードでぐぐってみた方がいいな

805:nobodyさん
09/11/06 23:17:02
>803
Cのコードを読んでみないとなんとも言えないが、もっとも処理の少ないであろうisset()が最速だと思う。
だけど、そんな速度差を気にしないといけないような案件でPHPを使うほうが間違っているので、どうでもいい。

806:nobodyさん
09/11/06 23:29:19 vBz8RCVv
フレームワークを覚えるのに挫折しました
そこでクラスについて勉強したいと思うのですが
フレームワークを覚える前にクラスの使い方を覚えると楽になりますか?


OOP、デザインパターンを覚えてからフレームワークに入るのが王道でしょうか?
プログラミングはPHPが初めてでクラスの基本的なものは分かるのですがクラスだけは敷居が高くて勉強してきませんでした

807:nobodyさん
09/11/06 23:33:04
フレームワークの製作者になるのが目標でなければ
フレームワークの使い方だけ学べばいいんじゃないかな。
どこにファイルを置いて、こういう名前にして、どういうAPIがあって・・・みたいな。

808:nobodyさん
09/11/06 23:34:14
クラスなんて書けなくても使えるなら別に困りません。

809:nobodyさん
09/11/06 23:34:43 vBz8RCVv
class hello_world
{
private $word = "こんにちは世界さん(^^)";

function view() {
return htmlspecialchars($this->word, ENT_QUOTES);
}
}


$obj = new hello_world();
echo $obj->view();

810:nobodyさん
09/11/06 23:38:43 vBz8RCVv
借り物のPCなのでデータベースを入れられないのと使い方がわからないのでちいたんは挫折しました
cakePHPもなんかドキュメントの通りやりましたがこのファイルにこれを書けという意味が理解できなかったため挫折しました
smartyはサンプルみて挫折しました

811:nobodyさん
09/11/06 23:41:26
phpでstaticとかprivateってつかえる?

812:nobodyさん
09/11/06 23:44:53
>>811
>>809見ろよ

813:nobodyさん
09/11/06 23:53:40
ちいたんは挫折しました

814:nobodyさん
09/11/06 23:54:01 vBz8RCVv
public
protected
private
が使えます

815:nobodyさん
09/11/06 23:54:54
ちいたんで挫折してたらこの世に使えるFWなくね?w
あとSmartyはFWでないしな

816:nobodyさん
09/11/06 23:59:14
symfonyはインストールできましたがドキュメント見ても分からないため挫折しました
ZendFrameworkはドキュメントがたくさんあってまだ読んでないです

フレームワークって新しい言語を覚えるような感じですね
気合入れないとだめですね

817:816
09/11/06 23:59:56 vBz8RCVv
id出し忘れました

818:nobodyさん
09/11/07 01:02:50
順を追ってステップアップしていくのが一番だよ
がんばれ!

819:nobodyさん
09/11/07 01:04:33
ちいたんはコメントないから初心者向きではないよ

820:nobodyさん
09/11/07 10:59:11 HHoKTIgI
//検索対象
$array = array("inquiry","support");
//検索する文字
$val = "inquiry_form";
// 検索文字が対象に一致するか
foreach($array as $item){
if(strstr($val,$item)){
//一致した場合の処理
}
}

検索する文字が検索対象に一致するか調べたいと思います。
上のように対象をforeachで回して$valに対象の文字列と一致するか
調べる方法が一番簡単だと思いますが、
検索する文字が複数ある場合、何回も上記の事をしなければいけません。
もう少し効率の良い書き方はないでしょうか?

821:nobodyさん
09/11/07 11:26:41
>>820
array_map使うと楽です

822:nobodyさん
09/11/07 11:32:59 HHoKTIgI
ありがとうございます。ぜひ参考にします。

823:nobodyさん
09/11/07 12:00:25
function a($a) {
$txt = "aaazzzccc";
if (strstr($txt,$a)) echo "一致\n";
}

$search = array("aaa","bbb","ccc");

$p = array_map("a",$search);


824:nobodyさん
09/11/07 12:23:34
> 検索する文字が複数ある場合、何回も上記の事をしなければいけません。
別にarray_mapなんか使わなくても単にforeachの二重ループにすればいいのでは?

825:nobodyさん
09/11/07 12:35:53
質問者は既にforeach使ってるみたいだね

826:nobodyさん
09/11/07 14:40:11
2重ループwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

827:nobodyさん
09/11/07 14:42:27
単にin_arrayでいいのでは?

828:nobodyさん
09/11/07 15:07:14
in_array= 配列に値があるかチェックする

質問では配列に格納された文字列が、変数に格納された含まれているかチェックする

おk?

829:nobodyさん
09/11/07 15:09:30 PiVKZwA7
HTML_QuickFormとSmartyの組み合わせだと、1ページに1つのフォームしか作れないんでしょうか?
検索しても複数ページの遷移の件などがヒットして、複数のQuickFormをSmartyに渡す方法が出て来ません

830:nobodyさん
09/11/07 15:29:08
>>828
日本語でおk

831:nobodyさん
09/11/07 16:00:49
>>830
in_arrayはお門違いってことが理解できなかったか
外人さん乙

832:nobodyさん
09/11/07 16:58:49
>>831
えっ・・・?
>検索する文字が検索対象に一致するか調べたいと思います。

833:nobodyさん
09/11/07 17:04:57
>>820の質問理解してる?
>>832さんよおじゃあin_array使ってコード書いてみろよwww

834:nobodyさん
09/11/07 17:06:46
>>832
質問者が少々日本語でおkなんだよ。意訳すると
「検索文字列が検索対象に含まれていたら何らかの処理をする、と言うロジックを
検索対象が複数だった場合にスマートに書きたい」
って事だろうからな

835:nobodyさん
09/11/07 17:09:04
//検索対象
$array = array("inquiry","support");
//検索する文字
$val = "inquiry_form";
// 検索文字が対象に一致するか
foreach($array as $item){
if(strstr($val,$item)){
//一致した場合の処理
}
}


これをin_arrayを使ってどう書くのか激しく興味あるんだけど

836:nobodyさん
09/11/07 17:13:26
$a=array(1,2,3);
foo($a, array(2,8,9));
てやったとき、両方に2が含まれてるからtrueが返って欲しいんだろうな。
if($a!=array_diff($a, array(2,8,9)))
ってどうよ?

837:836
09/11/07 17:14:31
strstrだったか、失礼しました。

838:nobodyさん
09/11/07 17:19:55
in_arrayでコードまだ??

839:nobodyさん
09/11/07 17:22:59
>>827=>>830=>>832逃亡乙

840:nobodyさん
09/11/07 22:43:03 CwxQOSeK
constってどういう状況で使うものでしょうか?

class test
{
const hiru_aisatu = "こんにちはっ!!";
const yoru_aisatu = "こんばんは・・・";
const hurarerutoki = "さようなら・・2度と会わないで";
}


echo test::hiru_aisatu;


こんなかんじで書くのと

$hiru_aisatu = "こんにちはっ!!";
$yoru_aisatu = "こんばんは・・・";
$hurarerutoki = "さようなら・・2度と会わないで";

echo $hiru_aisatu;

というふうに書くのはクラス使うほうがスピードは遅い?ような気がするのですが
複数人でコード書く場合はクラスでconst使ったほうがいいでしょうか?

841:nobodyさん
09/11/07 23:45:33
in_arrayで解決おじさんまだ????????????????

842:nobodyさん
09/11/07 23:57:06
規制されたままの方が良かったな

843:nobodyさん
09/11/07 23:57:15
>>840
・定数は上書きされない
・クラス定数は局所化される

844:nobodyさん
09/11/08 02:32:54 35LWJ8zb
関数にいくつでも値を渡すことって可能でしょうか?
hoge_func($a)
でも
hoge_func($a,$b,$c,$d,$e,$f)

ただし
function hoge_func($a=null,$b=null...
とは違う方法で

845:nobodyさん
09/11/08 02:56:24
array

846:nobodyさん
09/11/08 06:59:04
>>844
URLリンク(php.net)

847:nobodyさん
09/11/08 08:26:26 H7unfEmK
PHPとMYSQLでお気に入りの本を紹介するアプリ(紹介者は複数)を作ってるんだけど、
これまでに紹介された本の一覧ページで、同じ紹介者の本が連続して出ないようにしたいです。
たとえば登録時に10冊まとめて登録できる場合、主キーのIDを表示時のソートのキーにしたら
同じ人の紹介した本ばかりが一画面に出ることになります。
これを防ぐにはどうしたら良いですか?
登録時にランダム数を入れるカラムを作って、それをキーにして表示するのか、
それともPHPだけで出来るでしょうか?

848:nobodyさん
09/11/08 08:59:03
>>847
全然適当な並びでよければ
ORDER BY RAND()

849:nobodyさん
09/11/08 09:04:36 H7unfEmK
>>848
うおおお、凄い! そんなのがあるんだ?
やっぱり聞いて良かったです。ありがとう!

850:nobodyさん
09/11/08 10:30:15 atd+IQXc
class test
{
public $v = "test";

public function display() {
return $this->$v;
}
}

$obj = new test;
echo $obj->display();

testと表示させたいのですが表示できません
PHP5.3です
どなたかご指導お願い致します

851:nobodyさん
09/11/08 10:39:14
>840
class Greeting{
const AT_MORNING = 'おっはー☆';
const AT_DAYTIME = 'こんにちは';
const AT_NIGHT = 'こんばんわー';
const FIRST_MESSAGE = '初めまして';
}
class Love{
const FIRST_MESSAGE = '好きです!';
const END_MESSAGE = 'さようなら…二度と会わないで';
}

echo Greeting::AT_MORNING;

例えば定数の場合、そこまでに通ったコードを全部読んで、定義部を探さないといけない。
クラス定数ならば、格納先のクラスさえ分かれば、そこを探すだけで済む。
勿論、「定数はこのファイルに全部書くこと!」という規則で運用しても同じような効果になるが、「立ち入り禁止」というルールだけ設けるのと柵を作るの、どっちが安全かの差だな。
また、Greeting::AT_MORNINGを読むにはGreetingクラスの存在を知らなければ(requireしなければ)ならない。
つまり、この定数を使っている箇所がどこら辺にあるのか特定しやすい。
あとは、全体から見える位置にものを定義すると、変数名被りや定数名被りが発生しやすい。クラス定数なら、クラスさえ違えば同名になっても問題ない。

852:nobodyさん
09/11/08 10:41:21
>>850
エラー出力見ようよ。たぶんこの場合ずばりのエラーが出てる。

return $this->$v;
の、vには$要らない。

853:nobodyさん
09/11/08 10:41:44
return $this->$v
だと そのクラス内($this)の変数$vが持ってる値の変数になっちゃう
return $this->v
がただしい

854:nobodyさん
09/11/08 10:45:24
ありがとうございます

>>852-853

855:nobodyさん
09/11/08 10:46:05 atd+IQXc
ミス

ありがとうございます
おかげ様で解決できました
>>852-853どうもありがとうございました

856:nobodyさん
09/11/08 10:55:19 R5NqdoKR
オブジェクト指向の覚え方についてどなたかご指導お願いします

ここ見て勉強してます
URLリンク(php.net)
目次
* はじめに
* クラスの基礎
* Properties
* オブジェクト定数
* クラスのオートローディング
* コンストラクタとデストラクタ
* アクセス権
* Object Inheritance
* スコープ定義演算子 (::)
* static キーワード
* クラスの抽象化
* オブジェクト インターフェイス
* オーバーロード
* オブジェクトのイタレーション
* パターン
* マジックメソッド
* finalキーワード
* オブジェクトのクローン作成
* オブジェクトの比較
* タイプヒンティング
* 遅延静的束縛 (Late Static Bindings)
* オブジェクトと参照
* Object Serialization


この目次を上から順番にやりたいのですがどこまでが基礎の部分でしょうか?

857:nobodyさん
09/11/08 11:46:29
スレを使ってデバッグするとはお主やるな

858:nobodyさん
09/11/08 11:47:34
>>855へのレスね


859:nobodyさん
09/11/08 11:58:07
857 名前:あぼ~ん[あぼ~ん] 投稿日:あぼ~ん
あぼ~ん

858 名前:あぼ~ん[あぼ~ん] 投稿日:あぼ~ん
あぼ~ん


860:nobodyさん
09/11/08 12:02:22
>856
staticまで知ってればとりあえず問題ない

861:nobodyさん
09/11/08 12:12:54
>>856
「オブジェクト指向の覚え方」(というか学び方)を知りたいんですね?

まずは、
とある言語が「オブジェクト指向的な記述を支援してくれる部分」と、
「オブジェクト指向というもの」自体とを
弁別した方が良いかと。

とある言語で後者を実践するときのものが前者。
そのページで得られるのは、基本的には前者のみ。

OOPそのものへの入門だったら、PHP以外の例えばJavaあたりを使ってOOPの
解説してるとこ覗いた方が良いよ。

それでもその質問に答えるとしたら、上から順番でどこまでってことは無いかな。
>* クラスのオートローディング
↑飛ばしてもいいけど、
>* コンストラクタとデストラクタ
↑飛ばせない
てな感じで。

862:nobodyさん
09/11/08 12:30:58
Javaが一通り出来るようになればオブジェクト指向はだいたい理解出来るはず
使いこなすにはまだまだだけど

863:nobodyさん
09/11/08 12:34:58
じゃヴぁじゃヴぁうるせえよks!

864:nobodyさん
09/11/08 12:41:45
>>862
理解できてるから使いこなせるわけで。 順序逆だz

865:nobodyさん
09/11/08 12:52:04
PHPみたいな変数に何でも入って、evalもあるような言語に
JavaのOOPを持ち込むのは、混乱の元だろう。
頭固くなるからやめとけ。
初心者はSqueakでもやっとけばいい。

866:nobodyさん
09/11/08 13:33:48 9EHY5xph
インスタンスってどういうときに使うんですか?

class SimpleClass{
public $var = 'a default value';
public function displayVar() {
echo $this->var;
}
}
$instance = new SimpleClass();
$className = 'Foo';
$instance = new $className();

ってマニュアルにサンプルが載ってますが
下から1~3行を
$obj= new SimpleClass();
で済ましたほうが楽だと思うのですがどうなんでしょうか
どなたかご教示お願いします

867:nobodyさん
09/11/08 13:36:52
済ますも何もSimpleClassではなく別クラスのFooのインスタンスを作ってるように見えるが

868:nobodyさん
09/11/08 13:41:42 9EHY5xph
すいませんこれです

URLリンク(www.php.net)
例3 インスタンスを作成する
<?php
$instance = new SimpleClass();

// 変数を使うこともできます
$className = 'Foo';
$instance = new $className(); // Foo()
?>



869:nobodyさん
09/11/08 13:46:05
インスタンスを生成したいクラスを動的に指定する場合に便利だよ
autoloadしたい時とかFactoryパターンの時とか

870:nobodyさん
09/11/08 13:48:04
new演算子の右辺に変数が使えるって例だな
可変変数の一種だ

871:nobodyさん
09/11/08 13:52:41
可変変数の一種などではなく可変関数
URLリンク(www.php.net)

872:nobodyさん
09/11/08 14:29:44
>>866
>$obj= new SimpleClass();

これだってインスタンスを作成してるわけだが・・・

873:nobodyさん
09/11/08 17:28:03
>>866
クラスってのはクッキー生地の型抜き用の型で、
インスタンスはそれで作られた個別のクッキー(生地)。

抜き型だけあってもそれを使わないと(newしないと)食えるクッキーの存在は生成されない。

てな感じでどうだ?

874:nobodyさん
09/11/08 17:52:29
>>873
スタティックメソッドは?

875:nobodyさん
09/11/08 17:55:43
最初に入れる具を決めて皮を作るか、とりあえず具は後で買ってくると決めて皮を作るかの違い

出来るものはどちらにしても肉まん・あんまん・中華まん。

876:nobodyさん
09/11/08 18:00:44
>868
変数$classNameの値に応じて、生成するインスタンスを変えられる。
class Foo{
function say_name(){
echo 'foo foo foo!';
}
}
class Bar{
function say_name(){
echo 'Bar, bar, BAAAAAR';
}
}

$instance = new $className();
$instance->say_name();

クラスに同じ名前同じ引数のメソッドがあり、その中身のロジックが全然違う場合なんかに使える。

877:nobodyさん
09/11/08 18:32:26 QzQ1Ze2q
class test{
 function test(){
  throw new Exception('test');
 }
}

try{
 $test = new test;
 $test->test();
}catch(Exception $e){
 echo $e->getMessage();
}

classからスローした例外って上みたいにキャッチできますか?

878:nobodyさん
09/11/08 18:59:39
なんで試さんの?

879:nobodyさん
09/11/08 19:13:09 QzQ1Ze2q
できた、役に立たない奴らだ

880:nobodyさん
09/11/08 20:10:53
次の方どーぞ。

881:nobodyさん
09/11/08 21:05:50 8S6RVioX
classを作っておくのは同じコードを2度も書かないためってことでしょうか?
掲示板を作るとき「ファイル操作・文字列処理」をしますのでそういうのをクラスにまとめることによtt
いろんなスクリプトで再利用できるという認識でよろしいでしょうか?

882:nobodyさん
09/11/08 22:33:56
再利用できるように作ってあれば。

883:nobodyさん
09/11/09 09:32:56 utcN5JBF
>>881
同じコードを2個書かなくていいのはfunction(関数化)
クラス化は、同じコードを書かなくていいだけでなく、そのときに必要な部分のみ使える感じ



884:nobodyさん
09/11/09 10:54:46
関数だと必要な部分のみ使えないの?

885:nobodyさん
09/11/09 10:57:53
オブジェクト指向のオの字も知らないようだと、クラスを作る意味はまるで無い

886:nobodyさん
09/11/09 11:09:38 utcN5JBF
クラスは何つーか、製作ツール作る感じじゃね?
RPGツクールとかそんな感じで
逆にfunctionなどの関数はそのまま関数作ったり
RPGツクールの中の、敵にダメージを与える計算部分とか

887:nobodyさん
09/11/09 11:12:00
クラスの目的は…
少なくとも出発点はデータの保護、というかデータに対して可能な操作の定義。>>881

つか、もうそれってPHPの質問と違うやん。
OOもしくはOOP一般じゃろ。

888:nobodyさん
09/11/10 00:04:02
学校にもAクラス、Bクラスってあるだろう。
それと同じ意味だよ。

A組 が 廊下掃除担当
B組 が 体育館掃除担当
C組 が プール掃除担当

という感じにクラス毎に役割を振っておけば、
後々管理が楽になるだろう?

「廊下に関する事なら、A組に聞けばいい。」

ってな具合で。

889:nobodyさん
09/11/10 00:22:25
関数とオブジェクトのローカル変数をセットにしておける。
継承が使える。

これだろ。

890:nobodyさん
09/11/10 00:28:25
無駄に難しく考えないで、自分のレベルで便利に使えるところから使えばいいんだよ。
クラスつかうなんてのは、手段であって、目的ではないからな。

891:nobodyさん
09/11/10 02:31:13
同じく、システムの中である程度一貫性持ってれば扱い方は人によって個性出てもいいと思う

892:nobodyさん
09/11/10 02:57:15
OOP本のサンプルって、
Animalクラスを継承してDogクラスとかCatクラスを作るって例が多いけど、
わかりやすいようで解りづらいよなw

893:nobodyさん
09/11/10 03:10:25
>>892
>Animalクラスを継承してDogクラスとかCatクラスを作るって例
この手の解説は参考にならないって、歴史が証明してるよなw

894:nobodyさん
09/11/10 03:44:55
最初は関数で作って、後々追加案件で処理毎にクラス化してる
配列でまとめてあると、後で弄り易い。

895:nobodyさん
09/11/10 05:31:53
それ、クラスである必要があるコードでなかったりしないか

896:nobodyさん
09/11/10 06:59:46
>>893
そういう概念の話は腐るほど聞いても、じゃあいざ実装しようとすると
あれどれがDogでAnimalなんだっけ、いやそもそもクラスにする必要あるのかこれ?
と思考の海に沈む

まっとうなOOP本読めばいいんだろうけど

897:nobodyさん
09/11/10 08:03:12 T58KxytE
同じような方向の質問になるけど
PEARとかでよくファクトリークラス(?)を使って
クラスからクラスを作ってたりするけど、
あれってどういう理由があるの?

898:nobodyさん
09/11/10 09:28:55
>>897
URLリンク(www.techscore.com)

899:nobodyさん
09/11/10 09:41:10 lbGcCYju
自分はフォームのパーツを生成する機能をまとめてクラスにしてるんだ
$fmPartsCrass->getUTypePD(10); //DBの登録値10をselectedとするユーザタイプのプルダウンを作る
$fmPartsCrass->uTypeToTXT(10); //フォームの確認画面で、選択値10のユーザタイプを出力する
クラス内のinit()ではプルダウン元になるname,valueの二次元配列を沢山読み込ませてる感じ。
こんなので良いのかな? クラスの使い方って。。

900:nobodyさん
09/11/10 09:56:23
俺の好みで言うと、コーディング時に種類が決まってるパーツは
new classNameで明示的にインスタンス化したいな。
パラメータ指定してインスタンス作ってからaddとかするように
書くだろうな。
ま、好みの話だからさらっと流してくれ。

901:nobodyさん
09/11/10 09:57:06
今気づいたがクラスはCrassじゃなくてClassだなw
アホすぎワロタ

902:nobodyさん
09/11/10 10:04:28
>>895
関数にすると値渡しが面倒なんだわ
特にお金関係は。

903:nobodyさん
09/11/10 10:25:02
>>895は「最初は関数で作って」おけるような物なら、
クラス化する必要なくね?って事だと思う。

俺はそうは思わないけど。

904:nobodyさん
09/11/10 10:51:32
ちょっとでも楽になるか、それともクラスにする手間を惜しむか、
必要があるかどうかは結局その人の感覚次第でしょ

905:nobodyさん
09/11/10 11:05:09
どっちが楽かも人によるしね。
でも、殆どの人にとって、クラス化は最初は楽じゃないんだよね。
だから壁を越えようとしない人も多いんだろう。

壁を越えた向こうには、素敵な楽園が広がって・・・ るわけでもないし。
待ってるのは次の壁と、無間壁越え地獄w

906:899
09/11/10 11:50:11
上で書いた例ってヘンですか?
自分じゃ間違ってないだろって気持ちと、これはfunctionを束ねただけのものじゃないかって
気持ちが半分半分です。
バラしたら関数として独立化できるものはclassにする必要ないのかななんて考えると
全部そうだろうという気持ちがでてくるし…

907:nobodyさん
09/11/10 11:57:28
>>906
functionを束ねただけのものですね

908:nobodyさん
09/11/10 11:58:15
変数名にCl(r)assの文字がある時点でおかしいと思うべきだな

909:nobodyさん
09/11/10 12:01:22
>>906
汎用性を持たせればいいんじゃね?
リスト意外にもラジオボタンや複数選択でも出力、クラス指定で見た目も変えれるとか

910:nobodyさん
09/11/10 12:03:13 HgEfIoEe
くだらない質問ですがよろしくお願いします。
ソースを見ていたら
<?= $test ?> という書き方をしている箇所を見つけました。
コードを書くときは<?php ?>で囲うと本には書いてありましたが
<?php print($test) ?> と、どう違うのでしょうか。
あまり見かけないということは何か問題のある記述方ですか?

911:nobodyさん
09/11/10 12:03:50
だから自分の基準は
 「素材があって、料理する方法が複数ある場合」
はクラスにするようにしてる

912:nobodyさん
09/11/10 12:11:36
>バラしたら関数として独立化できるものはclassにする必要ないのかな

これはその通り。ただ、

>全部そうだろうという気持ちがでてくるし…

こっちは、クラス使える言語でなら、そういうのはやめた方がいいぞ。
データってもんを無視すれば全部そうできるかもしれんけど。

「関数/手続きに(引数等で)データを渡す」だけで考えても一応全てのプログラムは書けるよ、確かに。
昔はそればっかだったし。


913:nobodyさん
09/11/10 12:20:07
>>910
マニュアル嫁

914:nobodyさん
09/11/10 12:24:15
>>910
前者はそろそろ問題になってきてる。

915:nobodyさん
09/11/10 12:36:32
別にクラスを 関数をひとくくりにするためだけに使ってもいいんだよ。

916:nobodyさん
09/11/10 13:07:19 n4Nrgy6L
class Oyabun{function buki(){echo "マシンガン";}}
class Kobun extends Oyabun{function buki(){echo "ピストル";}}
class zako extends Kobun{function buki(){echo "鉄パイプ";}}

クラスKobunからクラスOyabunのメソットbukiを呼び出してマシンガンって表示させることはできましたが
クラスzakoからクラスOyabunのbukiを呼び出してマシンガンと表示させる書き方がわかりません
直接クラスOyabunで呼ぶ出すのではなくzakoから呼び出す方法をどなたかご指導お願い致します

917:899
09/11/10 13:11:58
皆さんどうもありがとう
>>915
そうなんですか? そうだとしたら安心(?)しました
何度も同じコード書きたくなくて関数化してまとめてみようと思ったのがきっかけでした
クラスの継承とかpublic指定した変数の外部から参照とかしないんで、
複数の関数で使う変数の値やDB接続処理をinit()内部で定義すればいっぺんに書き換えられる、
まとめていつでも呼び出せる以上の利便性なんて感じないんですよね。それで十分だし。
何か損してるのかな。。

918:nobodyさん
09/11/10 13:16:16
言外の意図を読み取れないのかきみは

919:nobodyさん
09/11/10 13:37:25
>>916
なんか妙な継承だと思うんだな。子分は親分か?

>クラスzakoからクラスOyabunのbukiを呼び出してマシンガンと表示させる書き方がわかりません
雑魚が親分を使役するのか?

実はPHPはよく知らないが、
 Oyabun::buki();
で呼び出せない?


でもなぁ…
interface Kouseiin {
 public function buki();
 public function setOyabun($oya);
}
class Oyabun implements Kouseiin{略}
class Zako implements Kouseiin{
 private $oyabun;

 public function tasuketeOyabin(){
  $this->oyabun->buki();
 }
}

$chimpira = new Zako();
$chimpira->buki();
$chimpira->tasuketeOyabin();


920:nobodyさん
09/11/10 16:32:26 k/b4LSiu
よろしくお願いします。

function &set() {
     ↑このアンドマークの意味を教えてください。

921:nobodyさん
09/11/10 16:45:26
記述ミス

922:nobodyさん
09/11/10 18:02:30 hMuYWgxi
PDO::ATTR_PERSISTENT=>true として PDO::prepare を使った場合、prepare ステートメントは接続が維持されている限りキャッシュされていて、前回のキャッシュをphpが勝手に使ってくれるという動作をするのでしょうか?
DBサーバーはpostgresqlです

923:nobodyさん
09/11/10 19:01:07
>>922
PDOStatementのデストラクタで毎回削除してしまうようだね

ext/pdo_pgsql/pgsql_statement.c
> static int pgsql_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC)
> {
...
> #if HAVE_PQPREPARE
...
> if (S->is_prepared) {
> spprintf(&q, 0, "DEALLOCATE %s", S->stmt_name);
> res = PQexec(H->server, q);

924:nobodyさん
09/11/10 19:03:05
>>920
URLリンク(www.php.net)

925:nobodyさん
09/11/10 20:40:43 k/b4LSiu
>>924
ありがとうございます。
こちらで質問して良かったです。

926:nobodyさん
09/11/10 21:11:57 Yr8QXJQk
>>923
ありがとうございます
しかし劇的に軽量化が出来ないかと思いましたが残念です
pgsqlで関数として定義にしておけば計量化したりしないものだろうか…

927:nobodyさん
09/11/10 21:28:36
君のシステムはDBの接続が継続してたら軽量化するの?

928:nobodyさん
09/11/10 21:31:00 Yr8QXJQk
そうですね、view使えばいいんですね。
ちゃんと勉強しましょう…。

929:nobodyさん
09/11/10 23:50:57 efP4W3lX
GoogleのようなAND検索を実装しようとしています。

以下のように空白で区切ろうと考えています
preg_split('/\p{Z}+/', $query);

単純な区切りでは問題ないのですが、
test aaaa => array('test', 'aaaa');

以下のように一単語として検索したい場合の正規表現が分かりません。
"test aaaa" test => array('test aaaa', 'test');

分かる方お願いします。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch