webプログラム板の連中があまりにも 気持ち悪いので、こっちに立てました。
プログラマーなんていうものは もともと気持ち悪いのが多いものなのだが、 それを考慮しても、webprog板はさらにそれよりも もう一段、気持ち悪い とにかくキモサが群を抜いている
プログラム板 → 腐海と風の谷の境界線(ギリギリ瘴気から守られている) webprog板 → 腐海のど真ん中(マスクなしでは5分で肺が腐ってしまう)
いまさら感
どっちも底辺レベルは変わらんな
php4.4.4 datetime型をyyyy/mm/ddで表示させたいんだけど どうすればいいの?
そんな型はありません
<?php setcookie("aaaaa","12341234"); print $_COOKIE['aaaaa']; ?> このプログラムを実行すると、 もしかして、一回パソコンの中にめがけて サーバーから12341234が送信されてきて、 そんで、次にアクセスしたときに、こんどは パソコンから、サーバーにめがけて、 12341234が、送信されてるの? つまり、パソコンの中の文字列がそのまま 画面に表示されるのでなくて、いったん パソコンから出て行って、インターネットレイヤーを通過して、 相手のサーバーまで届いて、そんで今度は変数にセットされて、 またこっちのマシンに戻ってきて、それで最終的に表示されるの?
12 :
デフォルトの名無しさん :2009/01/25(日) 09:06:57
14 :
8 :2009/01/25(日) 14:33:24
言葉足らずですまんです。 mssqlにあるdatetimeをphpでselectしたときだったもんでdatetime型という表現をさせてもらいましたわ。 でもって、時刻の部分が邪魔だったので、splitで分解して、strtotimeのformatにY/m/dで希望する形式に 出せました。 どもでした。
質問 「予約語は変数の名前として使ってはいけません」 って教科書に書いてあるんだけど、 実際にやってみたらエラーにもならず、 実行されてしまうんだけど、エラーはでないの? <?php $if=1; print $if; ?>
<?php for($i=0x127;$i<=0x255;$i++){ $b=$i; $c=chr($i); print $c; print "<br>"; } ?> このコードを実行すると、ところどころ、□になって しまう文字があります。 これはこういうものなの?
やりたかったことは、 アスキー文字の127−255って どんなものなのか、見たかったということです。
<?php while($a=array_shift($_SERVER)){ print ($a); print "<br>"; } ?> このスクリプトを実行すると、 サーバー実行環境情報が 全部出てくるよ
>>19 サンキュー
人間が混乱するってだけなのね。
質問 arrayを使わずに 要素を配列につっこむ便利な記法ってないの? perlにはあったんだけど? たとえば、 a,b,c,d,eの5要素を配列に入れたいとして、 arrayを使わずに、っていうか、クオーテーションを打たずに 格納する方法ってないのかな?
<img src="./img/****"> のファイル名の部分に、MySQLの値 $row["@@@@"]をいれたいんだが 上手く表示できない・・・誰か助けてください><
質問 PEAR + PECLが PHPの「エクステンション」なの?
>>22 <img src="./img/<?php echo $row["@@@@"]; ?>">
この記法なら、たいていのサーバの設定で動くはず。
これで駄目ならまた質問して。
>>21 $myArray = explode(" ", "lucy nancy angie sarah");
>>26 あー、文字列リテラルだけならそれで行けるか。
>>24 自己訂正。
> > クオーテーションを打たずに
> これはカンマのことだと推測したんだが、どう?
よく見たらクオーテーションもないのね。何やってんだ俺。
>>25 ありがとうございました!動きました!感動しましたw
>>24 Rubyも
a = %w(hoge mage hage)
みたいにいけたよな。
"hoge", "mage", ・・・ がまどろっこしいといえばそうだね。
PHPはあらゆる記述がまどろっこしいからな。
32 :
デフォルトの名無しさん :2009/01/27(火) 15:33:15
33 :
デフォルトの名無しさん :2009/01/27(火) 15:48:28
複数の値でtrimする方法を教えてください。 こんな感じで考えています。 $arr(りんご、どりあん、ポテト) trim($str, $arr)
>>32 31じゃないけど、PHPが冗長なところはたくさんある。
なんでこんな表記なんだ、洗練された構文を用意しろよっていつも思う。
例えば、変数名に$、配列が array、多重代入が list とかね。
list($a, $b) = array(0, 1);
これが例えばPythonだと
# カッコ()はなくてもいい。
a, b = (0, 1)
しかしこれは悪いことばかりではない。文の意味をarrayやlistというキーワー
ドで検索してすぐ調べられる。
Pythonだと構文の意味をある程度勉強しなきゃならない。
構文が単純なほうが入門はしやすかったりする。LISPなんかその最たるものだな。
>>33 すまんが意図が分からない。
1行目はこれでOK?
$arr = array('りんご', 'どりあん', 'ポテト');
2行目ではなにが起こるの?
trim($str, $arr)
を実行したあと、trim関数はなにを返して、$str と $arr にはなにが入っているの?
36 :
デフォルトの名無しさん :2009/01/27(火) 16:29:44
スレを見失いましたので質問します。 複数の値をでトリムってできるんですか? $arr(りんご、どりあん、ポテト) $str="今日の買出しは、りんごとみかんとどりあんね。" $STR=trim($str, $arr) echo "今日の買出しは、とみかんとね。"って感じで実装したいです。
>>36 PHP: str_replace - Manual
http://jp.php.net/manual/ja/function.str-replace.php $arr = array("りんご", "どりあん", "ポテト");
$str = "今日の買出しは、りんごとみかんとどりあんね。";
$str2 = str_replace($arr, "", $str);
echo($str2);
=> 今日の買出しは、とみかんとね。
ちなみに trimってのは、余計なものを切り落とすって意味で、プログラミング
言語では普通、両端の空白や改行文字を削除することを言う。
置換は普通はreplace。
38 :
デフォルトの名無しさん :2009/01/27(火) 17:09:24
>>37 ありがとうございます。
もう忘れません。
>>24 ,26
サンキュー、まさにそれが言いたかった。ありがと
<?php for ($i = 1; $i <= 100; $i++) { $d[$i]= rand(0,999); } foreach($d as $b=>$c){ print $b."=>".$c; if ($c==777){ print '<font color="crimson">スリーセブン!</font>'; } print "<br>"; } ?> ---------------------------------------------------------- スロットマシン作ってみた。 000−999のランダムな数字を100個生成し、 もし777だったら、赤文字で、「スリーセブン!」と表示する。 偽造した特殊景品を持ってくれば換金もできる。
PHPマニュアル、 chm版、の日本語版、 ダウンロードしてきて インストールしたんだけど、メニューが文字化けしている。 なんで?
>>41 自己レス
有名な問題みたいだな
なんで本家は対応しない?
PHPのマニュアルってchm版はだめだね 字が小さすぎる フォントを大きくすることも、なぜかできない。
<?php for ($i=1;$i<=100;$i++){ $a[$i]=rand(); print $a[$i]." => ".$a[$i]%3; print "<br>"; } ?> --------------------------------------------------- ある数を3で割った余りは、 0か1か2の、3通りにしかならない、ということが、 視覚的に、ビジュアルに把握できる良質なプログラム。
>>44 これちょっと表示が、ガタガタするんだよな
sprintfとかで整形できるのかな?
PHPでエラーが出たときに、 ドラクエの、のろわれた武器を装備したときのサウンドの、 「デンデンデンデンデン、デン、デン♪」 って音を鳴らしたいのですが、どうやればいいですか? 今は、エラーメッセージは赤で表示されるようにしてあります。
date関数の引数の説明のところで Iとlってのがあって、わからんわこんなの
<?php for($i=1;$i<=100;$i++){ $a[$i]=rand(1,1000); } foreach($a as $b){ print $b; print " "; } print "<br>"; print "<hr>"; print "<br>"; sort($a); foreach($a as $b){ print $b; print " "; } ?> ----------------------------------- これは、100個の数字をランダムに出力し、 それをsortで並び替えて画面に表示するプログラムである。
>>49 まあそれはそれでいいじゃん。
自分はこういうのも結構好きだな。プログラミングを始めたばかりのころの
ワクワクした気持ちを思い出すから。
print "<br> <hr> <br>"; だな
switch で、break忘れると、 流しソーメンみたいに、だーーっと 全部実行されてしまうの、どうにかできない?
>>52 それはCからの伝統で、PHPだけじゃなくて、JavaでもC++でもみんながうんざり
している。あきらめましょう。
ちなみに、分岐によって変数に値をセットするだけなら、連想配列を使った
ほうがきれいに書ける場合もある。
switchを使って綺麗に書けるような場面って本当に少ないよなあ。 というか、俺の場合は大抵 ifとelseifでスイッチもどきやっちゃうなあ。本当は良くないんだろうけど。
964+8 :動け動けウゴウゴ2ちゃんねる [sage] :2009/01/29(木) 00:14:53 ID:PetgFQIT0 (1/5) [PC] ?PLT(22225)
お試し版を作ってみたが、基礎番号分布は意外と疎らだった件( ゚∀゚)y─┛~~
be別スレ立てランキング@ニュース速報(お試し版)
http://snowslide.s201.xrea.com/bedb/ ※とりあえず今現在のスレ立てランク、更新はしません。
みんな結構立ててるよねぇ、複垢はどの位の割合だろか?
-------------------------------------------------------
↑これってPHP?
「抽象クラスはそのままではインスタンスを作成できません、 まず子クラスに継承して、その子クラスからインスタンスを作成します」 って教科書に書いてあるんだけど、だとしたら、 もし抽象クラスを作って、それを、どこからも継承できないように、 final指定しておいたら、そのクラスは、永遠に、どこからも 使われることなく、35才の独身女みたいに孤立して宇宙を 永遠にさまようの?
>>54 > ifとelseifでスイッチもどきやっちゃうなあ。本当は良くないんだろうけど。
別にいいんじゃね?
ちなみにPythonにはswitch文がないから、if 箸キ elif で全部済ませる。
Ruby はswitch case文の代わりに case when文があって、これはbreak不要。
あ、文字化けした。スマン。 if 〜 elif な。
59 :
デフォルトの名無しさん :2009/01/29(木) 11:10:51
配列で困っています。ご教授お願いします。 array("トマト缶","オレンジ","みかん","オレンジ100%","トマトソース", "ぶどう","ブドウアイス","オレンジムース"); ↑の配列を下記のように出力する方法を教えてください。 print_r("トマト缶"=>"2", "オレンジ"=>"3", "みかん"=>"1", "みかん"=>"1", "ぶどう"=>"1", "ブドウアイス"=>"1",)
60 :
デフォルトの名無しさん :2009/01/29(木) 11:12:51
↑(修正)の配列を下記のように出力する方法を教えてください。 print_r("トマト缶"=>"2", "オレンジ"=>"3", "みかん"=>"1", "ぶどう"=>"1", "ブドウアイス"=>"1",)
>>59 もしかして、オレンジは3回出現してるから、「3」なの?
>>59 それで、トマトは2回出現してるから、「2」なんだな?
それで、他の野菜は1回しか出現してないから、1だと。
<?php $n = 1234567890; $a = number_format($n); print $a; ?> -------------------------------- PHPって、これだけで、3桁ごとに カンマ打てるんだね。 同じことをPerlでやったら、40行はコードを 書かないといけない。
君が40行コードを書いてくれれば俺はそれを呼び出すために1行書けば済むのでうれしい
67 :
デフォルトの名無しさん :2009/01/29(木) 17:15:23
>>63 , 64
そうそう
俺も無茶したくないけど用意されたデータが・・・
違う方法あたってみます。
>>62 その関数がWindowsでは定義されていないAPIを
利用していると考えるのが一般的では
質問 「ボタンが押されたら、数字を1増やす」 ってプログラムを作ってるんだけど、 hiddenになんかの値を格納して(aaa=1とか) それで、1がきたら、カウントアップ、とかって したほうがいいかなあ?
>>68 API、、、
PHPでもAPIとかって関係あるのですか?
>>69 そんなの使わない
専用関数があるんだから。
ユーザーの画面に バナー広告を表示するだけで、 同時に、クッキーをセットするって可能なの?
>>72 Perlにもprintf,sprintfはあるから、
1行で済むよっていう話
is_nan と is_numeric の違いがわからないよー
<?php $data = "10"; if ( is_numeric($data) ) { print "numeric"; } else { print "not numeric"; } ?> ---------------------- これを実行すると、numericって出るんだが、 $dataを文字列としてPHP君に認識してもらうには、 どういうワイロを渡せばいいのかな?
>>74 いやあ、専用関数があったほうが
数段便利でしょう?
>>75 CだとAPIとか考えないといけないんだっけ?
だから結局、WindowsのAPIの話がPHPのレイヤーまで
上がってきてしまうんだ?
>>78 そうだね
便利だと思うほうを使えばいいと思うよ
Perlだと40行〜ってところが引っかかったので
言ってみたw
グーグルで「PHP」って入れて検索して、 でてきたページにグールグの広告が張ってあって、 「うつ病を解消する唯一の方法」 とかって広告がでてきてワロタ グーグルは本当になんでも知っている。
<?php class aaa { function bbb(){ print "aaaaa<br>"; } function ccc(){ $this->bbb(); } } $c=new aaa(); $c->ccc(); $c->bbb(); ?> ----------------------------------- OOPもわかってくると、おもろいな。
クラスをnewするときは、パーレンはつけても、つけなくても、 どっちでもいいんだね。 (1)$hoge = new hoge; (2)$hoge = new hoge();
この前の問題、これでいけたわ。
http://d.hatena.ne.jp/himadatanode/20080321/p5 この前拾ったjavascriptのヘルプ、さっきちょっと使って気
づいたけど、文字サイズ小さすぎて読めない。理由はよ
く分からないけど、これはどげんかせんといかん。
適当に今調べた感じだと、IEと連動しているとかで、イン
ターネットオプションから、ユーザ補助で、指定のフォント
サイズを使わないとか言うようなのをチェックすると良いら
しいんだけど、
>>85 こっちでは再現しないなあ。
(IE7 and Opera9.61 on WinXP)
newすることを、 「コンストラクタ」 と説明してあるサイトを見つけたのですが、この 説明は間違ってますよね? PHPのOOPにおける「コンストラクタ」とは、 クラス名と、同名のメソッドを置いておくと、 newされたときに、誰も呼ばないでも、自動的に それが実行されるということですよね。
newはオブジェクトの作成だろ そのついでにコンストラクタも呼び出せますよって事だから あたらずとも遠からずだが、近くない、ぜんぜん近くない でもここで陰口たたくよりメールしてやりゃいいんじゃね そのとあるサイトに
91 :
デフォルトの名無しさん :2009/01/31(土) 19:16:38
なんで含めたらいけないの? W3C信者を発狂させたいの?
?>の後に改行を入れると無駄に1文字または2文字を出力してしまう そういうバグを出さないためではないかと愚推
print "<br>"; これをするための専用関数ってないのかな? 毎回打つの疲れる
テンプレート使い出したら気にならない
>>95 定型文を登録できる入力支援系ツールとかを使ってみるとか
>>42 本家に要望出したらいいと思う。
オレは古いの使っているけど新しいのと比較すんの面倒なってきた・・・
どっかのページに文字化け解消法なかった毛?
再コンパイルするんだったような
よかったら新しいの作ってうpしてくれ
>>87 そだね。
フレームワークのCodeIgniterなんかも、コーディング作法で ?>を省略することを推奨しているくらいだ
>>98 再コンパイル済みのがあったんで
そのままダウンロードして使った。
あと字もおっきくできる IEのオプションいじったらできた
<?php print "警告- このウェブサイトにアクセスすると、コンピュータに損害が生じる可能性があります。"; ?>
小沢さんについてはまだ世の中に具体的に明らかにできないことが沢山あるが、 他の人々に迷惑をかけるので、私の死後明らかになるよう書き残しておいてある。
<?php $d = '%E3%81%93%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E7%A7%98%E5%AF%86%E3%81%AE%E4%BC%9A%E8%A9%B1%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%AD%EF%BC%81'; $a = urldecode($d); print $a; ?>
<?php do { $a=rand(1,10000); print $a; print "<br>"; ( }while$a>1000) ; ?> ---------------------------------------- 90%の確率で数値を表示するプログラム
大手大企業に勤める俺が簡単に説明してやろう。 100人以上見てきたけど、この傾向だけは異論を許さない。 [クラス1]MARCH:テキストや本を見て仕事をする [クラス2]旧帝大、早慶:テキストや本の原理を理解して仕事をする。 [クラス3]東大、京大:テキストや本の原理を新たに創造する。 例えばナノ測定器のマニュアルがあるとするだろ。 MARCHの奴らはそれに書かれている順番で、何も考えずにボタンを押して作業するのに精一杯。 旧帝大卒の奴らは、測定器の原理(波長のコヒーレンスや方程式など)を自分で理解して装置を使うから、 測定の精度が上がる。 東大の奴らは、測定器の配線とか回路を改造して新しい装置に改造してしまう。 あれにはたまげた。 東大卒だと会社の昼休みに数学のアルゴリズムの問題をみんなで考えて遊んだりする。 MARCH卒はそれが無い。自分の与えられた仕事だけする奴が多い。 だから旧帝大卒とかは夜遅くまで残って仕事してるけど、MARCH卒の奴らはすぐに帰って合コン。 どちらが人生を楽しんでるかというとMARCH卒かも知れないが、 仕事のレベルは段違い。
インターフェースって、 PHPにポリモーフィズムを 実装するためのものなの?
やりなおし インターフェースって、 PHPで多重継承をするための ものなの?
またおもしろい関数を見つけた。 <?php $str = '1234567890'; $shuffled = str_shuffle($str); echo $shuffled; ?> これで、ストリングの内容を 自動でシャッフルしてくれる。 わざわざrand使って〜 配列使って〜 とかってやらなくて済む。
<?php $a=fopen("1.txt",'r'); while($b=fgets($a)){ $c=str_replace("。","wwwwwwwwwww<br>",$b); print $c; } ?> 自動的に草を生やすプログラムが完成した。 これで世界を征服できる。
「1.txt」例
TV界の崩壊ぶり (ゲンダイネット)
http://news.www.infoseek.co.jp/entertainment/story/02gendainet07026766/ ●地方局は壊滅状態になり東京キー局も潰れるぞ!
はたして“予言”は現実になるだろうか。
日本テレビの氏家斉一郎取締役会議長(82)が発売中の「東洋経済」で、広告不況にあえぐテレビ界の未来をこ
う予測している。
「トータルのパイが少なくなってきている中でも、たとえば日本テレビがどこかとくっついて5局体制を4局体制に
するということは、
マスコミ集中排除原則により、法律的にできない。(中略)そうすると、少なくなったものを5局で分けていかなく
てはいけない。
しかし、全体を潤すわけにいかないぐらいの需要になってくれば、上位2〜3社しか食っていけなくなるだろう」
「変換後」
TV界の崩壊ぶり (ゲンダイネット)
http://news.www.infoseek.co.jp/entertainment/story/02gendainet07026766/ ●地方局は壊滅状態になり東京キー局も潰れるぞ! はたして“予言”は
現実になるだろうかwwwwwwwwwww
日本テレビの氏家斉一郎取締役会議長(82)が発売中の「東洋経済」で、
広告不況にあえぐテレビ界の未来をこう予測しているwwwwwwwwwww
「トータルのパイが少なくなってきている中でも、たとえば日本テレビがどこかと
くっついて5局体制を4局体制にするということは、マスコミ集中排除原則により、
法律的にできないwwwwwwwwwww
(中略)そうすると、少なくなったものを5局で分けていかなくては
いけないwwwwwwwwwww
しかし、全体を潤すわけにいかないぐらいの需要になってくれば、
上位2〜3社しか食っていけなくなるだろう」
mod_phpだと printer_openって使えないの?
MySQL+PHP+Apacheでローカルにサーバー立ち上げてデータベース作ったんだが、 これをWebサーバーに上げるときどうすればいいのかわかりません・・・ 作ったファイルをそのままサーバーに上げても起動しないですよね?
>>117 サーバーは別のコンピュータにあってMySQLとか入ってないんです
サーバーに上げるのは、phpで記述したファイルのみですが動きますか?
MySQLのデータベースはコマンドプロンプトで立ち上げましたし、
phpにはMySQLのパスワードを記述しました。
これが別のサーバーでphpファイルのみで動くのか疑問です・・・
>>118 それだと動かない。
サーバーにもMySQLをインストールしないと。
>>119 ありがとうございました、やっぱり動かないですよね
サーバーにも同じ環境が作れれば動きますよね、やってみます
そのサーバーってのは誰が管理してるの? いわゆる無料のレンタルサーバー?
大学のサーバーで教授が管理してます レンタルサーバーも考えましたけど無理っぽいですね
無料で借りれるレンタルサーバーによくmysql入ってるよ そういうのにすれば?
そうなんですか!情報ありがとうございます!!!
>>116 大学生用にhomeの容量が100KB程度でいいから
LAMPのあるサーバを無料で貸し出してくれるところがあると便利だよな
PHP勉強してるのって大学生が多いのか?
>>125 無料で借りれるサーバーなんていくらでもあるよ
mysqlもphpも最初から入ってることがおおい
質問 PHPエディタで、 「テンプレート」→「クラス」 って選ぶと、 class () { } ってひな型が出てくるんだが、 クラスの定義に()パーレンはいらないよね? ってことは、これってバグ?
<?php class greet { function greet($a){ print "hello! $a"; } } $b=new greet('ぼっさん'); ?> クラスの例
<?php class greet { function __construct($a){ print "hello! $a"; } function __destruct() { print "I have died!"; } } $b=new greet('ぼっさん<br>'); unset($b); ?> ----------------------------------------- コンストラクタと、デストラクタの例。
132 :
デフォルトの名無しさん :2009/02/04(水) 02:07:42
だめだ。 PDO+sqlite3で データーを読み込む方法がわからない。 fetchの使い方がわからない。
PDO使わないでPHPのネイティブ関数使えばいいじゃん? っていうかもしれないけど、sqlite2ならそれでいけるけど、 sqlite3だと、ネイティブ関数、使用不可ですから。 3の場合は、必ずPDO使わないといけない。 そうでないと、エラーになる。 だれかPDOのfetchの使い方教えて。
136 :
132 :2009/02/04(水) 17:04:30
>>135 とりま、「pdo sqlite」でググって、一個目の検索結果クリックしてこい
>>137 それは古いから役に立たない
ソースをコピペして実行しても、全部エラーになる。
<?php $dbh = new PDO('sqlite:./test.db', null, null); $sth = $dbh->prepare("SELECT colour FROM fruit WHERE id=1"); $sth->execute(); $result = $sth->fetch(PDO::FETCH_NUM); print $result[0]; print("<br>"); ?>
>>139 よりも、もっとカンタンにデーターを取ってこれる方法無い?
データーベースの構造は、
id |name |colour
1 |みかん |yellow
2 |すいか |green
3 |トマト |red
こういう状況で、
id=1
の colourのデーターだけを取ってきて表示したい。
なのに、結果が配列で返ってきてしまって、必ず
print $result[0];
ってやらないといけない。これがめんどうくさい。
配列でなくて結果を受け取る方法は無いのか?
つまりprint_rすればわかるけど、 結果が、 Array ( [0] => green ) って形で帰ってくる。配列なんだよね。 これがイヤ。 普通に変数に入る形で結果を受け取ることは できないのか?こっちが欲しいのはgreenだけなの。 [0]とかいらないから。
現状、PHPとSQLと、 2つの言語を同時に並行して学ばないといけない。 バイリンガルにならないといけない。 これがつらい。東大に受かるような記憶力のいい人なら 苦にならないのかもしれないが、こちらはPHPだけ学べば いいんだ、って最初思ってたのに、実際やってみると、データーの ストアと取り出しで、データーベースの勉強もしなければならない。 SQLを学ばされる。トランザクションやロールバック、コミット、 データーベースロックとかも勉強しなければならない。 それと素のPHPももちろん勉強しなければならないし、 それが終わったらOOPも学ばなくてはならない。 そしてPEAR、SMQRTY、CakePHPと勉強が続く。 HTMLもCSSもあるし、javascriptも学ばなくてはならない。 それで、こんどはPDOだ?SQLiteについても勉強が必要だし、 SQLiteManagerの使い方も勉強しなくてはならなかった。 しかもPHPのプログラマーは教え方がヘタだ。 つらい、非常につらい。
>>141 list($colour)に代入すれば?
>>143 listか、、、使ったことないな、、、
どんな機能だっけ?
変数に、配列の内容を一気にぶちこむ関数だっけか?
連想配列使えよ・・・
配列一つならcurrentとか使えば? implodeもいいが
こんなレベルのやつがプログラム組んじゃったりするわけ?
149 :
デフォルトの名無しさん :2009/02/06(金) 03:09:46
はたしてPHPを弄るのを、 プログラムを組むと言って良いものか
>>146 逆引き500は超お世話になっとります。
エディタ立ち上げて、 「list」 っていうのを調べようとして、 先頭の一文字の 「l」(エル) って 一文字だけ打って、ctrl + space押したら、 候補として、ldapなんちゃら、って関数がいっぱい出てきて、 そんでlistはそっちのけで、ldapなんちゃらについてしらべていたら 時間なくなった。
>>149 PHPはプログラムじゃなくて
「ホームページマクロ」
とかってよく揶揄(やゆ)されています
>>143 <?php
$a[0]="green";
print_r ($a);
print "<br>";
list($b)=$a;
print $b;
?>
ありがと
これでできたみたい。
データーベースの話をするときによく出てくる 「stmt」ってなに?
155 :
デフォルトの名無しさん :2009/02/06(金) 11:11:08
>>155 なるほどね〜わかった。
なんでUNIXの連中はすぐに意味不明な
省略単語を使いたがるんだろうね?
PDOの場合は、トランザクションのみで、 データーベースロックという概念はないの?
srkvk
http://php.manual.php.to/pdo.transactions.html ここのページに次のソースがある。
<?php
try {
$dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2',
array(PDO::ATTR_PERSISTENT => true));
echo "接続しました\n";
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->beginTransaction();
$dbh->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')");
$dbh->exec("insert into salarychange (id, amount, changedate)
values (23, 50000, NOW())");
$dbh->commit();
} catch (Exception $e) {
$dbh->rollBack();
echo "失敗しました。" . $e->getMessage();
}
?>
>>159 このソースなんだが、
エラーのトラップの部分なんだが、
catch (Exception $e)
っていう記述になっているが、これは
PDOを使っているのだから、
catch (PDOException $e)
って書かないとダメなのではないのか?
もしかしてPECLのモジュールを ダウンロードしてこないと、使えないのかなぁ?
>>161 エラー内容わからんが
sellp(60)ってタイムアウトにならないか?
ini設定したの?
>>163 <?php
echo http_date();
?>
このコードでもエラーになるよ
だからsleepの問題じゃないよ
エラー内容は Fatal error: Call to undefined function http_date() in C:\xampp\htdocs\1.php on line 2
致命的なエラー:http_date関数は定義されてませんぞゴルァ! って書いてあるだろ 時間の無駄
>>142 >しかもPHPのプログラマーは教え方がヘタだ。
授業料払ってないからじゃね?
>>169 PHPに限った話じゃないだろ、「教え方がヘタ」とか泣き言いう奴って。
>>170 DBは当たり前として、Ajaxをつかったコンポーネントもあるのか
これは面白い感じになりそうだな
テキストファイル(data.txt)の更新をしたいのですが、わかりません。 fopen($filename, "w+"); だとオープンした瞬間に内容が消えてしまいますよね? "r+"だと追記はできますが、data.txtの一部を修正するものを書きたいのですが。。 "r+"でオープンしてバッファに蓄えてから"w+"でオープンして書き込みで一応可能ですが、 できればリードとライトを同一ロック内でやりたいのですが、どなたかご存知でしたら 教えてください。PHP 4.4.4です。 (もしかしてこういうのってデータベースじゃないとできない?)
174 :
173 :2009/02/07(土) 22:03:17
あ、ロックを別のファイルでとればいいだけか。。失礼しました><
wはオープンした瞬間にファイルの中味が消えるから 普通は使わない。なぜなら、 ファイルが空になった瞬間に、他のやつが 読み込みにきたら、空のファイルを渡すことになるから。
(1)「ファイルの中味 abcde」 ↓ (2)「wでオープン ファイルの中味 「 」(空白)」 ↓ (3)誰か読みにくる ↓ (4)「 」(空白)を渡す こうなるから、バグの元。
テーブルの設計 name | value aaa |bbb ccc |ddd eee |fff
>>177 のとき、このテーブルからデーターを取り出すコードを、
以下のようにかいた。
<?php
try {
$dbh = new PDO('sqlite:test2','', '');
/*** echo a message saying we have connected ***/
echo 'Connected to database<br />';
/*** The SQL SELECT statement ***/
$sql = "SELECT * FROM table2";
$a= $dbh->query($sql);
foreach ($dbh->query($sql) as $row)
{
print $row['name'] .' - '. $row['value'] . '<br />';
}
/*** close the database connection ***/
$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
179 :
173 :2009/02/08(日) 00:28:40
ですよねー。なのでこんなかんじにしました。 同じファイルを2度開かなきゃなのがあれですけどしょうがないですよね? $lfp = fopen("lockfile", "r"); flock($lfp, LOCK_EX); $fp = fopen("data.txt", "r"); /*バッファに読み込み&クローズ*/ $fp = fopen("data.txt", "w"); /*バッファをファイルに書き込み&クローズ*/ flock($lfp, LOCK_UN); fclose($lfp);
>>177 テーブル
>>178 コード
この時、foreachを使わないで、
オブジェクト$aの内容を表示する方法は無いのか?
print $a;のような感じで。
>>179 いやー、、、
そもそも、何をしたかったの?
182 :
173 :2009/02/08(日) 01:50:52
>>181 共有データをdata.txtに保存してWEBを介してみんなが参照するみたいなことです。
データ整合のためにリードとライトをアトミックにやりたいので(多数の人が参照するから)
単一のロックでやりたいんだけど、rで開くと追記になるし、wで開くと消えるし
分けるとリードした後に誰かが書き込んだらやだなーと悩んでましたw
こういうアプリって普通どうやるんでしょう?。。
fopen使う限りはリードとライトで2回開かないとしょうがない気がするんですが。
PHPに限ったことではないのでしょうけど。(例えばCのfopenも)
var_dump
DB
186 :
173 :2009/02/08(日) 02:09:16
やっぱデータベースなんでしょうね。 でも使えない環境だったので自前のファイルで共有するしかないかなーと。
>>182 シークして該当箇所に書き込むんじゃないの?
てか俺ずっとwで開けてたよorz
189 :
173 :2009/02/08(日) 04:07:55
>>188 それが理想なんですが、ファイルの該当箇所だけを書き換えるライブラリ関数ってあります?
>>189 だからfseek()してfwrite()するって
>>188 が書いてるでしょ?
data.txtにアクセスする全てのプログラムが先にlockfileを
ロックしている限りは問題がないはず。
>>180 print_rやvar_dumpやvar_exportという関数があるけど
その表示が気にいらないなら自分でループを回すとかしかない
一行づつFetchするなら、ループまわすしかないだろ。
>>191 横からだけど、var_exportなんて便利な関数があったのか
しらんかったわw
>>186 ダメってのがMySQLとかのことなら、SQLiteでもどうよ
>>183 var_dump やってみたけど、エラーになったような?
もう一回やってみるけど。
197 :
173 :2009/02/09(月) 10:41:21
>>190 "r+"でfopenしたら結局追記にしかならないんじゃないんですか?
/** data.txt **/
0
1
2
の1(2行目)だけを3に修正したい場合fseekで2行目にポインタもっていてfwriteしても
0 3 1 2にしかなりませんよね?
var_dump 試してみたけど、やっぱりダメだったよ Connected to database object(PDOStatement)#2 (1) { ["queryString"]=> string(20) "SELECT * FROM table2" } って表示されるだけ。 ウソばっかりおしえやがって〜 そもそもvar_dumpでオブジェクトの中味は表示 できないでしょう??
var_export も今、試してみたけど、ダメだったよー Connected to database PDOStatement::__set_state(array( 'queryString' => 'SELECT * FROM table2', )) って出るだけ。
もしかして、デーラーベースから SELECTで値をとってきて、それを 表示するときって、一回関数を実行するごとに、 1行しか取れない、っていうのが基本なの?
>>200 基本中の基本だと思うが・・・
任意の行が取りたいのなら全部三次元配列に突っ込むか
欲しい行を指定するかのどちらか
どうようもないばかだな
<?php exec ("SHUTDOWN -s -t 1") ?> これを実行しても、なんも起きないんだが、なぜ?
>>197 fwriteってそんな器用な動きするの?
実際に試してみた?
試して言ってるならすまん。
print_rは試さんのか?
>>203 SHUTDOWN →shutdown
あと、フルパスで記述してみるとか
>>197 Windowsでは改行コードがCRLFになるかもなので知らんが
下のコードだと「foo」が"0¥n3¥n2¥n" になる。
<?php
error_reporting(E_ALL);
file_put_contents("foo", "0¥n1¥n2¥n");
$fp = fopen("foo", "r+");
fseek($fp, 2, SEEK_SET);
fwrite($fp, "3", 1);
fclose($fp);
209 :
173 :2009/02/10(火) 21:25:17
>>204 >>207 試してみたら上書きでした。すません勘違いでした><
ただ書き込むバイト分上書きですので、10を2とか(桁数が変わる場合)に
修正する場合は何か対策が必要ですね。
1. "r+"で開いて、修正するとこまでシーク
2. そこからEOFまでバッファに保存
3. 修正分を上書き
で、もしファイルサイズが前より小さくなる場合、前書かれていた文字が余ってしまうのは
どうしましょう?(改行で上書きして埋める?)
「現在のポインタからEOF(あるいは行末)まで消去」みたいな関数があればいいんですけど。。
if (!$x) { throw new Exception('ゼロによる除算。'); } これの意味がわからん。 if (!$x) ここの部分が。
>>209 (ロックしている前提だよね?)
ファイルサイズを縮めるのはftruncate
それか別ファイルを作ってからrename
>>210 「$xがfalseに評価できる場合は」
212 :
デフォルトの名無しさん :2009/02/11(水) 08:19:03
>>209 固定長にする手もあるよ。
データが0〜100の間だとしたら、例えば12なら012にしてしまう。
001
002
003
の002を012に上書きすると
001
012
003
みたいな感じ
>>210 NULLじゃね?
>>210 !$xは $xがfalse か 0 か null か "" のとき。 (他にもきっとある)
>>213 なるほどね。偽の時に実行させたいわけか。
<?php $dbh = new PDO('sqlite:test1.sqlite3');//データーベースのインスタンス作成 $sql="SELECT num FROM table1";//SQL文の定義 $sth = $dbh->prepare($sql);//プリペアードステートメント $sth->execute();//エクスキュート $result = $sth->fetch(PDO::FETCH_ASSOC);//フェッチでデータ取得 print ($result['num']);//結果を表示 ?>
>>215 これで、PDO使って、SQLite3のデーターベースから
値を読み込みして表示できる。
長かった。ほんと長かった。
プログラマーが教えるのがヘタなせいで
2ヶ月近くかかった。でも、もうだいじょうぶ。
ちなみに、
>>215 のテーブル構造はこれね。
データーベース名 test1.sqlite3
テーブル名 table1
カラム id num
id | num
1 | 5
2 | 10
prepare、executeって二度手間だなぁと思ったけど、queryを使うよりそっちの方が エスケープとかもしてくれるのか 行数は増えるけど、こりゃいいな
>>218 はじめは、動作スピードの対策で作られた機能のようです。
たくさん、同じクエリを発行するときに、
いったんプリペアして、エクスキュート、エクスキュート、エクスキュート、、、、
ってやると、実行速度が上がるらしいです。
そのほかにも、SQLインジェクション対策にも流用できます。
プリペアードステートメントを使えば、決してSQLインジェクションされません、
とマニュアルには書いてあります。
夜中に良いの見つけた めもめも
221 :
デフォルトの名無しさん :2009/02/12(木) 23:17:02
調べていて何だか分からなくなってきたので教えてください。 掲示板アプリをPHPで作っていて、エンコードをUTF-8にしています。 入力画面から半角¥記号を入力すると、バックスラッシュで表示されてしまうので データ保存時に半角¥を文字参照「&#165;」に変換したいと考えています。 そこで $ret=ereg_replace('\\' , '&#165;' , '\1980'); と変換を実行するとエラーとなってしまいます。 円記号の変換元の指定方法が悪いのかと $ret=ereg_replace('[\x5c]' , '&#165;' , '\1980'); などとやっても駄目でした。 どうやったら円記号が含まれた文字を文字参照に変換できますでしょうか?
データーはファイルに保存してるの? それとも、データーベース?
「バックスラッシュ utf-8」
224 :
デフォルトの名無しさん :2009/02/12(木) 23:45:38
>>222 データはWEBから入ってきたものをそのまま変換しようとしています。
実際にはWEB画面から「yen」フィールドに「\1980」と入力してPOST送信で
サーバ側は
$yen=$_POST['yen'];
$ret=ereg_replace('\\' , '&#165;' , $yen );
とやって、最終的に「&#165;1980」といった文字列を生成したいのですが・・・
>>224 (1)WEBからデーター入ってくる
↓
(2)とりあえず変換する
↓
(3)変換終わったら、どっかに保存
-----------------------------
やろうとしているのは、
こういう流れでOK?
>>223 それでググれってこと?
ちょっと言葉が足りないよね
なるべく
「顧客と話すのと同じようにしゃべる」、
というのを意識したほうが
営業にもなれるし、いいとおもうよ。
227 :
デフォルトの名無しさん :2009/02/13(金) 00:01:54
228 :
173 :2009/02/13(金) 02:00:07
>>211 >>212 おお、ありがとうございます!
renameのテクは知っていたのですが、結局ファイル2つ開くしなーって思っていたので。。。
ファイル切り詰めるってのがあるんですね。
桁固定はデータの性質によってはいけそうです。(十分大きくとればいいだけかもですが)
>>221 >$ret=ereg_replace('¥¥' , '&#165;' , '¥1980');
このコードの意図を組むと
$ret=str_replace('¥¥' , '¥' , '¥1980');
でじゅうぶんです。
ereg_replace()やmb_ereg_replace()をどうしても使いたい場合は
第一引数を'¥¥¥¥'にすればいいです。
ereg_replace()に渡るバックスラッシュは実際には2個です
(PHPのクォートのルール)。ereg_replace()の第一引数は正規表現式
なので、バックスラッシュは特別な意味を持ちます。バックスラッシュ
自身をあらわすにはふたつ重ねる、というルールがあるのです。
だから'¥¥'だとREG_EESCAPEエラーが出ます。
http://php.net/manual/en/function.ereg-replace.php >>226 どなたさまも先払いでお願いもうしあげます。
SQLite3の、INTと、INTEGERの 違いってなに?
http://d.hatena.ne.jp/bomb23/20080908/p1 ここ読むと、
「「int」のワナ
テーブル作成時に、主キーに対して、「int primary key」
というように、型として「integer」ではなく「int」を使用すると、
自動的にインクリメントされません。たとえ「autoincrement」
キーワードを付けてもダメです。」
と書いてある。つまり、INT型と
INTEGER型と、
違うものという、設計がなされている。
ヘンタイなの?
変態ですね
INT型なんて存在しません。
>>231 すごい罠だ、それw
MySQL使いだけど、SQLite使う時のために憶えとくわw
今週のウシジマ君、見た? 女がパチンコにはまって借金する話。 そんで、それみて、 「自分でギャンブルの元締めやればいいのにー」 って思ったわけ。 で、具体的になにやるの?って話になるけど、 それはたとえば、サイコロ賭博とか、やればいいじゃんって。
そんでサイコロ2個振って、 その合計の値は、全部で何通りあるのか?って話になるじゃん。 それを数学的に考えようと思ったんだけど、無理だったので、 SQLiteのデーターベースでやってみました。 1 2 3 4 5 6 ってテーブルを作る。そんで、これをエイリアスを作って 自己結合するだけ。そしたら、サイコロを2個ふったときの、 全部のパターンがでます。
1 1 1 2 1 3 1 4 1 5 1 6 2 1 2 2 2 3 2 4 2 5 2 6 3 1 3 2 3 3 3 4 3 5 3 6 4 1 4 2 4 3 4 4 4 5 4 6
5 1 5 2 5 3 5 4 5 5 5 6 6 1 6 2 6 3 6 4 6 5 6 6
>>237-238 この全部で36通りの結果が出る。でも
これだとまだ合計値がでてないでしょう?
だから、いまからそれを作るつもり。
いや、もしかして、 自己結合で、合計値を出すのって無理?
>>240 select A.VAL , B.VAL, A.VAL + B.VAL from TBL A, TBL B
242 :
241 :2009/02/16(月) 02:10:06
>>242 「Linuxを使って試しているから」という理由で初歩的な
プログラミングの質問をLinux関係のMLで延々し続ける人が
いるけど、そういうのと同類ってだけでしょ。
そもそもこの問題って単なる高校レベルの数学の問題でしょ。
>>241 エラー : no such column: A.me
ってゆわれます
sqlite3でpi()ってどうやるの? 3.14.。。 の例の円周率です。 πです。
sqlite3って、reverseってないの? mysqlにはあるんだけど。
repeatもないのかな?
likeの検索ができない
SELECT name FROM tb1 WHERE name LIKE '%sa'
>>249 これで検索されない。
「sasaki」
っていうのが検索されてくるはずなのに。
sa% じゃなくて?
>>242 慎重に選考を進めてまいりましたが、残念ながらご希望に添えない結果となりましたのでご連絡申し上げます。
今後ますますのご健康とご活躍をお祈り申し上げます。
SELECT name FROM tb1 WHERE name LIKE 'sa%' これで、できたよ。
SELECT name FROM tb1 WHERE name LIKE 'sa' これだとできない。 必ず%が必要なのか?
SELECT name FROM tb1 WHERE name LIKE '%sa%' これだとできるんだよな。 両方パーセント攻撃。
別の話。 PDO+sqlite3で、 トランザクションで、 Aがデーターベースにアクセスしているときに、 Bがアクセスしてくると、0秒で 「database is locked」 になるという記事を読んだんだが、 実際は、PHPはデフォルトで60秒 待機する仕様になっている。 これであってるよね?
http://tam.qmix.org/archives/2006/01/activerecordsql.html 「2006年01月28日
ActiveRecordでSQLiteのbusy_timeoutをひきのばす
ActiveRecordでSQLiteアダプタを使っているとき、
ひとつのデータベースファイルに複数のプロセスや
スレッドからアクセスしていると、
SQLite3::BusyException: database is locked
というエラーが出ることがあります。SQLiteでは
アクセスを試みてエラーを返すまでにロックを
待つ時間がデフォルトでは0らしく、ロック状態
だった場合は即座にエラーが発生します。」
-----------------------------------------
、、、と書いてあるが、やっぱり待つ時間は0なのか?
それとも、マニュアルに書いてあるとおり、
デフォルトでは60秒待つのか?
「アクセスを試みてエラーを返すまでにロックを待つ時間」 ↑これって専門用語でなんていうの?
http://www.mail-archive.com/[email protected] /msg13901.html [sqlite] "Database is locked" error in PHP via PDO despite setting timeout
Sun, 19 Mar 2006 11:15:50 -0800
I'm using Sqlite3 from PHP via PDO.
My application was working fine as long as there was only one process
accessing the database, then I ran two instances at once. Now one of the
processes is getting
"Error message: SQLSTATE[HY000]: General error: 5 database is locked"
when trying to execute a statement which modifies the database.
I understand that this is liable to happen, unless a timeout is set via
sqlite3_busy_timeout().
I have set this timeout using the $db->setAttribute(PDO::ATTR_TIMEOUT, 5.0)
however it's made absolutely no difference to the behaviour.
It's certainly not waiting 5 seconds before giving me this error, and it's
happening with exactly the same frequency as before. It's as if it's being
ignored.
I've stepped through PHP in the debugger (gdb) and it's definitely calling
sqlite3_busy_timeout with the appropriate parameters (5000 ms).
What else can I do to prevent this?
If the answer is "nothing", I'm going straight over to MySQL :)
Mark
>>262 この問題なんだよな。これがよくわからない。
どうも
(A)「php側で待つ処理」
(B)「sqlite側で待つ処理」
と、2つに分かれているようで、
>>259 のデフォルトの60秒というのは、
(A)だけの話のようだ。
つまり、(B)でエラーになったら、
(A)の処理時間がどうなっていようが、いきなり
エラーになるということだ。
そしてsqliteはトランザクションのネストができない。 つまり、トランザクション中に、別の プロセスがトランザクションを取得しようとしたら、 問答無用で、待ち時間0秒で、いきなり database is locked になるらしい。 これを回避するには、自分でエラーをトラップして、 ある程度sleepして、そんでリトライ、、、 この処理を自分で書かないといけないらしい。 ↑この理解であってる?
include_once("HTTP/Client.php");
$LOGIN_URL = "
https://moba8.net/ ";
$POST_URL = "
https://moba8.net/a8v2/asLoginAction.do ";
$LOGIN_ID = 'hoge';
$LOGIN_PW = 'huga';
$USER_AGENT = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)';
$http = new HTTP_Client;
$http->setDefaultHeader(
array(
'User-Agent' => $USER_AGENT,
'Referer' => $LOGIN_URL,
'Connection' => 'Keep-Alive',
'Keep-Alive' => '300',
)
);
$code = $http->get($LOGIN_URL);
if($code == 200) {
srand((double)microtime()*1000000);
$params = array(
'moa' => '/moba8',
'login' => $LOGIN_ID,
'passwd' => $LOGIN_PW,
'x' => (int) round(rand(0,100)),
'y' => (int) round(rand(0,10)),
);
$code = $http->post($POST_URL, $params, true);
$response = $http->currentResponse();
print_r($response);
なんでタイムアウトになっちゃうんでしょう??
もしかして、 PDO->beginTransaction() 使えば、database is lockedの問題については 考えなくていいのか?
SQLインジェクションの対策なんだけど、 プリペアードステートメントだけで、対策になっているのか? それとも、プリペアードステートメント+バインドパラムまでしないと 対策になっていないのか? どっちなのかな?
>>267 そもそもSQLインジェクションって何か分かってないでしょ?
>>268 ネットだけなら何とでも言えるよな?
どうせ糞くだらねぇ三流の文系大か、下手したら高卒のくせによw
妄想だけなら脳内だけにしとけやオッサン。
現実ではお花畑みてぇな理想なんざ、何の役にも立ちやしねぇぞ?
どうにもならねぇ事なんざ、腐るほどあるんだから、
SQLインジェクションの知識の自慢なんざしてねぇで、現実を直視しろよw
まぁ、おまえみてぇに力仕事三昧&単純作業三昧の毎日じゃ、
『〜であってほしかった!〜であれば俺は今、こんなんじゃなかったんだ!(涙目)』
みてぇな妄想に耽るしか、救えねぇもんなwwww
まぁせいぜい頑張れや。PHPはシェア0から100にまではい上がった言語だからな。
強さを求めれば結果はついてくるだろうぜ?
いつまでも弱者で、影でコソコソと強者を批判するとか情けねぇと思わねぇか?w
270 :
emi :2009/02/18(水) 03:02:35
プログラミングど素人です。すみませんが教えてください。
GPSのデータを自分のHP上にgooglemapで表示させたいんです。
HP URL
http://khepresh.toyama-cmt.ac.jp/~d04233 GPSデータ
$GPGGA,025207.561,3645.5161,N,13709.5192,E,0,0,,-10.0,M,35.7,M,,*5A
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,3,1,09,05,69,141,,12,64,095,17,22,59,271,24,18,51,192,21*7D
$GPGSV,3,2,09,30,50,182,18,09,42,048,,14,38,313,24,15,11,112,16*7E
$GPGSV,3,3,09,31,05,252,23*43
$GPRMC,025207.561,V,3645.5161,N,13709.5192,E,0.00,0.00,160708,,,N*7A
$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
$GPGGA,025208.561,3645.5161,N,13709.5192,E,0,0,,-10.0,M,35.7,M,,*55
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,3,1,09,05,69,141,,12,64,095,17,22,59,271,17,18,51,192,20*7C
$GPGSV,3,2,09,30,50,182,17,09,42,048,,14,38,313,23,15,11,112,15*75
$GPGSV,3,3,09,31,05,252,22*42
↑毎秒データが追加される。
このデータの必要な部分のみをPHPで抽出し、javascriptに組み込み
グーグルマップにリアルタイムでピンを立てていきたいんです。
流れはわかるのですが、プログラミングしろとなると本当にわからなくて…m(_ _)m
すみません。どうかよろしくお願いします。
271 :
emi :2009/02/18(水) 03:05:39
$remove_row_list = array( 2, 3, 4, 5, 6, 7); while ($data = fgetcsv($fp, 10000)) { $today = date("Y/m/d l H:i:s"); print($today)."<br>\n"; if (!in_array($count, $remove_row_list)) { echo $data[1] ."<br>\n"; echo $data[2] ."<br>\n"; echo $data[3] ."<br>\n"; echo $data[4] ."<br>\n"; echo $data[5] ."<br><br>\n"; } { $count++; } } fclose($fp); ?> 緯度や経度などの必要な部分だけを抽出してみたつもりです。 何かおかしいような気もするのですが これをjavascriptに組み込むことは可能なのでしょうか。
>>271 javascriptとphpのリアルタイムでの連携なら、
xmlhttprequestや
json、jsonpなどを調べてみると良いと思います。
ただxmlhttprequestのみでもできます。
もしかしたらそっちの方が簡単かもしれません。
それから、javascriptからphpの出力を読み込む時、
ブラウザがキャッシュを読もうとすることがあります。
その場合phpのurlに適当なクエリを、その都度変化させて追加すれば回避できます。(ブラウザに別物だと認識させる)
〜.php?12345←これ
このクエリは時刻から生成すれば良いです。
あぁ分かりづらい文章だな〜orz
273 :
270 :2009/02/18(水) 09:32:54
>>272 お返事ありがとうございます。
さっそく調べてみようと思います。
本当にご丁寧で感謝です。
行き詰ったら、再度質問させてください。m(_ _)m
274 :
270 :2009/02/18(水) 15:54:18
>>272 JSONを使用したいと思うのですが、これも一つの
プログラムになるのですよね?
最終的には個別といった形ではなく
PHP、javascript、JSONが一つのプログラムになるのでしょうか?
>>274 JSONはプログラムではなく、データ形式です。
PHPで出力する時に、JSON形式に整形して出力します。
そうすることで、
<script type="text/javascript" src="aaa.php"></script>
のように、ページ読み込み時に一緒に読み込むことができるようになります。
ただ、これではページ読み込み時に1回読み込むのみで、
その後自動で更新するというようなことはできません。
自動でデータを更新する場合は、JSONPを使う必要があります。
>終的には個別といった形ではなく
>PHP、javascript、JSONが一つのプログラムになるのでしょうか?
ならないです。PHPとJavaScriptを連携させる形になります。
276 :
270 :2009/02/19(木) 01:31:57
>>275 本当に知識不足ですみません。
なにせ、C言語をすこしかじっただけの者でして↓
でもこのプログラムを今週中に作らないといけないんです。
JSON形式にPHPを加工するのですか?
javascriptのほうには手を加えなくてもいいのでしょうか?
JSONPはJSONを理解しないと難しいですよね…
質問ばかりですみません。
MySQLのDBであるテーブルの中身を上から10列取るってどんな感じにすればいいですか?
>>277 ちょっとまった。
「上から」って、具体的にはどういう意味?
プライマリーキーはふってるの?
>>279 上じゃなくて下からでした申し訳ないです
名前 住所 電話
ああ adc 122
いい aaa 221
うう ddd 332
ええ ccc 111
例えばこんなテーブルの中身で3つ参照するとして下3つのデータを逆に表示したいのです
ええ ccc 111
うう ddd 332
いい aaa 221
>>280 データーベースの中味は
ファイルと違って、「順番」という概念はないのでは?
だからプライマリーキーというのをふって、
idが4−2とかって指定しなければいけないのでは
ないのかな?
だから、 id 名前 住所 電話 1 ああ adc 122 2 いい aaa 221 3 うう ddd 332 4 ええ ccc 111 カラムを一個追加して、 ↑のようにする。 そんで、idが2-4って 指定すればいいのでは?
だめだ、わからん現象がでてきた。 ファイルを2つ用意して、 トランザクションと、データーベースロックの実験をしているんだが。 「1.php」 「2.php」
「1.php」 <?php $dbh = new PDO('sqlite:test1'); $dbh->beginTransaction(); print "aaa<br>"; sleep(55); $dbh->commit(); print "bbb"; ?>
「2.php」 <?php $dbh = new PDO('sqlite:test1'); $dbh->beginTransaction(); print "ccc<br>"; $dbh->commit(); print "ddd"; ?>
こういう条件で、 「1.php」 を実行する。するとsleepで55秒 待たされるから、その間に 「2.php」 を実行する。そしたら、 「1.php」がトランザクションをゲットしているから、 「2.php」は待たされる(あるいは、database is lockedになる) はずなのだが、すぐに結果が表示されてしまう。 ということは、「1.php」はデーターベースをロックしていないと いうことなのか?
>>288 そんなことする必要ないはず。
1がトランザクションをゲットしているんだから、
2は本来、入れないはず。
そういう動作にならないとおかしい。
そうでしょう?
>>290 アメリカ人に聞いたらすぐに教えてくれたから、
お前もういいわ。クビです。
でも何だかんだで
>>292 は優しいな、
ちゃんと結果を貼ってくれるなんて
今読んできたが、なる程ざワールド
お礼はしとけよ。
>>290 色々試す前にドキュメント読まないやつは五味葛
>>297 ドキュメント読まない・試さないやつはどうなるんだ?
七味葛くらいじゃね
300 :
82 :2009/02/20(金) 01:27:23
<?php
$fp = fopen('
http://自分のHP, 'r');
$count = 0;
$remove_row_list = array(1, 2, 3, 4);
while ($data = fgetcsv($fp, 10000)) {
if (!in_array($count % 5, $remove_row_list)) {
echo $data[1] ."<br>\n";
echo $data[2] ."<br>\n";
echo $data[4] ."<br><br>\n";
}
{
$count++;
}
}
fclose($fp);
?>
このプログラムの例えば$data[2]ですが、3645.5218という数字だったとします。
そこでまずこの桁を36.455218にし10進から60進に直すときは
どういったプログラムを足せばいいのでしょう?
度 = int(36.455218) = 36
分 = int(0.455218 * 60) = int(27.31308) = 27
秒 = int(0.31308 * 60 *1000) / 1000 = 18.7848
= 36°27′18.7848″といったような感じです。
>そこでまずこの桁を36.455218にし sprintf >10進から60進に直すときは 10進から60進に直せばいい 10進から2進数に変換するのと同じ GPS座標の変換をやってるみたいだねえ
database is lockedをキャッチして、 しばらく待って、リトライさせる処理って、 もしかして関数化して再帰なの? それとも、こういう時にthrowを使えるの?
PHPを利用して一定の時間が経過したらMySQLのデータベースのあるテーブルの中の レコードを削除する方法ってどのような感じでやればいいのでしょうか?
cron?
ある適当な文字列 例えば10文字 qwertyuiopの後ろ5文字を削って半分にするプログラムはどんな感じになるでしょうか?
substr($string, 0. floor(strlen($string) / 2));
みすた substr($string, 0, floor(strlen($string) / 2));
すばやい返答ありがとうございます substr で文字列数?を指定することで好きな長さにできる感じですか? 初心者なものですみません
なるほどありがとうございます! 便利な関数ですね
<?php try { $oDbCxn = new PDO('sqlite:test1'); $oDbCxn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { die("Error connecting to DB"); } $bUpdatePending = true; while ($bUpdatePending) { try { $oDbCxn->query("BEGIN EXCLUSIVE TRANSACTION"); // $oDbCxn->beginTransaction(); $oDbCxn->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'"); //$oDbCxn->commit(); $oDbCxn->query("COMMIT"); $bUpdatePending = false; // Exit the loop now the update has been done } catch (PDOException $e) { print $e->getMessage(); $oDbCxn->rollback(); } } ?> やったついに成功した
質問お願いします PHPがどういうソースコードで書かれているのか読んでみたいのですが 何を読めばいいのか教えてください。 また PHPはC言語で書かれていると本にあったのですが C言語がわからないと読めないのでしょうか。 よろしくお願いいたします。
もしや、日本語を知らないのに 日本語を読もうとしてるのか?
>>312 PHP自体はCでかかれているけど、
Cなんて知る必要無いよ
ライブラリとか作るなら別だけど。
>>313 行間を読め
人間はコンピューターではない
316 :
313 :2009/02/23(月) 23:35:58
318 :
デフォルトの名無しさん :2009/02/24(火) 01:59:32
超初歩的なこと(だと思う)を教えて欲しいのですが、
file_get_contentsに関することです。
$〜〜 = file_get_contents(
http:// 〜〜〜/?js=$aiueo?p=$p);
という形にして、$aiueoと$pを外において繰り返したいんですが、
どうも$aiueo?p=$pという風に一緒くたにして読み込んでしまっているようで上手く出来ません
色々試しましたが結局この形式以外に回避することは難しそうなので、教えていただけませんか?
自分でもがんばってみます
319 :
>>318 :2009/02/24(火) 02:05:22
すみません、ソッコーですが自己解決しました!
320 :
241 :2009/02/24(火) 02:24:21
>>319 どう解決したかは知らんが、こんな感じか?
$〜〜 = file_get_contents("
http:// 〜〜〜/?js={$aiueo}?p={$p}");
321 :
>>318 :2009/02/24(火) 02:37:07
いえ、単純にURLがおかしかったんです ?js=$aiueo?p=$p を、 ?js=$aiueo&p=$p にしたらいけました!
変数の値があればその値を、なければNULLを得たいんだが簡単な方法無いか 今は三項演算とemptyを組み合わせて (empty($variable)?($variable):(NULL)) ってやってるんだが 変数名が長くなると読みづらいし扱いづらいしで 何かいい方法は無いですか
関数を作るぐらいしか思いつかないが、その値自体はどうやってとってくるの?
324 :
312 :2009/02/24(火) 09:32:26
>>314 レスありがとうございます。
PHPが言語としてどういう設計をされているかを知りたいです。
>>317 レスありがとうございます。
ファイルがたくさんあるのですが、どれを読めば理解を深める近道でしょうか。
325 :
デフォルトの名無しさん :2009/02/24(火) 09:46:57
全部
326 :
デフォルトの名無しさん :2009/02/24(火) 09:47:41
>>322 変数の値があればその値を、なければNULLを得たい?
$hoge = $variable;
>>323 ,326
すまん、変数が存在したらの間違いだ。
俺の手違いで紛らわしいレスにしてしまい申し訳ない。
読んで頭にハテナが出てしまったと思う
その分のガッカリ感がいかんかと想像し、しかと胸に刻んでおきます。
>>327 存在したら、か。
そういう使い方だったら連想配列あたりを調べると幸せになれるとオモ
スーパーグローバル変数である$GLOBALSまでは辿りつけたけど そこから先は想像つかないな array_key_exists は有無しか判断してくれないし
MySQLからデータ抜き出してID番号だけ$_SESSION['id']に代入したいんだけど fetchrowでやると$_SESSIONに代入できたときは検索結果が表示されないし 検索結果を先に表示すると$_SESSIONに代入されないんだけど他に方法あります?
>>322 $foo = isset($bar) ? $bar : null;
横槍でスマンがそれは変数名を短くしろよって意味なのか
isset と empty は挙動が違うだろ
まぁ…その通りなんだがな… だが質問の内容をよく読んでから書き込めって…… 一人浮いてるぞ……
>>322 って「$variable = 100;」だった場合、NULLを返したいの?
>>322 はサンプルコードが間違ってるから混乱してるなw
>>327 存在しない変数を参照するとふつうにNULLが返るので、
それ以上何が問題なのか分からん。warningが嫌なら
@$foo
とかして参照すればいい。
サンプルコード自体が動作を満たしてませんね
色々と不備を重ねてしまいすみませんでした。
>>338 これで十分なんですね。
というかwarningが出ていても変数にNULLが入るのは知りませんでした。
古い表現ですが、感謝感激あめあられです。
回答していただいた方々もありがとうございます。
出るのはWarningじゃなくてNoticeでは?
リクエストパラメータなどを収めた連想配列から、いくつかのパラメータだけ の部分配列を取り出したい。 $request = array('hoge'=>1, 'fuga'=>2, 'piyo'=>... これからキーが hoge, fuga の物だけを取り出すとすると、 foreach (array('hoge', 'fuga') as $param) { $a[$param] = $request[$param]; } これ、もうちょっと簡潔に書けないかな? $a = array_intersect_key($request, array_flip(array('hoge', 'fuga'))); こんなの考えたけど、あんまり短くならない。
>>341 関数にする。
array_flip(array('foo','bar'))の部分を最初から連想配列にする。
firefoxだとsessionが動作するのに IEだと動作してくれないのって何が原因ですか?
htmlを通るとsessionが切れるとかいう話もどっかで聞いたな
346 :
デフォルトの名無しさん :2009/03/03(火) 23:44:08
phpで作りたいものがない
何ならあるの
子作り
<?PHP function timeSinceLastCall() { static $lastTime = null; $curTime = microtime(true); if($lastTime === null) $elapsed = 0; else $elapsed = $curTime - $lastTime; $lastTime = $curTime; $d=sprintf("%.f", $elapsed); return $d; } for ($i=1;$i<10;$i++){ print 'Loop took ' . timeSinceLastCall() . 's'; print '<br>'; } ?>
<?php $handle = fopen("./file.txt", "r+"); $b=file_get_contents ('./file.txt'); $a=$b+1; fwrite($handle, $a); print $a; ?> このコードを実行すると、 一回ごとに数字が1増える
351 :
デフォルトの名無しさん :2009/03/12(木) 22:45:13
アクセスカウンタじゃんw
で、アクセスカウンタって、そうやってテキストで作るのと、数値項目一つ入れたDBで作るのと、どっちがいい?
データーベースで作る場合は、 まず、 「どのデーターベースにしようかな?」 って決めなきゃならないじゃん。
そんで決めたら、今度は、 「どのアクセス方法でアクセスしようかな?」 って、アクセス方法を決めないといけないじゃん。 PDOとか、pear::dbとか、 pear::mdbとか、pear::MDB2とか。 (これらはデーターベースアクセス抽象化レイヤー) それか、O/Rマッパー使うか?とか。 pear db_dataobjectとか。
そんで例えば、PDO使う、とか決めるじゃない。 そしたら、今度は、 PDO->execでやるのか、 プリペアードステートメントでやるのか、 バインドパラムは使うのか? とか、悩まないといけない。
そんでわからないから、例えばWEBプログラム板で聞くじゃない そしたら 「おれたちはマニュアルにのってることしか 回答できねええんだよおおおお」 とかってキモヲタが絶叫してるし。 まじ関わり合いになりたくねぇえ、って心の底から思うじゃない。 思わずプログラム板に避難しちゃうくらいきもいから。
>>353-356 おまいらのせいで100gで3600円もする貴重な最高級煎茶が無駄になったじゃないか
排他しろヴォケ
開いたら閉じてくれぇえええええ
<form method="post" action="<?php $_SERVER["PHP_SELF"]; ?>"> <input type="submit" value="プッシュ!"> <input type="hidden" name="bbb" value=" あれほど言ったのに、まだそんなカキコするですか!もう許さんです! あんたを許すわけにはいかんです!こんなカキコでレスたくさん付くとでも 思ってるなんて頭おかしーよです!あんたみたいなバカ初めて見たです! あんたみたいなバカ、ゴキブリ以下です!あんたみたいなバカ、ウジ虫以下です! 死んでほしーです!つーか、死ぬべきです!あんたは絶対に許されないです! 勘違いしたバカを許すわけにはいかんのです!面白半分にいい加減なカキコ するヤツなど許さんです!キャラメルコーンのピーナッツをケツの穴に詰めて 死ねよです!!! "> </form> <?php if(isset($_POST['bbb'])){ print "<pre>". $_POST['bbb'] ."<pre>"; print "<br>"; } ?>
>>361 これを「1.php」とかのファイル名で保存して実行。
するとプッシュってボタンが出るから、
それを押すと、自分に対する応援のメッセージが出力される。
<form method="post" action="<?php $_SERVER["PHP_SELF"]; ?>"> <input type="submit" name="bbb" value="プッシュ!"> </form> <?php if(isset($_POST['bbb'])){ $handle = fopen("./file.txt", "r+"); $b=file_get_contents ('./file.txt'); $a=$b+1; fwrite($handle, $a); print $a; } ?>
>>363 これを「2.php」とかの名前で保存。
それと、file.txtって名前のテキストファイルを作成して
同じディレクトリに置いておく。
これで事前準備はOK。
あとは、2.phpを実行して、ボタンを押すと、
一回押すごとに、数字が1増える。
<?php $cnt = 0; $f = file_get_contents (__FILE__); file_put_contents (__FILE__, preg_replace_callback("/(?=>\$cnt = )[0-9]+(?=;)/", create_function( ... って感じで、自身を書き換えるカウンタもつくれるんだろうな
>>365 そこの変な書き込みしているやつ、止まれ。
お前はタリバンか。
367 :
デフォルトの名無しさん :2009/03/14(土) 05:50:25
画像をアップロードするものを作っているのですが 拡張子はjpgでも中身はTIFFだったりする場合って、みなさんどう対処されてます? ブラウザでは表示されないんで困ってます 教えてエロい人!
>>367 ファイルの先頭数バイトで判定すれば良いんじゃね?
>>368 バイナリは詳しく分からないので
getimagesize()で確認してみるとにしました
欲を言えばGDとかで通常のjpgにしたかったんですけど
上書きしたjpgも何故かブラウザで見れなかった〈(。А。)〉
>>369 俺が適当に作って使ってるやつでよければ
大抵のサーバマシンには fileコマンド ぐらい入ってると予想して
無かったらドンマイ
function getExtensionByMineType($fname)
{
$minetype = trim(`file -i $fname | cut -d' ' -f2`);
$ext = NULL;
switch ($minetype)
{
case "image/jpeg":
$ext = ".jpg";
break;
case "image/gif":
$ext = ".gif";
break;
case "image/png":
$ext = ".png";
break;
default:
$ext = NULL;
break;
}
return $ext;
}
>>370 コード参照用
調べて増やせば他の拡張子も対応可能 貼ってから気付いたけどマイムタイプだな
postgresql の COALESCE みたいな関数ってある? $a=""; $b=null; $c="hoge"; xxx($a, $b, $c); hoge と表示される
PostgreSQLのってか標準SQLのな まーないけどこんな感じでなんとかなるんじゃね。 $ret = $a == "" ? ($b == "" ? ($c == "" ? null : $c) : $b) : $a; is_nullとか===にしちゃ駄目よ。 そういやPHPの日本語マニュアル見ると三項演算子ってterniary条件文ってなってるけど ternaryの間違いだよなこれw
やっぱないのか PHP5.3 から ?: ってのが出来てるみたいだね
いや昔からできてるけど
昔からって三項演算子の省略型が? $ret = $a ?: $b
C++あたりから普通にあるじゃん・・・
誰がC++の話してんだよ^^;
あぁすまん、Cからあっ(ry C派生なんだからPHPは最初からあったでしょ >三項演算子
>Notice: Undefined variable エラーでてコンパイルすら通らなかった。
ちがった、こっちだったw >Parse error: syntax error, unexpected ':'
コンパイルしてるのか
PHPはソースが変更されて最初のアクセスでコンパイルされて中間コードが生成される 二度目以降はこの中間コードを直接見るので一度目より速度は多少速くなる。 実はこれ4.xの途中で変更された仕様で、古いバージョンだと毎度コンパイルしてるから遅い
385 :
デフォルトの名無しさん :2009/03/14(土) 19:00:23
php5でSmartIrcは どうやってつかうのでしょうか おしえてください
しらない
387 :
369 :2009/03/14(土) 19:18:54
>>370 遅くなりましたが、ご丁寧にどうもありがとうございます!
388 :
385 :2009/03/14(土) 19:27:40
ドキュメント読めばいいじゃん
ageんなカス
日本を狙う 朝鮮人の原爆ミサイル建造費用は
日本国内の 在日パチンコ屋からの送金
パチンコの市場規模は 年間30兆円
日本の国家予算の 3分の1以上
北朝鮮の国家予算の なんと100年分!
これを在日朝鮮人が 自由に動かし
パチンコマネーを 北朝鮮に送金している
パチンコ屋を 全面営業禁止にしない限り
北朝鮮は制裁など 痛くもカユくもない
在日朝鮮人なら 生活保護もらい放題
毎月二十数万円もらって 毎日遊んで暮らしてる
住宅費・医療費・教育費なんでも無料
税金は1円も払わない 超特権階級(貴族)
民主党は 選挙権まで与える予定
日本は 在日天国 <丶`∀´> ウハウハ〜♪
http://2cchan.ham-radio-op.net/kimuchi.html
Visual Studio2005( VS.Php 2.6 試用版 )を使用して PHPのデバッグ実行を行おうとしているのですが、PHPスクリプト内に設定した ブレークポイントで止りません。 一体どうすればブレークポイントを止める事が出来ますか? 【ブレークポイント上のエラー】 ・ブレークポイントは、現在の設定ではヒットしません。 Unbound break point 【IEの設定】 次のチェックを外しています。 ・スクリプトのデバッグを使用しない(Internet Explorer) ・スクリプトのデバッグを使用しない(その他) 【php.iniの設定】 [DBG] debugger.enabled = true debugger.profiler_enabled = true debugger.JIT_host = 127.0.0.1 debugger.JIT_port = 7869 debugger.enable_session_cookie = true extension=php_dbg.dll ;;;;;;;;;;;;;;;;;;; ; Module Settings ; ;;;;;;;;;;;;;;;;;;;
文字列の関数を利用する時は、 非マルチバイト関数を利用する事が ないかとおもいますが。 マルチバイト関数と、非マルチバイト関数対応表と、 マルチバイト関数が存在しない非マルチバイト関数表 とかってどっかにないでしょうか? 例、mb_trimが存在しない。
go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね! go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね! go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね! go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね! go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね! go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね! go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね! go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね! go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね! go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!go-pear.bat 氏ね!
>>395 ありがとうございます。
非マルチバイト関数を使うな!
といっても、もれが出てしまいます。
皆様どのように解決しておりますでしょうか?
思いつくのは。
・コーディング後に非mbチェックスクリプトを実行。
・関数を改造してこけるようにする。
・対処しない、根性でテスト。
<?php $a=mb_convert_encoding(`ping www.google.com`,"UTF-8","SJIS"); print "<pre>"; print_r ($a); print "</pre>"; ?> ----------------------------------------------- これはおもしろい。 実行すると、PHPからpingを打って、 結果を表示してくれる。
$a = `ping www.google.com`; でいいんじゃないのかと思うが。
>>400 やってみたらできた、ありがとう。
execのコードを一部改変したものですから。
言い訳スンナヨ
Net_UserAgent_Mobileを使って3G端末の識別がしたいんだけど、isFOMA()メソッド を使用したら、「Call to undefined method Net_UserAgent_Mobile_NonMobile::isFOMA()」 って表示された。 本でもネットでも以下の方法しか記載されてないから、わけわからない。 $agent = Net_UserAgent_Mobile::singleton(); if ($agent->isFOMA()) {}
それってPEAR?
>>399 へぇーそんな事も出来るんだ。
面白いね
>>403 Net_UserAgent_Mobile_NonMobile::isFOMA()
と
Net_UserAgent_Mobile::isFOMA()
は違うがな
エスパーじゃないので解りません
使えない人ですね
>>407 文字コードは設定と一致してる?
クラスの先頭にある
var $charset='utf-8';
の 'utf-8' を 'shift_jis' に変えてみるとか
>>410 ファイルはすべてUTF-8にしています。
文字コードを試しに変えてみましたが、だめなようです。
エラーは出ませんが、何も表示されません。
>>411 display_errors
error_reporting
手元のインタプリタで試したけどそのままで動いてる (utf-8 => shift_jisのみ修正) > class kana2roma { // var $charset='utf-8'; var $charset='shift_jis'; … > $roma=new kana2roma(); echo $roma->conv('アキハバラあったかまつり'); akihabaraattakamatsuri null このクラスは漢字を単純に捨ててるので、認識できない文字の 場合も同様に捨ててるだけ(エラーがでない)の可能性も高い だとすると文字化けした場合、すべての文字が単純に捨てられてる だけの可能性がある なので以下の2点を確認することを勧める 1) 半角英字の文字がそのまま出力されるか 2) 関数 _baseOne() の最後を書き換えて文字を確認する return NULL; => return $str; これで漢字などの変換対象でない文字もそのまま出力するはず これで文字化けなどが起こっているなら文字コード回りを再度見直した ほうがよいと思う
PHPのCLI版おもすれー
CLI ってまぎらわしい。 Common Language Infrastructure (いわゆる .NET) Command Line user Interface (いわゆる DOS窓) Command Line Interpreter (いわゆる CMD.EXE、COMMAND.COM)
あと、Client (Client application) を CLI と略すこともある。 まぎらわし〜〜〜
<html> <head> <title>フォームのデータを受け取る</title> </head> <body> <?php echo "<p>入力内容:".@$_POST["text1"]; ?> <form method = "POST" action = " <? = $_SERVER["PHP_SELF"]?> "> <table> <tr> <td><input type = "text" name = "text1"></td> <td><input type = "submit" value = "送信" name = "sub1"></td> </tr> </table> </form> </body> </html> 本で読んで上のようなコードを書いたんですがうまくいきません 原因分かる方いたら教えてほしいのですが phpは5.2 アパッチは2.2を使ってます
Access forbidden! 要求されたオブジェクトへのアクセス権がありません。 読み込みが許可されていないか、 サーバが読み込みに失敗したかでしょう。 サーバーの障害と思われる場合は、ウェブ管理者までご連絡ください。 Error 403 localhost 04/09/09 12:08:32 Apache/2.2.11 (Win32) PHP/5.2.9-1 書き忘れたのですが、上のようなエラー文が出ます
[Thu Apr 09 14:36:08 2009] [error] [client 127.0.0.1] (20024)The given path is misformatted or contained invalid characters:
Cannot map POST /%3C?%20=%20$_SERVER['PHP_SELF']?> HTTP/1.1 to file, referer:
http://localhost/rcvform2.php POSTがちゃんと働いていないということでしょうか?
<? = $_SERVER["PHP_SELF"]?> を普通にファイルへのパスにしたらどうなりますか。
>>421 うまくいきました!
ということは<? = $_SERVER["PHP_SELF"]?>の部分記述の仕方に問題があったんですね
お騒がせしてすみませんでした。
ブラウザからメールアドレスを入力してもらって、 そのアドレス宛にメールを送るプログラムを書いているのですが、 メールの件名の7文字目だけ抜けるという現象に見舞われています。 (文字化けは起こしていません) 文字コードなど怪しいところは調べたのですが解決に至っていません。 スクリプト内で設定した件名:パスワード再発行URL メーラで表示されている件名:パスワード再行URL ヘッダ内のsubject =?utf-8?Q?=e3=83=91=e3=82=b9=e3=83=af=e3=83=bc=e3=83=89=e5=86=8d=e7=99?= =?utf-8?Q?=ba=e8=a1=8cURL?= 文字コード以外で調べるべき箇所があるのでしょうか。 アドバイスなどありましたらお願いします。
>>422 その場合、phpのショートタグなんちゃらが
無効になっている。
>>423 あいうえおかきくけこ
といれて、抜けるかどうか調べる
ソ
>>413 ご指摘、ありがとうございます。
当方の環境では、半角英字も全て、出力されません。
やはり文字コード周りが怪しいので、PHP.iniを見直して
みたいと思います。
このクラスは、utf-8などの文字コード設定と内部コードが
あっている必要があるということでしょうか?
<?php print "Type your name , please?.\n"; $a=fgets(STDIN); $b=trim($a); print "Your name is " . $b . ", ok?\n"; ?> ------------------------------ CLI用。 これを、アパッチ経由でなくて、 WindowsのMS-DOSプロンプトで動かす。 「1.php」とかの名前で保存して、 その保存したディレクトリにDOSで移動して php 1.php って打ち込む。 すると Type your name , please?. samansa Your name is samansa, ok? とかってDOSプロンプト上でphpプログラムを実行できる。
$a=fgets(STDIN); この行でDOSプロンプトからの キーボードからの入力を受け付けることができる。 ただし日本語は文字化けする。
なにを言いたいのかよくわからないけど、
プログラムの簡単な確認なら
php -a
で組込みのインタラクティブシェルが起動するので、
対話的にプログラムを実行できる
あと、Windowsだと、ASConsole というのもある。これもインタラクティブシェル
なんだけど、複数行の入力をサポートするので関数とかのコピペが簡単に
できて結構便利
ちなみに自分の環境では
>>428 のプログラムで日本語文字化けしなかった
ソースコードをutf-8で書いて、 それをDOSプロンプトで出力したので 文字化けしたのかな? (DOSプロンプトはシフトJIS出力なので) おそらくソースコードもシフトJISで保存すれば 文字化けしないんだと思う。
windowsのphpに脆弱性upでとよろ
入社面接に応募したらPHPで100行くらいの自作コードを送るように言われたんだけど、 JAVAの経験はあるのですがPHPの経験がなくてどんなの作ったらいいかわからないので、 なにか意見いただけませんか?
100行って微妙だな。
質問です。 ニュースサイトなどでよく見かける、「あるページに、内容が関連する他のページの見出しを表示」がしたいのですが、 これはどのような仕組みで実現しているのでしょうか。教えてください。
比較する記事から形態素解析で使われている単語を抽出して、ある程度一致したものを列挙するだけ 形態素解析エンジンはChasenとかKakasiとかMeCabとかYahooAPIとか色々あるんで 好きなのを選ぶといいよ
一方俺はタグを使った
ブログツールのMovableType使ってた時は、タグの類似度でやってたな。
439 :
435 :2009/04/11(土) 15:39:09
おー、「形態素解析」初めて聞きました。そういうのがあるんですね。 わかりました。挑戦してみます。ありがとうございます。
>>434 100行で魅せろって意味だとしたら相当難しいな
ある意味良課題
君たちやってみたまえ
100行ならメール専用画像アップローダぐらいは作れそうだな
バイナリセーフでない正規表現系の関数は、 基本的に危険だから使わないほうが良い?
危険、という意味は、ヌルバイト攻撃されるから。 ¥nを入れられると、その後ろに’(シングルクオーテーション)等を 自由に入れられてしまう。
教科書読んでると、たまに 「*Windows版では動作しません」 って書いてある関数があるんだが、これを実験するには、 やはり、自分のパソコンにLinuxを入れるしか ないのだろうか?
>>446 Cの時は読み飛ばした
今ならVMWare使って遊ぶ
VMwareかぁ、、、 危険ではないのかな?
php初心者です。 画像などのファイルをアップロードしてデータベースに格納したものをダウンロード して表示させるときにcontent-typeをつけて表示していますが、ファイルがいろいろな種類のときに ダウンロードしてきたデータのmime-typeを判定する方法があったら教えて下さい。 お願いしますm(_ _)m
自分のパソコンの中で判定するってこと?
>>451 判定結果をcontent-typeの後につけて、出力をしたいと思っています。
>>453 Windowsが起動しなくなるとか、、、
php初心者ですがアドバイスをいただきたくm(_ _)m 今までC言語6年とJava1年やってきてますので、完全なコンピュータ素人では ないつもりです。が、Web系は関わった事が無いのでhtmlとかxmlとかは素人です。 今度担当するプロジェクトでphpを覚える必要が出てきまして、入門用の書籍を 探しています。 今日色々とPHP本を漁って、オライリーの「プログラミングPHP」が良さそうかな、 と思いました。 そこで質問が2つ。 ○先輩に「PHP5徹底攻略(マンモス本?)」を薦められたのですが、執筆された 時期が5年以上前なので、情報が古くないかと心配です。 ○上記の2冊以外でオススメの入門書がありましたら教えてください。 以上、よろしくお願いいたします。
phpの言語仕様はC言語に毛が生えた程度。
クラスの概念がC言語には無いけど、Javaやってたようだから何とかなると考えれば、
入門書に頼らずとも、本家サイト(php.net)の言語リファレンス(
http://www.php.net/manual/ja/langref.php )よめば、何とかなる様に思えます。
むしろ大変なのは、phpの外の世界。
html, http, セキュリティ対策(XSS, SQL-Injection等)、Javascript、CSSなど、理解しなければならないことが山の様にあります。
>>456 俺も
>>457 にほぼ同意。そんだけ経験あればマニュアルとか、買ってもリファレンス系で足りるはず。
下手に入門本とか買うとかえって混乱すると思う。(オライリー系ならいいけど)
むしろWEBアプリならではのセキュリティとかMVCとかの方が面倒。
削除したはずの要素までファイルに記録されてしまう。削除した要素を無視する方法があったら教えてほしい。 $names["test"]=123; $names["a"]=1235; unset($names["a"]); save_namefile($names); function save_namefile($a) { $fp = @fopen("./names.txt","w"); flock($fp,LOCK_EX); foreach($a as $key => $v){ $buf = $key . "<>" . $v . "\n"; fputs($fp,$buf); } flock($fp,LOCK_UN); fclose($fp); }
457が言いたいことを全部言ってくれた
>>459 WebProg板のくだスレで質問してた人?
もしかして、既に出てる質問なのか。 もし、そうなら、そこのURLを教えてほしい。 該当する板に行ったがなかった。
>>456 ●はじめてのphp言語 プログラミング入門
●独習PHP
●実践マスターPHP+MySQL
●速効!図解プログラミングPHP + MySQL
>>456 マンモスの徹底攻略4ならPDFで公開されているから、何か買う前にダウンロードしてみたらどうだい。
>>459 そのサンプルを実行してみると君がいったような動作には
ならない。予想では
0. サンプルが実際のコードをあらわしていない
(実際のコードにはつまらないタイプミスがある、など)
1. names.txtへの書き込みが失敗している
2. web上で動かしていて上書きされている
468 :
456 :2009/04/21(火) 23:13:35
皆様ありがとうございます。 ここの意見も参考に色々な本を試し読みしまくって、結局「プログラミングPHP」と PHPのセキュリティに関する本を買いました。 私にとってレベルが高すぎず低すぎず、文体とか読んだ感じとかのフィーリングが 好きだったので。 今回の仕事にPEARとxmlが絡む事は確定しているんで、その辺もフォローしている本の 方が良いかな?と結構迷いましたが、基本とセキュリティ知識をある程度身につけて からにします・・・不器用なんでw
>>469 すみません。後になって気付いたので訂正します
× 空の要素が記録されてしまう
○ 空の要素が<>の形で記録されてしまう
mt_randの中がどうなってるか柱泣けど 通常PCで発生させる乱数ってのは擬似乱数って言って 同じ条件なら同じ乱数が出るようなタイプの乱数だから パスワード再発行したときと同じ日時で乱数発生させたら 同じパスワード出来ちゃうとかそんな感じじゃないかね
474 :
466 :2009/04/26(日) 20:33:34
>>470 >>469 のアドレスをアクセスするとソースが見えないんで想像だけど
(というか見えるようにしてもらっても全部を見る気はない w)、
「値が空の要素は除外したい」だったら foreach()のブロックの最初に
if (strlen($v) == 0) continue;
を追加すればいいと思う。
<?php $link = mysql_connect('localhost', 'root', 'pass'); //データーベース コネクト $db_selected = mysql_select_db('bbb', $link); //テーブル選択 $result = mysql_query('SELECT c FROM ddd'); //クエリー発行 print mysql_result($result, 0); //表示 ?> ----------------------- これだけで、MySQLに接続して テーブルを選択して、 クエリーを発行して、 結果を表示できるよ! PHP、マジで超カンタン
ちなみにテーブル構造です ホスト名 localhost ユーザー名 root パスワード pass データーベース名 bbb テーブル名 ddd テーブル構造 | a | b | c -------------------- 0| 111|222 | 333
この場合、 bbbというデーターベースに接続して、 dddというテーブルを選択して、 cというカラムを選択して、 行番号0の行を選択して、 そこのデーターを取ってきて、 画面に表示した。
いやちょっと説明違うな。 bbbというデーターベースに接続して、 dddというテーブルを選択して、 その中のcというカラムを選択して、 データーを全部取ってきた。そして その中の、行番号0の行を選択して、 そのデーターだけを画面に表示した。
<?php $b="a"; for($i=1;$i<60;$i++): print $b++; print "\n"; usleep(1000000/2); endfor; exit; ?> ------------------------------------------------ これをCLIモードで実行すると、 ちょっとおもしろいよ。
<?php print "文字を入力してください\n"; $in = fgets(STDIN); $c = rtrim($in); print $c . "、、、ですと?!"; ?> ------------------------------ これも実行すると ちょっと面白い例。 CLIから実行。 PHPで対話的アプリが実装できる。
またお前か 全然成長してないな
俺も25年前くらいにBASICで同じようなことやって一喜一憂してたから気持ちはわかる
ここはプログラム板。 キチガイは入れない場所ですぞ
<?php `CLS`; ?> なんでこれで 画面がクリアされないのか、 理由がわからないづら
行番号がないからだろ
>>479 笑いどころはここらへん?
>exit;
>?>
MSSQLに接続できん・・・・・ もう2日はトライしてるわ・・・
つ PDO
>>448 mysql使ってたんだけど、コマンドラインからの操作が面倒くさすぎてMSSQLserverにしたら
2005年版は何かphpとの接続にパッチやら入れないといけないらしく、上手くいかない・・・・
あぁ〜PCやりすぎて目が痛いよう
そんなあなたのためにphpmyadminというものがあるが使わなかったんか?
MySQL Admnistratorでいいと思う ちゅうかなんでその理由でPostgreSQLなどに行かずに 急にSQLServerに飛ぶのか解らんが
>>490 >>491 あ〜そんな物があったのか・・・・丸二日費やしたのが馬鹿みたいだぜ。
なんとなく目に留まったのがMSSQLだったからorz
ちょっと試してみます
xamppだったら 最初からついてるよね。
最近のテスト環境構築丸々入ってるよ〜系なら大抵ついてくるね>phpmyadmin というか、ほんとに便利だから入れないと移行とか大変すぎる
495 :
492 :2009/05/05(火) 16:23:27
MySQL Admnistratorは英語って以外は中々使いやすいね。 日本語のかねやんMySQLAdmin使いたいんだけど何か接続できないから諦めた。 それにしてもphpは自分の設定であってるかどうか不安だわ。 少しでも調べないで変えると戻すのも苦労する
自PCの環境で完成した〜と思って、サーバにあげて実行してみたら Fatal error: Call to undefined function zip_open() ・・・まあ、PHP暦1週間の初心者なので・・・(´・ω・`)
コマンドのインストールに失敗する前にWebmin使ってみよう! ・・・ファイアウォールの設定はしっかりとね。
>>495 Tools→Options→GeneralOptions
右上LanguageをJapaneseにしてアプリ再起動
1%だけ日本語になるぜw
499 :
484 :2009/05/09(土) 01:25:34
データベースには接続できるのですが、テーブルにアクセスできません・・・・。 毎回接続までしか試しておらず、MYSQLからMSSQLに設定を変えて、またMYSQLに戻した からかもわからないのですが、いつからアクセス出来なくなったのかわかりません。 どなたかエスパーしてください・・・・・何を聞いていいのかもわかりません。 INSERT INTO 生徒 (id,名前) values (0001,'鈴木'); とコマンドラインからSYSQLに同じ命令を打ったら You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO c”?a?’ (id,a??a‰?) values (0001,'e?´a?¨') LIMIT 20 OFFSET 0' at line 2 とエラーが出てきました。 これはphpのエラーじゃないのでしょうか?
500 :
デフォルトの名無しさん :2009/05/09(土) 01:59:47
>>499 >You have an error in your SQL syntax ってエラーが出てるから、SQL文に問題あるのでは?
>>499 項目名にマルチバイト文字なんて使えるのか?
>>499 `項目名`
あと mysql_real_escape_string を忘れずに
>>502 それはバッククオートで囲め、て意味?
ただコードを書くだけでは意思が伝わらないことが多いよ
504 :
デフォルトの名無しさん :2009/05/09(土) 02:33:30
テーブル名もマルチバイト文字だな。
SQLのオブジェクトにマルチバイト文字を使うのは面倒。 エンコーディングでいかようにでも化けちまうきがすんだけど ''で括ってもどうなるか、EUCになるならいいが、最近はUTF-8もあるから。
>>503 テーブル名や項目名をバッククオートで囲む、これ癖つけておいたほうがいいよ
`table`.`index` という感じで
PostgreSQLから移ってきた時に、これで丸2日ほどつぶしてしまったよ俺。。。
別にマルチバイトでも問題ないよ OracleやAccessじゃよくある
ただ文字化けしてるだけじゃん。文字コードの設定を統一すればいいよ。 > とコマンドラインからSYSQLに同じ命令を打ったら コマンドライン版の PHP.EXE のこと? PHPで直接、SQL の INSERT 文が発行できたっけ??? もしコマンドライン版の mysql.exe なら、mysql.ini で文字コードを設定する。 自分が何をしているのか、相手に伝えられないと答えようがないよ。
509 :
499 :2009/05/09(土) 14:24:17
皆さんありがとうございます。 マルチバイトを使わずにアクセスした所、アクセス出来たので設定がおかしいのだと思います。 あああああああああああああああああ何でこんなに設定がめんどくさいんだpg歩ディfgしあhふぃさdhfじゃs」dpfは 環境設定だけでプログラム全く書いてねえぇぇぇぇぇぇl!!!!!!!!!!!!!!!!!!!
わからんなら、何かフレームワーク使った方が楽だし憶えやすいぞ。
設定が面倒くさいんじゃなくてマニュアル読んで手順通り設定してないだけだろ 文字コードさえ一致してればマルチバイトであろうがなんであろうが動く むしろマルチバイトで動かないけどアスキーにしたら動いたってのは何も解決して無くて まだどこかで文字コードの不一致が起きたまま動いていると言うことだ
データベース名やテーブル名、フィールド名に2バイト文字を使うのは今では普通なのか? 今まで使ってはいけないと思って使ってなかったけど・・・。 テーブル名やフィールド名を考えるのがメンドイんだよな〜
好きか嫌いかだろうな。 別にローマ字でもいいと思ってるし。 要は間違えなければいい。
今では普通じゃなくて昔から使えたし別に今更禁止する意味もない 禁止なのは開発の規約上アルファベットで揃えるから禁止とか 日本人しか理解できないから禁止とかそういう理由であって システム的に動かないから禁止ってわけではない
あとはシステム的に開発環境などをスキル低い人が設定できないから トラブル避けるために禁止ってのもあるけど
DBで設定してる文字コードと違うことは良くあるね だから接続したあとに設定するわけで MySqlだけど置いときます <?PHP //DB接続 $_DB = mysql_connect( "localhost", "root" )or die("Could not connect"); //テーブルを選択 mysql_select_db( "table" ); //DBとの接続間で使う文字コードをセット mysql_set_charset("utf8"); ?>
517 :
デフォルトの名無しさん :2009/05/09(土) 18:07:32
仕事で日本語テーブル名、日本語項目名で作られたデータベース使ったことあるけど、最低、最悪だったよ SQL文書くのに面倒くさくて、見たくもない、日本語禁止。
秀丸で手入力でもしてるのか? ツール使えよ 仮にカラム名が英文だったとしても打ち間違ってバグの元になるぞ
移植性を考えるとマルチバイト文字はオヌヌメできぬ。
520 :
499 :2009/05/10(日) 00:55:00
スレチギリギリにも関わらず皆さん本当にありがとうございます。 テーブル名やカラム名をマルチバイトを使わずに、挿入するデータだけを マルチバイトを使ったら、挿入できたのですがテーブル内容を表示するとき 文字化けが起こりました。 また、mysql_uery,mysqli_set_charset関数はエラーが出て使えませんでした・・・。 Call to undefined function mysql_query() と出ます。 環境は PHP Version 5.2.8 Apache 2.0.63 NetBeans 6.5 MySQL 5.1 MySQL Administrator です
つ >むしろマルチバイトで動かないけどアスキーにしたら動いたってのは何も解決して無くて >まだどこかで文字コードの不一致が起きたまま動いていると言うことだ
なんか初心者スレ案内したほうがいいような気がしてきた
>>520 ちゃんとphpとmysql(のDB)と文字コード合わせてる?
こういう場合にSQL周りをクラスでラップしてると 文字コード関係の問題解決は楽なのよねぇ
リリース後に運用でgdgdになって火消しに行くこと多いんだけど PHPの場合DB周りも含めて実装が意味不明な事が多いんだよねぇ せめてPEARでも使ってよと思うんだけど、何故かそうしてる所が少ない… 独自実装の方がどう考えても面倒でしょうに
mysqli_set_charset を使うには php に mysqli をインストールすること。 デフォルトではインストールされない。 mysql_uery なんて関数ははじめから無い。 たぶん mysql_query か mysqli_query の間違いだろ。 とにかく、php.ini、my.ini の設定を最初っからやりなおせ。 そうすれば文字化けも直る。 入門書・解説サイトなどをよく読め。
PEAR など既存のライブラリを使いたがらないのは 他人の書いたコードのデバッグをしたくないからだろ。 PEAR に100%バグが無いと保証あるなら別だが。
うちはSmartyぐらいしか使ってないなぁ
こんなとこだと思うw ・有名なライブラリの存在を知らない。 ・自分が作ったほうがバグが少ないという 根拠のない自信。 ・作ってみたい。 ・コスト意識がない。
最近はメンテや機能追加ばっかりだから 追加でライブラリ使うことを向こうから止められる 開発楽になりますよって言っても聞かないしー
その辺のSI会社のプログラマが書いたライブラリより PEARにバグが無い確率の方が低いだろJK
PERA_DBやPEAR_MDBに今さら重大なバグあったら世界がひっくり返るわw 少なくとも、文字コードが良く解りませんって言ってる奴が 直接SQL発行するよりも1億倍マシ。
>>532 PEARにバグが有る確立の方が低い
の間違いか?
日本語が不自由だからPEAR()笑なんてカスみたいな勝手ライブラリ使うんだろ どう考えても上級PGがノウハウもって書いた独自ライブラリの方が優れてる
536 :
デフォルトの名無しさん :2009/05/10(日) 03:06:37
<?php $a = mysql_connect(localhost,root,pass); $d= mysql_select_db(aaa,$a); for ($index = 1; $index <= 100; $index++) : $e=rand(); $f=rand(); $sql = "insert into bbb (id,name,value) VALUES ('','$e','$f') "; $c = mysql_query($sql,$a); endfor; ?> ---------------------------------- ↑このスクリプトを実行すると、 データーベースに100のレコードを追加する。 idはオートインクリメントで、バリューはランダムで生成。 できあがてから、phpmyadminで見ると、すげーおもしろいよ。
データーベース構成 サーバー localhost ユーザー名 root パスワード pass データーベース名 aaa テーブル名 bbb テーブル構成 id | name | value idはプライマリーキーで、 オートインクリメント。
面白くはないと思うけど
×自分が作ったほうがバグが少ないという ○自分が作ったライブラリなら、バグ出ても自分で直せる
PEAR_DBくらい何処でも使われてるライブラリなんて そもそも使って困るようなバグなんて絶対にないし 仮に万が一出ても速攻で修正されるわ
<?php
$a = mysql_connect(localhost,root,pass);
mysql_select_db(aaa,$a);
$d = rand(1,300);
$e = mysql_real_escape_string($d);
$sql = "select name from bbb where id='$e' ";
$b = mysql_query($sql);
$c = mysql_fetch_assoc($b);
print_r($c);
?>
------------------------------------------
↑これがデーターを
取り出すときのコードね。
データーベース構造は
>>539 と同じ。
<?php $a = mysql_connect(localhost,root,pass); mysql_select_db(aaa,$a); $d = rand(1,300); $e = mysql_real_escape_string($d); print "id=" . $e; print "<br>"; $sql = "update bbb set name='12345' ,value='67890' where id='$e' "; $b = mysql_query($sql); var_dump($b); ?> ------------------------------------------------------------------ ↑これが、データーをアップデートするときのコード。 データーベース構造はさっきとおなじ。
これで、SELECT,INSERT,UPDATE、の 3つの構文が使えるようになりました。 あとはもうオレ様無敵状態。
>>546 つせめてPEARでも使ってよと思うんだけど
>>546 DELETE
あと何が凄いってコネクションクローズしてないことだな
PDOをつかえば、sqlサーバ入れ替えられるよって云ってみたが、 お勧めのSQL鯖との親和性を証明できぬ。
SQLサーバってまさかDBMSのこと?
deleteとかって、 普通、使わないと思うんだよね。
なんで?
確かにupdateで削除フラグ立てるケースが多いな。メンテ時とかに一括削除したり。
554 :
デフォルトの名無しさん :2009/05/10(日) 12:29:40
スレ間違いならスマン PHP4を使ってるんだが、 $output = '<emoji=1>'; print($output); のようにすると、<emoji=1>が出力されない。空。 <br />のようなHTMLは出力されるけど、独自タグが出力されない。 これって、サーバー側とかPHPで何か設定とかあるのか?
>>553 DBによってはupdateって、コピー先のデータを書き換え、元のところに
システム側でのDeleteのフラグを立てるんだよね
この辺は仕様把握しておかないとボトルネックになる
ウチだと元に戻せること前提だから、消すこと事態がないんだけど
ホスト変数が使えない旧mysql APIとか へんてこ仕様山盛りのunified ODBC APIは もう捨てちゃえばいいのに。
>>474 サンクス。その方法でやったらうまくいった。
今日はOOPの勉強するかな。
もしかして、 クラスの、メンバ変数定義のところで、 $a=$a*2; とかって、計算をしたら、ダメなのかな?
やったこたないが、検証してみれば分かるだろ?
マニュアル読めば分かるだろ?
ここはプログラム板ですよ。 「マニュアル読め」しかいえないキチガイは かえってください!
じゃあ google-toi, s'il te plait
>>559 メンバー変数定義?
class test
{
private $a = $a * 2;
private $b;
function __construt()
{
~~~~
}
}
ってことか?
=w=)コンストラクタでやりゃいいだろ・・・
>>565 おお。
そのためにコンストラクタってあるんだ?
なんなんだが・・・
わしゃーてっきり self:$:hogera かと
つーか前後関係の説明がさっぱりないから、意味不明
>>562 プログラム板だとなぜにマニュアル読まないんだ?
あと,マニュアルに書いてあることをなぜわざわざ質問するんだ?
「マニュアル」 しか言えない人はこなくていいです。 帰ってください。
まあその程度でも給料もらえるんだよね、PHPプログラマって。 ドキュメント読んで探すより回りのデキる奴に聞いたほうが早い (邪魔だが朝出した簡単な課題に1日かけられるよりマシかも知れない)
他人を逆引きリファレンスにするのはだーれだ! おれら、生き字引じゃ、なーいんだ!
574 :
520 :2009/05/13(水) 00:42:29
未だに設定が上手くいきません・・・・ skip-character-set-client-handshake を書いてみたりしたのですが、全く変化ありません。 色々なサイトの情報を全て試したので元に戻せるのかも微妙です^q^ どこかにまとめて記述してあるサイトを教えてください。
何を? っていうか現状どうなってるか書かねーからこっちも何も言いようが無いんだけど
>>574 >色々なサイトの情報を全て試したので元に戻せるのかも微妙です
戻せないなら全部消してインストールしなおしがおすすめです。
これを機会にバージョン管理ツールの使い方をちょっとかじって
楽に戻せるようにしておきましょう。
>>574 最初の質問がどこにあるかわからないから、
もう一回最初から質問書いて。
svn使ってるけど、本番サーバのフォルダにリポジトリと同期させるのが コマンドラインでやるしかなくなったことでひるんでる。 作業用クライアントマシンにPHP環境仕込んだけど、やっぱサーバの 環境とはかなり違う・・・憂鬱。
svnで本番環境に展開するのと クライアントにPHP入れたことに何か関連性があるのか?
$a_a++; ってやったら、プラスされないんだけど、 なんで?
582 :
520 :2009/05/13(水) 22:45:39
php.ini default_charset = "UTF8" extension=php_mbstring.dll mbstring.language = Japanese mbstring.internal_encoding = UFT8 mbstring.http_output = UFT8 my.ini default-character-set=utf8 mysql.default_charset = UTF-8 上記を設定したのですが、MySQLにマルチバイト文字を追加しAdministoratorなどで見てみると文字化けが起こります。 やりたい事は、マルチバイトでレコードの追加と表示とブラウザへの表示です。 フレームワークのコード設定がおかしいのでしょうか? 環境↓ PHP Version 5.2.8 Apache 2.0.63 NetBeans 6.5 MySQL 5.1 MySQL Administrator
UFT8
> MySQLにマルチバイト文字を追加し 発行したSQLくらい書け
>>583 早速直しました。ありがとうございます。
>>584 INSERT INTO `test` (id,name) values (0012,'ああ')
でphpから挿入しようと試みました。
マルチバイト以外は正常に挿入できたので文法に間違いはないと思います。
utf8で全て揃えたら今度は挿入時にエラーが発生するようになってしまいました・・・・
>>585 ・・・・・・・・・・。で、エラー文を書く気は無いのかい。
PHP暦2週間でくだらない質問すいません。 File_Archive::extract ↑このコロン二つってどういう意味なんでしょう? 文法とか調べたけど全然載ってないので・・・・
>>586 すましえん
try{
$dbh=new pdo($dns,$user,$password);
$st=$dbins->query("INSERT INTO `test` (id,name) values (0012,'ああ');");
if($st){
print "よい";
}
else{
print "だめ";
var_dump($st);
}
}catch(pdoexception $e){
print"エラー :".$e->getMessage();
die();
}
で実行すると
だめbool(false)
と出てきます。
少し前までは文字化けしながらも挿入できたのですが・・・
>>585 INSERT INTO `test` (`id`,`name`) values ('0012','ああ');
こうじゃダメかい?
>>587 親クラスのメソッドとか、メンバに
アクセスするってこと。
たとえば
親クラスA{
unko-
}
だったら、子クラスがBだったら、
親クラスAのメソッドunko-にアクセスしたかったら、
A::unko-
って書く。
>>589 出来ませんでした・・・。
INSERT INTO `test` (id,name) values (0012,'aa');
にするとすんなり挿入できるのですが・・・・
utf8 UTF8 UTF-8 など表記の違いがあるのでしょうか
ソースがutf8nじゃ無いとか面白いことしてないよな。
>>591 うーん、とりあえず自分の晒してみる
$query = "
INSERT INTO inline
( `day_index`, `write_day`, `edit_day`, `text`, `flag` )
VALUES
( ". $ID .", ". time() .", ". time() .", '". mysql_real_escape_string( $post_array["text"] ) ."', '1' )
";
>>591 phpinfoで設定確認をされました?
PHPてBOMに対応してないんだ、 勉強になった>結構はまりますよね。
602 :
デフォルトの名無しさん :2009/05/14(木) 09:53:34
for文とwhile文ってみんな使い分けてるの? for文の方がコード少なくていいから、 while文使った事ほぼないんだけど。
というか用途が全然違うでしょ
604 :
デフォルトの名無しさん :2009/05/14(木) 12:14:15
while文で例えばインクリメントで加算していく処理とか。
605 :
デフォルトの名無しさん :2009/05/14(木) 13:51:30
while は テキストファイルを読み込む時 とか DBからデータを取り込むとき hashの処理とか が多い(while not eof) for は配列処理とか(個数が決まっているとか)が多いかも
foreachもたまには思い出してあげてください・・・
607 :
デフォルトの名無しさん :2009/05/14(木) 17:58:22
すまん そだね
>>602 ファイルからデーター抜くときはwhile
609 :
520 :2009/05/14(木) 20:29:30
レス下さった方ありがとうございます。 phpinfoで確認した所、ちゃんとutf8に設定されていました。 mysql_set_charset()などの関数が使えればいいのですが、別途にインストールが 必要なのでしょうか? Fatal error: Call to undefined function mysql_set_charset() とエラーが出てしまいます。
611 :
デフォルトの名無しさん :2009/05/14(木) 23:50:19
sql でcharset指定できなかったっけ? #postgresと間違えているか?
612 :
520 :2009/05/15(金) 00:20:02
諦めて一度全てアンインストールしてみます。 XAMMPでまとめて入れてみます。
XAMMPインストールしたらデフォルトでマルチバイトが扱えました!!!!!1111 どうもお騒がせしました。 これからもよろしくお願いします
いままでxampp使ってなかったの?
615 :
520 :2009/05/15(金) 01:15:09
すいません、追記ですが
$dbh->query("SET NAMES 'utf8' ;")
を書いたらマルチバイトが扱えるようになりました。
書かなかったら使えませんでした。
>>614 phpの入門書的な本に、それぞれ単体でインストールする方法が載っていたのでXAMMPは存在自体
知りませんでした。
設定をいじくると怖いので、しばらくこれでいきます。
どうせローカルでの用途しかないので。
皆さんありがとうございました。
616 :
デフォルトの名無しさん :2009/05/15(金) 07:32:52
一応 my.cnf の default-character-set はちゃんと調べたほうが いいと思う
PHP 5.2.3 以後に追加された mysql_set_charset('UTF8'); の方が望ましい。 ・・・らしいよ。
SET NAMES だと正しくエスケープできない場合があるから セキュリティ上よくない。
620 :
デフォルトの名無しさん :2009/05/15(金) 20:33:12
phpでシリアル通信のプログラムを作成しようとしています お勧めのライブラリは何でしょうか
シリアル通信つーてもいろいろあるわけだがUARTで良いのかえ?
622 :
デフォルトの名無しさん :2009/05/15(金) 21:20:15
USBです
USB経由でなんかデバイス接続して、 それのコントロールとかをPHPで書けるってことなのかえ? すごいなあ
>>620 とりあえずphpで作ろうとするなw
デバイスドライバがある前提にしたって、それに特化したライブラリがなきゃ話にならん
>>624 いままでCとか組み込み系とかで
10年くらいやってきた人なんでしょう?たぶん。
ならなぜJavaに行かんのだw
627 :
デフォルトの名無しさん :2009/05/16(土) 06:32:05
>>617 phpのバージョンが不明だから 書いてみた
foreachの必要性が良くわからん
一度に挿入するデータが多すぎて(カラムが多すぎて)、phpの中に書くと大変かつ汚くなってしまうので 外部にクエリを書いて読み込みたいのですが、可能でしょうか?
>>629 ライブラリが導入可能であれば、
O/R Mappingとかいいですね。
SQL文いらなくなります。
>>629 クエリを生成するルーチンを書けばいいんじゃないかな
>>629 俺は連想配列からクエリ生成するようにしてるよ
>>628 配列からデーターを一個づつ抜いてきて、
なんかの処理をするときに便利だよ
配列を使わないのなら、得に使わないかもしれない
最近のパソコンには”シリアルポート”(RS-232CとかUARTとか)が標準装備されていない。 むしろUSBコネクタに接続するシリアルポートの方が一般的だったりする。 若い人はそれしか知らんやろね。
セントロニクス36ピンだろJK
それはパラレル・・・・
PCのパラレルポートはちいせえんだよ あのセントロニクスの巨大コネクタがいいんじゃねぇか
>>634 今、RS-232C⇔UBSの製品おおいよ
この間仕事で使ったよ
デスクトップは今でも殆どRS-232Cはあるよ ノートはなくなったけど
641 :
デフォルトの名無しさん :2009/05/17(日) 06:43:18
>>630 そこから吐かれるSQLの効率がよく問題になると思うのだが
#チューニングするときは、ちゃんとわかってないとできないぞ
>>633 それをいうならhashだろう?
「hash」っていうのは、添え字がハッシュ値な配列じゃん。配列ジャン! それに、添え字が連続した数値の普通の配列にもforeachは便利に使えるぞ。
643 :
629 :2009/05/17(日) 18:16:58
レスありがとうございます。 カラムが20以上あって何も考えずに書くと骨が折れます・・・。 ルーチンとは、forなどで回すということですよね? その場合、トランザクションはどのようにすればよいのでしょうか?
644 :
デフォルトの名無しさん :2009/05/17(日) 18:52:07
>>642 うーん 配列と実装は違うと思うよ
key<->val のmapはhash使ってると思うしw
#ちごうたかな?
どのようにも何も普通にやればいいんじゃないかな
test
648 :
643 :2009/05/17(日) 21:04:48
すいません、トランザクションは自己解決しました。
登録フォームから新しく登録された人の情報を、その人のidの名前で新しくhtmlファイルを作って保存したいのですが、 $arr['id'] を新しく生成するページの名前 $arr に登録された情報が入っていて $newpage に新しく生成するページのhtmlが<?= ?>込みで書かれているのですが なにか上手い方法はありませんか?
意味がわかりません ソースを書いてください
$arr=$array(id=>'0001',name=>'sato'); $newpage=" <html><body> id=<?= $arr['id'] ?><br> name=<?= $arr['name'] ?>
その人のidの名前って、 0001.html ? それとも、 naoko.html?
653 :
651 :2009/05/18(月) 23:06:23
途中で送信してしまいました。 $arr=$array(id=>'0001',name=>'sato'); $newpage=" <html><body> id=<?= $arr['id'] ?><br> name=<?= $arr['name'] ?> </body></html>" この2つを合わせて $arr['id'].html というファイルに <html><body> id=0001<br> name=sato</body></html> と書き込みたいです。
そうですか。で?
どこで行き詰ってるの?
ようやくわかった。 0001ってIDの人がきたときに、 0001.htmlっていうHTMLファイルを作って、 そこにデーターを書き込みたい、ってことだな?
$arrayって何よ
658 :
デフォルトの名無しさん :2009/05/19(火) 01:07:20
はじめてプログラムに挑戦している者です。 独習PHPという本で、値がダブルクォーテーションで囲まれているか シングルクォーテーションで囲まれているかで、結果が違うという内容なのですが サンプル通りに入力して、ブラウザで表示すると サンプル <?php $title='サーバサイド技術の学び舎 - WINGS'; $data1="「$title」はサーバサイド技術の最新情報をお届けします。<br />"; $data2='「$title」はサーバサイド技術の最新情報をお届けします。<br />'; print($data1); print($data2); ?> ↓次のようなエラーが出てしまいます。 Parse error: parse error, expecting `']'' in C:\Apache Software Foundation\Apache2.2\htdocs\samples\chap2\variable2.php on line 3 どうすれば正しく表示されるようになるでしょうか(´Д`)?? 教えてちょんまげm(_ _)m
<?php $title='サーバサイド技術の学び舎 - WINGS'; $data1="「$title 」はサーバサイド技術の最新情報をお届けします。<br />"; $data2='「$title」はサーバサイド技術の最新情報をお届けします。<br />'; print($data1); print($data2); ?> --------------------------------- これで、できる。
$title 」は ここに、半角スペースを入れた。 eと、」のあいだ。
661 :
658 :2009/05/19(火) 02:00:07
できました!ありがとうございますm(_ _)m 助かりました(。・_・。)ノ
どうやら文字コードで化けてたようだ Shift-JIS以外だと何もせず動いた
PHPを始めようと思い、環境を作りました 文字コードの設定に関して教えて下さい サイトなどを見るとUTF-8かEUC-JPで構築されている例が多いのですが どちらの文字コードの方が主流、またはおすすめなんでしょうか? SJISで構築してみたのですが、文字の正規表現が上手くいかず 構築しなおそうかと思っています 宜しくお願い致します
SJIS でうまくいかないと言うヤツは UTF-8 にしても EUC にしてもうまくいかない。 まずは、なぜ SJIS でうまくいかなかったのか それを解決してみろや。 SJIS か EUC か UTF-8 かは、サーバOSや クライアントOS(Windowsとは限らないぞ、ケータイだってあるし) にあわせて最適なヤツをその都度選定すればいい。
オレはPC向けはUTF8、ケータイ向けはS-JISだな。 DB使わない場合はPC向けでもS-JISで作る事はあるけど。
ちょっと迷ったので質問させてください。 @POSTがない場合に代用の値を入れる。 if($data != $_POST['data']) $data = 0; Aデータを配列に入れ、キーを付けて再格納する。 $file = $file('./data.txt'); foreach($file as $xxx){ $p = split('<>',$xxx); $data[$p[0]] = $xxx; } この二つより軽い書き方とかあるんでしょうか?
間違えました、@は正しくはこうです。 if(!$data = $_POST['data']) $data = 0;
$data = ( array_key_exists( "data", $_POST ) ? $_POST['$_POST'] : 0 );
みすった・・・ orz $data = ( array_key_exists( "data", $_POST ) ? $_POST['data'] : NULL ); array_key_exists だとエラーログも荒れないというのも重要です
とりあえずforで10000回繰り返してみました。 if(!$data = $_POST['data']) $data = 0; 結果0.0024509429931641/sec $data = (array_key_exists("data", $_GET) ? $_GET['data'] : NULL); 結果0.0069079399108887/sec if(isset($_GET['data'])){ $data = $_GET['data']; }else{ $data = NULL; } 結果0.0036120414733887/sec orz
間違えました、一番目はこうです。 if(!$data = $_GET['data']) $data = 0 結果0.0024509429931641/sec
何で1000回も回す必要があるん? 数msの差なんてDBで・・・
入門書って必ずこう書くべきだと思うのね。 (1)プリント分。hello (2)変数、定数 (3)配列、連想配列(ハッシュ) (4)if、switch(条件分岐) (5)while,for,forech(ループ) (6)ユーザー定義関数 (7)OOP
自分だと(3)と(4)は逆かな
そんでページの色は 赤 橙 黄 緑 青 藍 紫 にするべきだと思うのね。虹の色にあわせて。
>>677 プログラムを書かせるため。
表示、変数、分岐まで覚えさせて、それらでプログラムを作らせる
プログラムは覚えるだけじゃなく、自分で考えて書くことが大事だと思ってる
(1)プリント分。hello (2)変数、定数 (3)配列、連想配列(ハッシュ) の間は、プリント文と変数と定数だけでいいんだよ!
(A)まず直接print文でhelloを出させる print "hello"; (B) 次に変数に入れて出させる $a="hello"; print $a; (C) 次に定数を教える (D) そん次に 配列を教える。 使い方はprint文だけ。
俺は0章で他の言語の思想を尊重してバカにしない事をまず教える
682 :
デフォルトの名無しさん :2009/05/20(水) 13:09:39
requireとincludeって使い方に何か違いがあるんですか? includeは古い書き方だって聞いたのですが、そういう認識でいいんでしょうか?
>>682 include → Warning 続けて動作する。
require → Fatal Error 実行停止
基本は
あーすまん、どっちを推奨するか書きたかったが、用件によって違うんでなしで。
>>683 requireだと読み込むファイルがなかったらそこで終わるということですか?
includeを使ったことがないので、厳密な違いがあるのかなと
requireを使ってれば間違いないという考え方は危険なんでしょうか?
>>685 大体はrequireでオッケー
自分でエラー処理とかしたい場合はincludeを使うという感じかな?
>>686 なるほど、そういう使い方ですか
まだPHPを始めて日が浅いので、色々やってみます
ありがとうございました
ちょっと質問させてくれ。 ウニコードの整数配列から文字列を作りたいんだが、$array = array(0xE8, 0xC3, ... ); pack('C*', $array); だとうまくいかない。 とりあえず、文字境界で区切って、整数列の長さごとにswitchして ... case 2: pack('C*', $array[0], $array[1]); break; ... みたいな事やってるんだが、他にうまい方法しらない?
690 :
688 :2009/05/20(水) 22:56:32
>>689 情報どもです。遅くなってすまない。一応その辺りは一通り目を通してた。
html_entity_decodeで一括変換するのも試してみたが、元データがUTF8だから、実体参照にするための変換入れたりするよりは、>688の書き方を選んだ次第。
でも、switchの辺りとか、コードの見た目がアレな感じかなと。
PHP書くのが初めてなんで、他の関数とか、C#のparamsっぽいのとか、定型的な書き方の見落としがあるのかと思ってここに来た。
しかし、型制約のない言語はエラーチェックとかデバッグが大変やね・・・w。
>>690 すまそ、何がしたいのか汲み取れなかった。
pack関数が配列をサポートしてないから、エラーなるね。
おそらくswitch〜caseの書き方しかないと思う。
数字だろうと文字だろうと基本は文字の書き出しです、ベースはWebですし。
バイナリ数使うとややこしくなるんで、文字列で書き出すしか。(フォーマットはしっかりして)
計算したあとSQL打つときは、ちゃんと枠にはめないと後々大変です ^^;
>>691 いや、若干後出しっぽくなったかも。すまぬ。
PHPコードとしてもこれはアリみたいだからこのまま使うことにした。
サンクス
$a = array(0xe3, 0x81, 0x82, 0xe3, 0x81, 0xbb); $s = call_user_func_array('pack', array_merge(array('C*'), $a)); echo $s;
このスレのルール 情報はあとだしで、 なるべく小出しでちょっとづつ出しましょう
やっぱ逆引き辞書無いと不便だな、と昨日痛感したよ・・・
>>696 頼むから、PHPマニュアルなんかと併用してくれよ
あと、そう言う人は人のソースをたぶんあんまり読んだりしないんじゃ
ないかという偏見を持ってみたり
他の言語でいうクックブックやレシピ集くらいまで行けば別だけど
<?php $a=rand(1,2); if($a==1){ ?> aaa <?php } else{ ?> bbb <?php } ?> ------------------------------- こういう書き方って普通なの?
普通っていうか、 aaaのところをprint "aaa";にするかどうかは人それぞれだろ。
推奨はどっちなの?
それはaaaやbbbの分量、それとaaaやbbbにPHP側から 埋め込みたいデータがどのぐらいあるかによる。
witch 〜 case でやったほうが美しい・・・
ていうか、それ動くのか?
echoかprintで出力しろよ もしくは外部ファイル読み出すとか
switch 〜 caseじゃなくてか
最近の流行のフレームワークを教えてくれ
cakeでいいんじゃない
>>708 レスThks
だよね。
ちょっと使い倒してみます。
http://www.e-and-a.ws/116.asp ここのページに書いてある、
<?php
header("Content-Type: image/gif");
$image = imagecreate(120,120);
$black = imagecolorallocate($image,0,0,128);
$yellow = imagecolorallocate($image,255,255,0);
imageline($image,10, 60, 110, 60, $yellow);
imageimg($image);
imagedestroy($image);
?>
このサンプルコードが動かない。
「画像ファイル "
http://localhost/1.php " は壊れているため、表示できませんでした。」
ってなってしまう。なんで?
Javascript で、 <script> a="hello world!"; b=a.strike(); document.write(b); </script> こういうの見ると、ああ、OOPなんだな、って思うね。 なので、PHPで、おんなじようなことしたいんだけど。 どう書いたらいい? OOPでクラスを書いてnewするの??
<s><?php echo "hello world!" ?></s>
>>712 ふざけんなゴミクズ。
PHPなめとんのか?コラ。
SQLはじめると、型っていうのが出てくるんだよね。 とりあえず、数値だけでも、 tiniint smallint, int って3種類あるんだけど、 127以下だったらtinyintでいいのか?
<?php foreach (range('a', 'z') as $letter) { print $letter; print "<br>"; } ?> こういうことができるのが、PHPのすごいところ。 おなじことをperlでやったら、正規表現を駆使した 渾身の一作で、何十行 書かないといけないことやら。
<?php $a = uniqid(); print $a; ?> これ、試してみたら、全然ユニークじゃないんだけど、 どういうこと? 生成されるIDの左側が常に一緒なんだけど??
一文字でも違えばユニークだと思うが ランダムと勘違いしてないか?
PEARって別にincludeとかしないでも、 ソースの中にベタ書きしてもいいのか?
他人に配布しないならいいんじゃね
>>717 何がすごいのかわからんけど。
('a'..'z').each{|x|puts x}
>>723 だからさ。
そういう書き方すると、
なにをやっているのか、意味が
まったくわからないわけじゃん。
>>717 程度の話ならどの言語で書いても数行じゃないか
数十行になるのはアセンブラくらだよ
まぁ、ある程度簡単で読みやすく書けるところはいいと思うね でもコメントは書こうよ・・・
>>724 普通に解るだろ別に
それはその言語を知らないから読めないだけじゃないか
単にa〜zまでを出力するのに可読性を低くしたり数十行使ったり方がむしろ難しいと思うの
だからDANあたりにPHP使いはアホとか言われるんだよまったく
>>724 「PHPのすごいところ」って、そういう意味かw
まあ、
>>717 はわかりやすいからいいんじゃない?
別にすごいとは思わんけど…w
>>717 perlではこう書けます。
foreach my $letter ('a' .. 'z') {
print "$letter<br />";
}
同じくらい読み易いでしょ?
むしろ正規表現を使うほうが難しいw
>>717 >>723 はRubyの例だけど読みやすいように書いてみるか
('a'..'z').each do |x|
puts x + "<br />"
end
これって、すごいのだろうか?w
PHP しか知らないんだから PHP がすごいのも仕方ないw
コージーお兄さん、サ
誤爆失礼
Perlだったら print foreach a .. z, "<br>"; こんだけ。
それいいな。
>>717 >おなじことをperlでやったら、正規表現を駆使した
>渾身の一作で、何十行
>書かないといけないことやら。
強引に正規表現を使ってやったぞ
(my $str = join('', 'a'..'z')) =~ s/(\w)/$1<br>/g;
print $str;
>>717 Perlでやるとこう?
print join '', ('a'..'z'), '<br>';
または
print ('a'..'z');
print '<br>';
読みにくいかなぁ
>>742 元のphpのコードでは、
一文字ずつ、後ろに"<br>"を付けるようになってるんだが…
>>> for o in range(ord('a'), ord('z')+1): ... print chr(o), '<br />' Pythonは'a'..'z'と書けないけど、for x in 〜: という構文はPerlのforeachや Rubyのeachよりも「その言語をしらないユーザー」に読みやすい。 inclusiveな範囲で文字列を列挙する関数を書くとこうなる。 >>> def chrange(from_, to_): ... for o in xrange(ord(from_), ord(to_)+1): ... yield(chr(o)) >>> for c in chrange('a', 'z'): ... print c, '<br />'
717は必ずレスがもらえるコピペ
746 :
デフォルトの名無しさん :2009/05/24(日) 16:10:28
>>744 [Ruby]
for o in ('a'..'z')
print o + "<br/>"
end
>>746 素直にそう書けばいいのに、 Rubist ってやたら .each {|x| ... } を使いたがるよね。読みにくい。
>>743 しまった><
じゃあこう
# aからzまで後ろに<br>を付けて出力
print map{"$_<br>"}('a'..'z');
>>747 eachもmapもselectもsortもFile.openも似たような構文で書けるから。
なんでeachだけforみたいな別記法使わなきゃならんのという感じ。
rubyの世界の殻の中ではちゃんと統一はとれている。
rubyの外からだと独特で読みにくいのは認めるけど、こればかりは
「使ってみないと分からない」の世界じゃないのかなぁ。
>>747 一言で言うと、「ダサイ」んだよ。Rubyで for 使うと。
他の言語で言うと、foreachを使うべきところで for使う感じ。
>>751 Perlの場合、foreachと書くところでforと書いた方がスマートな場合を
Larry Wall自身が自著で幾つか例を挙げている。
だからどうした、としか
>>747 だって、for が each の構文糖なんだもん
print "$_<br>" foreach 'a'..'z';
携帯で画像をランダム表示したいのですが どのようなスクリプトが使えるのでしょうか?
<img src="<?php rand(1,10); >.jpg"> で1.jpg〜10.jpg用意しろ
これはスクリプトではないので他の方お願いします
javascriptでいいんじゃない
>>757 で何が足りないのか言ってくれないと次が出せない
PHPのタグの閉じに?が抜けてるから そのままコピペして動かなかっただけじゃないのかw
この質問かつてないくらい様々なスレにマルチされてるな
>>760 遅れてすいません
今サーバをもってないのですが
無料PHPサーバでおすすめあげてもらえませんか?
あぁ、後データベース使いたいならfirebirdがいいよ
BDはXindiceの方がいいよ
ありがとうございます!! 携帯ではJSは使えないようです
いや今時のJSは携帯持ってるよ
未だにcookieが使えない携帯があります
>>745 けどこのスレってPHP初心者大半 + 一部の分かってる人、と
思ってたら、わりと他の言語もたしなんでる人がヲチしてる
みたいなのが分かってちょっと驚いてるw
MySQLで、レコードの数を知りたい時はどうかくの?
>>774 見積書
内容 数量 単価
DBレコード調査 1 \50,000-
あと勉強することっていったら、 e-mal、正規表現、MySQL、画像生成くらいかなぁー
あとinclude_pathの意味がわからない
なんでotuneの野郎がこんなスレ見てるのかマジで意味がわからない
それと、pearとsmartyとcakeかな。
>>773 LLバトルロワイヤルスレから人が来てるからな。
わざわざPHPの初心者スレをチェックする Ruby/Perl/Python 使いなんて
ほとんどいないだろ。
PHPはスクリプト系の王者なんだから、 他の言語のことなんか気にしてないのにねー
723 >('a'..'z').each{|x|puts x} 724 >だからさ。 >そういう書き方すると、 >なにをやっているのか、意味が >まったくわからないわけじゃん。 まじっすか。 foreach (range('a', 'z') as $x) { echo $x; } とおなじじゃないのか。 この程度で「意味がまったくわからない」というのなら、プログラム書くのやめたほうがいいよ。 いくらなんでも頭悪すぎる。
単にRubyの構文知らなかっただけだろ
>>783 アンカーの張り方くらい覚えてから書き込んでくれよ
ペチパーの低レベルさがまざまざと
791 :
デフォルトの名無しさん :2009/05/25(月) 07:26:56
>>784 やってる奴じゃないと、普通はわかんないだろ・・・・
#そのくらいは想像せいや ってのもありだけど
putsってあったらRubyかTCLだろJK
>>724 Cしか知らない人がいきなりforeachとか'a' .. 'z' とか見たらそこで凍ると思うぞ。
方言みたいなもんなんだから言語が違ったら読みにくいのは仕方ないだろ。
RANDMIZE DIM GOTO GOSUB RESTORE READ PEEK POKE IF 〜 THEN 〜 ELSE FOR 〜 NEXT モシ 〜 ナラバ イケ 〜
tumblrからお越しの皆様は、半年ROMってろ
tumblr のやつらってキモイよね〜 誰にも相手されてないくせに やたら自意識過剰でさ〜 弱小ゴミクズ言語のくせにナマイキなんだよね〜
<script> a="byebye"; <a src="javascript:'window.alert(a);'">aaaa</a> window.alert(a); </script> これをサニタイズするにはどうしたらいい?
htmlspecialchars
>>796 やめなさいってw
俺は両方見てるんだからさw
>>797 意図がわからない
scriptタグの中にHTMLを書くってのは何か意味があるの?
何のために「サニタイズ」したいのかもわからない
グーグルで検索したら、extractは危険だから使うな、って 書いてあるのだが、どうなのだ?
>>803 危険な理由を考えてみ。宿題。
昔のPHPはクエリのaaaは自動的に$aaaに展開されていた。
危険すぐるので今はoptional、非推奨になっている。
普通に考えて、野良クエリーがグローバル変数を侵食するとか怖くてつかえんだろw
GETで送ったaaaが普通に$aaaに入るはんて怖すぎるw でも初期につくったPHPプログラムを見ると、普通にif ($aaa == とか使ってて え、なにそれこわい
807 :
デフォルトの名無しさん :2009/05/29(金) 13:10:18
>>806 昔はそれしかできなかったんだから、しょうがないでしょ?
機能的にできなかったことで、今の観点から文句をいわれてもねぇーって感じ
いや、$HTTP_VARSは使えたでしょ
お伺いします。 よくこういうmysql_queryの使用例が出てくるのですが、 mysql_query('SELECT * FROM テーブル WHERE なんとか); WHEREってどんな役割があって、どう使うものなのかがどうしてもわかりません。 色々とググっては見たのですが、具体的な解説は見付かりませんでした。 どうか教えてください。
>>809 板違い。データベース板で聞いてよ。
SQL文については初歩の初歩だから、入門書の1冊くらい読みなさい。
811 :
809 :2009/05/29(金) 17:15:27
そうでしたか、ごめんなさい。 でもおかげで「SQL文」で検索したらわかりました。 いままではPHPを使っているんだから、 PHP関連から探すという先入観があり進めなかったようです。
>>808 そういう問題じゃない。
この野良クエリが変数に入ることがなぜ脆弱性を引き起こすのか理解してないな。
大げさだが、環境変数書き換えるようなもんだからな
>>810 お前が板違い。
質問に一切答えない
webprog板のキチガイ自閉症どもから
避難してこのスレができたのだ。
>>811 PHPを学ぶときに、
「PHPだけ学べばいいんだ」
って思って最初はじめるんだけど、じきに
PHPプラス、SQLも学ばなくては
いけないんだ、って気づかされる。
つまり、PHPとMySQLのバイリンガルになることを
強要されるってこと。これがキツイ。
PHPで自分でテキストいじり倒すよりはるかにSQLのほうが簡単だと思うが SQLなんてエディタで楽々吐けるんだし
818 :
817 :2009/05/29(金) 23:38:43
そういう意味ではPHPとDBはセットなんだと思うよ 今の時代でPHPだけってシステムのほうがほぼ無いんじゃないかな
>>815 そういうおまえも、質問には何一つ答えてないワケだが。
SQL補完できるエディタとかってあるの?
PHP+Postgreは少数派か・・・ んー、スーパーグローバルの値を、SQL文にそのまま使うのは怖いね。 限定された空間で作るなら適当にやるけど、公開サーバーだと・・。 とりあえずは、SQL Escapeは必須だし、$_POSTで受け取った変数の中身 くらいはチェックに掛けるな
結局、このスレには > WHEREってどんな役割があって、どう使うものなのか という問いに答えられるヤツは一人もいないのか。
そんなの調べれば出てくるからな
>>823 だいたい「どんな役割があって、どう使うものか」を聞きたい人って
学校や会社の宿題が終わらなくて2chで済まそうっていう屑ぐらい
じゃん。そんな屑にいちいち答え教えてたらキリがない
PHPスクリプトがサーバーで動くとき、 アパッチ権限で動く場合と、 自分の権限(自分のアカウントがもしyamadaならyamada)で動く場合と、 この2つだけ? もっと他にもあるの?
「サーバー権限」 「ユーザー権限」 この2つ?
>>816 PHPっつーかweb開発やってるとPHP、SQL、DB、HTML、CSS、JavaScript(AJAX)、Flash(ActionScript,Flex)、
サーバー構築の知識、サーバーメンテの知識、一通り必要だぞ。
別にPHP関係なくて、Ruby や Railsだって今時そうだし。
それで、キツイ言ってたら、プログラマーやってけないと思うけど。
つか簡単でしょそれら
831 :
デフォルトの名無しさん :2009/05/30(土) 07:19:02
つーかDB触るアプリだと、必須だと思うのだが>SQL
SQLでできることはSQLでやったほうが、パフォーマンスぜんぜんいいしね
#基本はねw
>>809 SQL今後も書きそうなら、入門書位読みなさい
>>827 Apacheからたたく場合はApacheのuser(and group -> httpd.conf) だっしょ?
#普通はパーミッションあわせるわなぁ・・・・
cuiの場合は起動するuser(and group)にあわせる
そういう意味では、変わらないと思うのだが
#基本はね
#cron なんかだと user 指定する場合もあるけど
>>830 簡単なことしかやってなかったらいいんですけどねえ・・・
「つか」って何ですか?
>>827 > Apacheからたたく場合はApacheのuser(and group -> httpd.conf) だっしょ?
suEXECでユーザ権限で動くサーバも多い。
設定次第では、特定の既存ユーザのアカウントで動かすこともできるが、まあこれは
Apacheのuserってことになるのかな。
他のパターンはあるのかなってことだろ?
つーか、どうせこんな質問、レスばかりになるんだから、ム板にPHPを持ってくるのは やっぱり激しくミスマッチな気がする。
837 :
デフォルトの名無しさん :2009/05/30(土) 11:46:37
>>834 あ そうだ すまん
#自分じゃつかわねーから 忘れてた
>>816 >PHPとMySQLのバイリンガルになることを強要される
飯のタネだと思えばつらくもなんともない
てか、言語だけ覚えてもただの言語マニアだろ。 どんな言語でも実用的なもの作ろうと思ったら、 システムや外部ツールとの連携を覚えることは必要になる。 PHPでもコマンドラインツールだけ作る用途で使うなら、 SQLなんて知らなくてもいい。 むしろパイプやファイル入出力のほうが有用になる。
このスレ、板違いだろ
>>839 覚えたばっかりで使ってみたかったんですね。
SQLとファイル入出力を両方知った上でどちらを使うか洗濯するのであって 片方しか知らなくていいってことじゃないと思うが 俺は文字を表示したいだけだからechoだけで十分だし そこまでできてるので俺はPHPできる人ですって話にはならんわけで
別に1年目からそれを全て求められるわけじゃないからねぇ 5年やって純粋なPHP以外は解りませんだったらアホだけど 5年やればそのうちの8割くらいは触ることになるはずだから
いや、5年もいらないだろ
じゃ何年?
メールフォーム一筋で食ってきた俺なんか未だにSQLとか書いたこと無いぜ仕事ください
触るだけなら1年程度で十分だな。 練りこむのを入れるなら3年強。
仕事就いて即バグ取りとメンテ、増築させられたよ C++やってたから文法覚えるだけで特に苦にならなかった SQLもいくつか見たら、ノリ判るし
ノリでプログラムを理解する奴を俺は信用しない。
いや、SQLぐらいプログラムできるなら判るでしょ・・・
>>847 それはさすがにもう食い扶持ないと思うぞ……。
つーか今までよく食ってこれたなお前。
>>850 この場合、ノリってのはプロジェクトの作法みたいなものを指してるんじゃね
条件の記述パターンとかトランザクションのかけ方とか
5年必要って話じゃなくて5年やって駄目ならアホって話だよ 大きなプロジェクトなら1年2年スパンだからずっとコードと保守って事もあるし それで2年やってサーバ知らないからアホって事にはならんけど 次も同じ仕事を2年3年続けてたらアホだよねって
>>853 思うに、誤解の無い表現が出来ない奴は、職業プログラマは駄目だってことじゃね?
856 :
847 :2009/05/30(土) 23:16:58
>>852 スピード対応重視だったせいか去年までは何故か食えてたんだけど流石に無理があったw
今はデザイナの嫁さんの稼ぎで食ってる主夫≒ニートでござい。
確かにメールフォームの需要がなくなるってことはなさそうだな 食えるかどうかはともかくw
858 :
デフォルトの名無しさん :2009/05/31(日) 00:21:36
>>851 やってることのレベルによると思うけど、それは無理
単純なSQLだけならありだろうけど、そんな奴は迷惑
#と数年前の自分に言いたいw
MySQL使いに多いんだけどJOINなしのSQLを何度も投げるのはやめて欲しい もう3.23の時代じゃないんだぞ
>>859 ・その方がスクリプト(とDBの構造)がシンプルになる。
・その方が 圧 倒 的 にパフォーマンスがいい場合がある。
なんて理由から、JOINを選択的に排除するのは特に問題だとは思わない。
逆に、とにかくJOINする、っていう考え方が害になることも多いんだよ。
4〜5個JOINを入れ子にしたSQLとか、書いた奴以外が読むのは激しく負担。
また、そこでバグでも出された日には目も当てられない。
いやだからその考え方が江戸時代の考え方なんだよったく
あまり複雑なJOINだと大量に重複データーが混じるが、それって問ボトルネックになるのかな?
それはSQLが間違ってるから混ざるのでは 外部結合なんて混ざりようがないだろ
JOINがネックになってればそこはチューニングするんだから、 最初からJOINなしで作るのはおかしい。 よっぽど統計の取り方がクソなRDBMSでも無い限り、JOIN使った方が速い。 JOINは害って言ってる奴は、MySQL4しか使ったこと無いんじゃないか。
なんで突然外部結合に話を限定するんだ。
それこそまさに、限定的にJOINを使ってるってことじゃないの?
>>859 から感じる雰囲気では、こんなSQLも普通だと思ってそうだが、そんなもんなの?
(出所は伏せるが、知ってる人は多いかも)
SELECT
class_id1, class_id2, name1, name2, rank1, rank2,
product_class_id, product_id, T1_classcategory_id AS classcategory_id1, T2_classcategory_id AS classcategory_id2,
product_code, stock, stock_unlimited, sale_limit, price01, price02, status
FROM
(
SELECT
T1.class_id AS class_id1, T2.class_id AS class_id2, T1.classcategory_id AS T1_classcategory_id,
T2.classcategory_id AS T2_classcategory_id, T1.name AS name1, T2.name AS name2,
T1.rank AS rank1, T2.rank AS rank2
FROM dtb_classcategory AS T1, dtb_classcategory AS T2
WHERE T1.class_id IN (
SELECT class_id1 FROM vw_cross_products_class AS crs_prd WHERE product_id = ? GROUP BY class_id1, class_id2)
AND T2.class_id IN (
SELECT class_id2 FROM vw_cross_products_class AS crs_prd WHERE product_id = ? GROUP BY class_id1, class_id2
)
) AS T1
LEFT JOIN (
SELECT * FROM dtb_products_class WHERE product_id = ?
) AS T3
ON T1_classcategory_id = T3.classcategory_id1 AND T2_classcategory_id = T3.classcategory_id2
ORDER BY rank1 DESC, rank2 DESC
せめて読みやすくしようと勝手にインデントしてみたが、括弧の対応でミスった。
それって
>>859 が書いたんじゃなくてお前が書いたんだろw
言いがかりで正当化しようとするなよ
俺も何度か途中参画したプロジェクトでテコ入れしたことあるけど 結合してクエリ投げる回数減らした方がパフォーマンス上がる場合が多かった
みんながみんなMySQL使ってるわけじゃないだろ。 接続コストが高いけど性能も高いPostgreSQLやOracle使ってるなら、 JOINした方が全然早い。 単純読み出し命のMySQLくらいじゃないか。都度投げた方が早くなる可能性高いのは。
LAMPって知ってる? ポスグレやOracleはそもそもLAMPの保障外だから 事例としては稀で、実務では通常ありえない組み合わせ PHPでDBと言えば、特別指定しない限りMySQLのことだから
そ、そうだね… 話題変えようか…
なんか久々に聞いたなLAMPって単語
>>867 >>865 のことか?
俺が書いたんではなく、読まされたんだよ。ボトルネックっぽいからと。
結論から言うと、そのデータを取得するためには、90%は無駄な処理。
それを確認するのにどんだけソースとテーブルの関連を調べたか。
最初から、シンプルに3つ位のクエリを出して処理して十分追いつく内容だったし、
マトリックスを作るにしても、もぶっちゃけこのSQLよりPHPで作った方が早かった。
大事なのは、それを突き止めることも困難なスパゲッティSQLを自己満足で書くんじゃないと。
チューニングの結果として複雑になるならまだしも、最初から複雑に書く奴は馬鹿じゃないか?
>>870 さすがに恥ずかしい切り口じゃね?それは。
PostgreSQLも、8.x系統からはまたライトユーザの視野に入るようになってきてる印象。
それまでは、結構昔からDB使ってる人や会社で好まれるもの、っていうイメージがあったが。
それはそのSQL書いた奴が馬鹿なだけで、 JOINと言う仕組みが悪いわけじゃないような気が。
PostgreSQLもWindows版つくったりと、ユーザー広げようとしてるしね Joinより、ビューをDB側で用意したほうが圧倒的に早くなるよ
なんだ、LEFT JOIN のことか
なんだか勇気をもらえるスレだなココ
>Joinより、ビューをDB側で用意したほうが圧倒的に早くなるよ それはない
viewったって中身は結合だから、たまたま速ければそれでいいんだけど 遅かった場合に直しようがないから結局最初からSQLで結合した方が楽だよ
>>865 ひどいね。スキーマが分からないので何ともし難いけど分かる範囲だと
次のように書ける。
[無保証]
SELECT
T1.class_id AS class_id1, T2.class_id AS class_id2,
T1.classcategory_id AS classcategory_id1, T2.classcategory_id AS classcategory_id2,
T1.name AS name1, T2.name AS name2, T1.rank AS rank1, T2.rank AS rank2,
product_code, stock, stock_unlimited, sale_limit, price01, price02, status
FROM dtb_classcategory T1, dtb_classcategory T2
INNER JOIN vw_cross_products_class crs_prd1
ON T1.class_id = crs_prd1.class_id1
INNER JOIN vw_cross_products_class crs_prd2
ON T2.class_id = crs_prd2.class_id2 AND crs_prd1.product_id = crs_prd2.product_id
LEFT JOIN dtb_products_class T3
ON T1.classcategory_id = T3.classcategory_id1 AND T2.classcategory_id = T3.classcategory_id2
AND crs_prd2.product_id = T3.product_id
WHERE crs_prd1.product_id = ? ORDER BY rank1 DESC, rank2 DESC
RDBMSのバージョンも分からないけど、インデックスの使用を妨げる
ような書き方もしていないから多分速いよ。
スキーマが分かればもっと短く速く書けるようになる可能性が高い。
(特にvw_cross_products_class。product_idがキーならこのテーブルを
第一テーブルにしてdtb_classcategoryをJOINした方が速くなる。
あとカンではT3のclasscategory_idの制約も必要ないと思う)
PHP上でロジックを書いた方が速いかはレコード数等々にもよるけど。
あと元クエリーは酷すぎ。多分最善策だったのは、このクエリを事前に
DB板の関連スレにコピペする事だったんじゃないのかな。罵倒しつつ
親切な人がすっきりと書き直してくれたはず。
881 :
デフォルトの名無しさん :2009/05/31(日) 09:00:46
>>870 それは単なる言葉の定義。
そういう構成で使われることが多かった だけやん
誰が何の保障をしてくれるわけ?
>>870 いやあの、LAMPって保障とかそういう言葉じゃないから。
既にあったDBがポスグレとかOracleとかあるからしねえ。
昔はポスグレの方が性能高かったから(今は知らん)か、ポスグレ指定されることもあるしねえ。
金あるとこはしょーもないシステムにOracle突っ込もうとするし。
883 :
デフォルトの名無しさん :2009/05/31(日) 14:17:24
>>879 Oracleの待てビュー早くね?
#Ora使いじゃないからわかんないんだけど
メールヘッダインジェクションとか まじで勉強しないとダメなの?
パスの相対指定のやり方とかってどうやるの? 外部から見られたら困るtxtファイルなんかを public_htmlの外に格納するときなんだけど、 --public_html--a--1.php | |--private_html--2.txt こうなっていたとして、1.phpから、2.txtを 読みたいんだけど。 1.phpからみて、一つ上の(a)、一つ上(public_htm)の、一つ上の中の、 private_htmlの中の、2.txt これでいいの? だとしたら、相対パスの書き方はどうなるの?
require_once('../../private_html/2.txt'); これでできた。 でも、ドキュメントルートを指定して書く やり方あったよね。それ教えてよ。 [DOCUMENT_ROOT] こんなかんじのあったでしょ。
またお前か
>最低限、CR、LFだけはチェックし、含まれる場合 >はセキュリティ上のエラーとして処理(攻撃が行わ >れたとアラートを発生させる等)しなければなりま >せん。 こんなこと書いてあるんだけど、 本当にこんなことしないといけないの?
ここはプログラム板 C++やJavaの偉い人がきますよ
>>888 SQLの場合、実装に穴があると「;」の後ろにLF入れられたら面倒なことになる場合があるけど、
それは穴の方が問題であってLFが問題じゃないよね。
他にCRLFが問題になる場面って思いつかないな。SQLの場合だけ気をつけてればいいかと。
>>890 SQLの話じゃないよ。メールヘッダインジェクションの話だよ。
誰がアナルやねん!
894 :
デフォルトの名無しさん :2009/06/01(月) 19:49:24
ここで聞くことなのか怪しいところですが、PHPを自宅で使える環境にできません。 Apache_2.0はちゃんとインストールできてると思います。 PHP5.2.9もちゃんとインストールして、指示されているように設定の文書も変更しました。 (それが古いバージョンのものだったので一部違う部分もありましたがだいたいできたと思います) ちなみにOSはVistaです。 わかる方がいたら是非教えてください(>_<)
895 :
デフォルトの名無しさん :2009/06/01(月) 20:34:22
LoadModule php5_module "drive:/path/to/php-5.2.6/php5apache2.dll" は設定してる? もしくは変更したところを全部書いてみる エスパーじゃ答えられないし、それやんないとお互い時間の無駄
896 :
デフォルトの名無しさん :2009/06/01(月) 21:21:20
設定の変更などは高度すぎてわからないので まとめてインストールできるXAMPPというものがあると聞きまして インストールしたのですが、結局できません。 依然としてApacheは正常に動いてるようなのですが。。 もうなにがなんだか…すいません
xamppで失敗できる人がいるとは思わなかったw 単に使い方わかってないだけでインストールは一通り出来てんじゃないの? 何をもって「できない」と思ってるのか書いてくれないからわからんけどさ。
898 :
896 :2009/06/01(月) 22:33:17
なんとかでき?ました!笑 メモ帳で書いてたので拡張子がphpのつもりがtxtになってるのが原因でした。。 ありがとうございました!! ちなみに、こんな一括インストールがあるのに、これが主流でないのはなぜでしょう? これには何か欠点があるのでしょうか?
・Windowsでは連続動作・セキュリティ的に脆弱 ・一括インストールだと後のバージョン更新、ライブラリ追加ができない ・バージョンやライブラリ当の違う、複数の環境に対応したテストがしづらい
900 :
デフォルトの名無しさん :2009/06/01(月) 22:43:06
>>898 秀丸使ったほうがいいと思うよ(メモ帳以外のエディタなら何でも)
>何か欠点
使いたいバージョンを手でインストしても、慣れればそう手間ではない
おまけがいっぱい入りそうなのが嫌
Linux鯖がメインでphp以外はディストリのパッケージを使うから
#Win版はzipを解凍
Postgresの方がメインだから
単なる趣味だから
まぁ、せっかくだからPHPエディタのスタンドアロン版とかお勧めする 簡易デバッグも出来るし(設定できればの話だが)
>>898 お手軽開発用としては割と主流だけどね。
本番用には
>>899 の理由含めて色々問題があるから使い辛いけど。
903 :
896 :2009/06/01(月) 23:30:20
そうなんですか。。。 僕は学校の課題を家でも出来るようにしたいだけだったので、たぶんこれで大丈夫です! もしハマっていったらまた個別で使いやすいようにインストールしていきます。 ちなみにエディタはGreenPadを使うようにしました。一番簡単なようだったので。。。 いろいろありがとうございました!!
>>885 まず
http://www.php.net/manual/ja/ これをブックマークしといて。
それから
search for 欄にDOCUMENT_ROOT
を入力してからその右側のプルダウンからonline documentationを
選択してそのさらに右にある矢印をクリック。
気持ち悪いピンクの囲みに何か書いてあるだろう?
xampp使うと成長しないからね
906 :
デフォルトの名無しさん :2009/06/02(火) 14:35:27
$arr = (4,7,8,9) 上記配列で、 残りの1~9(今回の場合は1,2,3,5,6)までの値を配列に格納 する方法を教えてください。
普通に1から10まで回して、$arrに存在してなかったら追加でいいんではない?
$a=array(4,7,8,9); $b=array(1,2,3,4,5,6,7,8,9,10); var_dump( array_diff($b,$a)); が array(7) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) [5]=> int(6) [9]=> int(10) } なのはなぜですか?
トーナメント表などのお勧めなscriptってありますかね?
910 :
デフォルトの名無しさん :2009/06/03(水) 00:42:12
>>906 $array = range(1,9);
$data = array(4,7,8,9);
print_r( array_unique( ( array_merge( $array, $data ) ) ) ) ;
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 )
911 :
デフォルトの名無しさん :2009/06/03(水) 00:46:50
>>908 <?php
$a=array(4,7,8,9);
$b=array(1,2,3,4,5,6,7,8,9,10);
print_r( array_diff($b,$a));
Array ( [0] => 1 [1] => 2 [2] => 3 [4] => 5 [5] => 6 [9] => 10 )
PHP Version 5.2.6
>>908 何を聞きたいのか知らんが、なぜ[3]が入るのか?
ということであれば、再現せず
<?php
$a=array(4,7,8,9);
$b=array(1,2,3,4,5,6,7,8,9,10);
var_dump( array_diff($b,$a));
array(6) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[4]=>
int(5)
[5]=>
int(6)
[9]=>
int(10)
}
PHP 5.2.8
>>898 主流じゃないと思うが、検索する限りではWindowsではよく使われているようですよ。> XAMPP
>>910 rangeという関数あるんですね。
ありがとうございます。
いろいろと活用できそうです。
いやだから文句言うなら回答例を
プログラムって、はじめてやるような例の場合、 精神的な負担やストレスがはんぱないよね。 ストレス度250%って感じ。 同じこと何回もやって、 「ああ、また例のあれだな」 って、先の展開が読めれば なんてことないんだけど、1回目は 本当に脳の血管がぶちきれそうになる。
>>919 そこで言うストレスっていうのは、時間内にできるかどうかもわからん!ってもんだろうな。
時間的な制限がよっぽどきっちきちでなければ、初回が一番楽しい。・・・は語弊があるか。
一番モチベーション高いけどな。
二度目は前回の反省を活かしていじる楽しみがある。(でも一番迷走しやすい)
逆に、三回目以降こそ苦痛で仕方がないような気がする。
どうせそのままでは使えなくてあちこちいじる必要があるのに、全体としてやってることは
前と同じっていう、なんとも言えない作業感が辛くなったりする。
また、前にやった処理と若干違う部分がなんとも修正しにくかったりした場合とかも、変に
あるものを活かそうとして逆に足を引っ張られたりしない?
>>920 ああ、あなたは理系だね。
私は文系だから、ストレスを感じ取る
局面が正反対なの。
unko大学からのアクセスのときだけ、 専用のページに飛ばすのって どう書けばいい? unko大学のリモホが、 abc-123.unko.edu だったとしたとき。 リモホを変数に格納して、 ピリオドで区切って配列に格納して、 右から二つのセクターが、edu、unko、 と一致しているかどうかを==で調べて、 もしtrueなら飛ばす、これでいいの?
>>922 別にそれでもいいけど普通htaccessでしょ。
それでいいんじゃねーの
>>923 ただ飛ばすだけでなくて、ログも取りたかった。
phpで全部制御すればなんでもできるでしょ?
>>925 ログはHTTPdのログがあるじゃないか・・・。
まあPHPで済まして悪いことは何もないからそのままでもいいと思うが。
無料のレンタルサーバーだから アパッチのログは見れないんだよ、dude
date関数って、どの時間帯が表示されるのかな? php.iniの設定で決めるの?
つまり自分のパソコンで実験してるときはJSTが表示されて、 レンタルサーバーにアップロードしたら、 そのサーバーのタイムゾーンで表示されてしまうのかな? だとしたら、アタマこんがらがるね。
なんでPHPerって、スレを乱立させるんですか?
クッキーの受け入れを拒否してると、 セッションクッキーも受け取れなくなるの?
ブラウザの開発元に聞いたら? サーバ側の処理で「クッキーの受け入れ拒否」とかあるの?
仮に誰かが血迷って次スレ立てるとしたら、少なくともスレタイを「PHP初心者@〜〜」にしとけ それか、ここがム板での雑談スレって扱いなら、テンプレに質問スレへのリンクでも貼って置けよ。 クソスレ乱立させんな
>>931 当然。URLにセッションIDを埋めるしかなくなる。
それが他人のパソコンに残ったり、そのURLを利用者が知らずにネットに貼ったりして
セッション乗っ取りが行われる。セッションIDにはワンタイムトークンを使うべきと言われたり、
決済やパスワードの変更等重要なタスクが発生する場面では再認証すべきと言われているのは
そのため。
>>932 開発元に何を聞くんだよw
>>928 date_default_timezone_set()
>>934 あーー。
それで、use.cookie_only=1
とかにしないとダメなんだ?
>>936 session.use_cookies = 1;じゃなかったっけ?
セッションハイジャックでググってみるといい。
938 :
デフォルトの名無しさん :2009/06/04(木) 17:18:28
$first_sunday = mktime(0, 0, 0, $month, 1 - date("w", mktime(0, 0, 0, $month, 1, $year)), $year); 西暦と月の情報だけで、その月の朔を含む週の日曜日を求めるコード。 長くて気持ち悪いんだけど、もっと短くならないかな?
十分短いと思うがw
>>938 $first_sunday = strtotime('next sunday', mktime(0, 0, 0, $month, 1, $year));
941 :
デフォルトの名無しさん :2009/06/04(木) 18:10:33
>>940 お、ありがとう。
この関数のことは知らなかったよ。
>>922 Webサーバが逆引きした名前を用意してくれるとは限らないし、
そもそも逆引きの名前がないかもしれない。
>>940 $first_sunday = strtotime("next sunday $year-$month-1");
>>944 % php -r "var_dump( date( 'Y-m-d' ,strtotime( 'next sunday 2009-2-1' )));"
string(10) "2009-02-08"
PHP5で、文字列の連結を高速化する手法はありますか? 配列に格納後joinするのが早いと思っていたのですが、実際に計測してみると「.」で一つずつ連結する方が早い始末… メモリ確保の観点から「.」で一つずつ連結するより早い方法がある(C#のStringBuilderのような)と思うのですが、どうなんでしょう
>>946 '.'を使うのは並び順とかを指定するコストを人間が
負担してるわけだから早いのは当たり前。
例えば以下でどっちが早い?っつったら二番目に決まってるじゃん。
ループ回す分のコストがないわけだから。
foreach(1..5 as $count){
print $a[$count];
}
print $a[1] . $a[2] . $a[3] . $a[4] . $a[5];
>>945 PHP 4.4.3では2009-02-01と出るな・・・・。
まったくPHPってヤツは。
949 :
946 :2009/06/06(土) 16:39:34
foreach($a as $tojoin){ $a = $joined . $tojoin; } よりも $joined = join('', $a); の方が遅いってこと?なら研究の余地があると思うが。 joinは内部的に配列を追ってるから、そのコストを人間が 負担するのでは比べる意味がない。
ほとんどの場合、その程度の速度差を気にしたところで何の意味もない
953 :
945 :2009/06/06(土) 17:38:33
>948 2009-02-08になったのはPHP5.2.6@FreeBSD。 まったくPHPってヤツは。。。
954 :
952 :2009/06/06(土) 17:56:11
すみません
>>952 >とんでもないロス
は言い過ぎました。
ある程度のロスがあるので、気持ち的にちゃんとした処理が簡単に出来るならしておきたい
に訂正しまふ
>>952 あのさあ・・・・。
連結作業があって、それをそのままドンと出すのと、
配列チマチマ作る作業が先にあって、それからjoinするのとじゃ手間が全然違うでしょ。
それでも通常と配列にはほとんど差がでてないという。
逐次データが出てくるような場合は '.'、元々配列ならjoinの方が早いっていうのは
当たり前のような気がするが。
ためしに配列作ってそれを '.'で繋ぐってテストスクリプト作ってみ。
あとこういうのはクラス化するとどこでロスが出るか分からないから
>>950 みたいに
裸でスクリプト書くのが普通。
そもそも君が知りたいのはjoinのコストと'.'のコストでしょ?全然テストになってない。
テストスクリプト作り直し。
質問 リモートホストをサニタイズ無しで 表示するのって危険?
大事なのは、リモートホストの直接菜表示が危険かどうかではなく、 それが何故危険かどうかわからないことだ
>>955 お願いします、PHP以外のCやC#とかをいじってから言って下さい
C#には文字列連結用のクラスまでデフォルトで用意されてるんですが…
>>958 他の何言語を持ち出してきても結論は変わらないでしょ?
それと
>>955 がCやC#をいじったことがない前提で話を
しているのはなぜ? w
>>959 メモリ確保時のロス、リスト構造、ポインタ、PHPのメモリコピーのタイミングなどの話が全く出てこないので、他言語の事を上げさせていただきました
正直、ここまで話にならないとは思いませんでした
>>960 話にならないのはお前のテストコードだろ。
俺は元々C書きだ。
お前が本当にC書きなら、メモリ確保やポインタがどうなってるか知りたい場合ソースコード
読むのが普通だろ。何やってんの?
> メモリ確保時のロス、リスト構造、ポインタ、PHPのメモリコピーのタイミングなどの話
PHPのテストコードレベルでそんな話出てくるわけ無いだろ。
>>962 おい・・・・・このテストスクリプトって無駄なjoinを繰り返してないか・・・?
他人にお話にならないとか抜かすのは100年早いと思うぞ。
でだ。単純に、
> for ($ii=0; $ii<$cnt; $ii++) {
> > $sb1 .= $str;
> }
と、
> $sb2 ='';
> $sb2 = join('', $test_array);
とを比較してみたら、これでもやっぱり配列の方が遅かったな($test_arrayは用意してある)。
何か問題を感じたらこういう根本的なとこから追っておくのが普通だろ。
まてまて、これは公平な試験じゃないな。片側だけ配列にアクセスしてる。 > for ($ii=0; $ii<$cnt; $ii++) { > > $sb1 .= $test_array[$cnt]; > } と、 > $sb2 =''; > $sb2 = join('', $test_array); だとjoinの方が早い。 結論: ・'.' と joinはjoinの方が早い。 ・配列を使った連結と使わない連結は、使わない連結の方が早い(当たり前だわな)
965 :
962 :2009/06/07(日) 00:05:10
配列を使わない方が速いに決まってるってのが分からんのですが 実際にどんな処理をしてるのかは知りませんが、 join時に配列の各要素を回ってメモリサイズを計算 ↓ メモリ確保 ↓ 結合 の方が 一回一回メモリを確保で結合していくよりも速くないですか? まあ勘違いしてるかもしれんので、今度時間のある時にでもCで確認してみます
966 :
965 :2009/06/07(日) 00:11:08
一応
>>965 で言ってる配列は、ポインタを格納した配列です。
PHPは値を書き換える時点でメモリをコピーするらしいので、
多分ポインタで持ってるのではないかなと
この時点で間違ってるんかな…
967 :
966 :2009/06/07(日) 00:57:22
ああああ変なこと言ってる
>>966 は無視してくださいスレ汚しすみません
まぁぶっちゃけると、そんなこと気にしてる暇があったらコード書け、と。 今の時代、早いコードより見やすいコードのほうが重要
ここで遅い、早い言っている人はそれがクリティカルなプログラムをphpで作っているんだw
>>965 > 配列を使わない方が速いに決まってるってのが分からんのですが
配列をシークするコストがなくなるからな。文法無視して例を書くと、
foreach(1..100 as $loop){ $a .= 'abc' }
foreach(1..100 as $loop){ $a .= $b[$loop] }
どっちが早いか明白だろ?
> 一回一回メモリを確保で結合していくよりも速くないですか?
仮にPHPがそう設計されてるとして、結合だけに関してはな。
ただ、君のテストコードだとjoinは配列使ってて'.'は配列使ってないので
、配列のコストがjoinには掛かる。だから、「君のテストコード」
の場合ではjoinの方が早いとは限らない。
>>966 だ・か・ら、
ソース嫁、と。
>>968 そうでない場面もあるよ。まあPHPでは少ないけど。
>>970 > ただ、君のテストコードだとjoinは配列使ってて'.'は配列使ってないので
.で逐次連結するか、すべて一時配列に格納して最後にjoinするか、
そういう前提でどっちが効率的なのか、って質問だろうに。
勝手なテスト書いてクソの役にもたたない結論出されてもね。
言われてるのは、何のためにそこまでテストしたいんだってのがぶれ過ぎてるってことじゃないの?
例えば
>>962 のコードでは
$var2[] ='a';
ってことをやって計測してるけど、本当にこれが最善の配列の作り方なのかとか、
例えば連結する文字列が固定なのであれば
join('', array('a', 'a', 'a', 'a'))
なんて書き方も可能なのでそっちとの比較もしてみるとか、
考慮に入れてもいいような事がいろいろあるはず。
その辺が甘々なのに、ちっちゃなパフォーマンスにこだわるのが違和感バリバリ。
というか、joinよりimplodeの方が速度出るんじゃなかったっけ? その辺から地道に頑張れ
joinはimplodeのaliasだぞ。
あら。ほんとだ。 差が出るのはsplitとexplodeか。(正規表現の解釈で?) うん。おれが地道に頑張る
_Y_ r'。∧。y. ゝ∨ノ PHP厨が配列の ,,,ィf...,,,__ )~~( 連結の議論をしてる間に _,,.∠/゙`'''t-nヾ ̄"'''=ー-.....,,, ,i i, ,z'"  ̄ ̄ /n゙゙''''ー--... ,i> <i 文明はどんどん発達し r”^ヽ く:::::|::|:::〔〕〔〕 i> <i. ていく・・・・・・。 入_,..ノ ℃  ̄U ̄_二ニ= `=.,,ー- ...,,,__ |,r'''"7ヽ、| __,,,... -ー,,.=' >ーz-,,,...--,‐,‐;;:'''""~ ~''':x.,, ~"|{ G ゝG }|"~ ,,z:''" ___ ~"'=| ゝ、.3 _ノ |=''"~ <ー<> / l ̄ ̄\ .|)) ((| / ̄ ゙̄i;:、 「 ̄ ̄ ̄ ̄| ̄| ̄ ̄ ̄\ ))| r'´ ̄「中] ̄`ヾv、 `-◎──────◎一' ├―┤=├―┤ |li:, |「 ̄ |i ̄i|「.//||「ln|:; ||//__|L_」||__.||l」u|:; |ニ⊃| |⊂ニ| || ,|/ |_. └ー┘ ._| ||/ ヘ 「 ̄ ̄ ̄| /
相変わらずそのAAは発達しないんだな
テストコードを書いた者ですが、 もともとはC#で言う「StringBuilder」を作りたかったのであのようなコードになりました 書き方が悪かったですね まあ多分色々勘違いしてると思うので大人しくソース眺めてみます
>>960 > 正直、ここまで話にならないとは思いませんでした
この流れ、どう読んでもお話にならないのは自分の方だから、
社会に出て身の程を知った方がいいよ。
PHPのスレだなあ
とりあえず、
>>979 のしたかった話と、大方のレスのレベル(階層)がずれてるのは確かだろ。
文字列連結の、PHPの実装上最も速い方法は 「.」 での連結なのか?っていう疑問。
んで、ただ単にCの階層で具体的な話をする(できる)奴がいなかったってだけじゃないか
# 本人が挙げたテストコードが、その階層以前の問題だったってことも大きいんだろうけど
>>960 の煽りはいただけないが、
>>980 の煽り返しは明らかにレベル(次元)が低い、と思う。
ちなみに俺はPHPのソースコードはダウンロードしたことはあるが読んだことない。
需要があるみたいなので、そろそろ次スレ頼む
>>981 >ただ単にCの階層で具体的な話をする(できる)奴がいなかった
>ってだけじゃないか
>>961 が指摘してることを理解してから出直しな
>>945 2/1は日曜なんだから次の日曜は8日で当たり前じゃないのか?
985 :
945 :2009/06/08(月) 21:33:48
願わくは984にもう少しスレを遡る勇気あらんことを。
何だよ性格ひねくれてんな
>>984 2/1の次の日曜は8日なんだが、'next sunday'は1日になったり8日に
なったりするからやっぱりPHPはこういうトコ困ったちゃんだな〜って流れだよ。
そういう時は "+1 day" してから訊ねるといい。
989 :
デフォルトの名無しさん :2009/06/09(火) 14:03:16
php4とか旧世代の遺物を使ってんのが悪いんだろ
>>989 客のサーバにPHP4しか入ってない(んで触れない)こととか普通にあるからなぁ。
うちでもメインのサーバーはPHP4だよw 今度PHP5の新サーバーを立てたけど、まだまだPHP4には頑張ってもらわないとw
PHP5に入れ替えても完全に動くって補償があるならいいけど 今とりあえず動いてるなら4使い続けちゃうよね
サーバーで動かしてるサービスが複数あるから PHP4からPHP5に移行するメリットが特に無い。 PHP5でかかにゃならん仕事はPHP5が入った別のサーバーで書く。
994 :
デフォルトの名無しさん :2009/06/10(水) 09:17:20
>>992 商用の鳥のパッケージ使うならいいけど、srcのほうはupdateとまってるでしょ?
とういうのが気になる
5.2->5.3のギャップもすごそうだね
995 :
デフォルトの名無しさん :2009/06/10(水) 23:34:35
仕事では4ばっかりで、5はまずない うちの会社はそんな感じ 正規表現苦手なのにXMLをちょこっと使う必要があるから、そのあたりの関数作ったりして、少し憂鬱になる サポートとっくに切れてるんだから新しくしてよと
今回、実験してみたんだけど、 その国が15:00前後になるように リンクを投入すると、一番クリック数が 多くなるみたいね。
わかんないことがあったんで、 アメリカの掲示板に英語で質問したら すぐに解決した。2ちゃんねるはもういらない。
>>997 2chじゃなくてMLとかだろjk・・・。
糞スレ終了 php板に帰れよ
?>
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。