PHP@プログラム板

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
webプログラム板の連中があまりにも
気持ち悪いので、こっちに立てました。
2デフォルトの名無しさん:2009/01/23(金) 21:07:17
プログラマーなんていうものは
もともと気持ち悪いのが多いものなのだが、
それを考慮しても、webprog板はさらにそれよりも
もう一段、気持ち悪い

とにかくキモサが群を抜いている
3デフォルトの名無しさん:2009/01/23(金) 21:08:46
プログラム板 → 腐海と風の谷の境界線(ギリギリ瘴気から守られている)
webprog板 → 腐海のど真ん中(マスクなしでは5分で肺が腐ってしまう)
4デフォルトの名無しさん:2009/01/23(金) 21:22:17
webprog板にいるのはマジでこういうレベルだから。↓

http://takeshima.2ch.net/test/read.cgi/news4vip/1232701402/
5デフォルトの名無しさん:2009/01/23(金) 22:45:49
http://blog.ohgaki.net/espcs_if_a_fa_ia_a_pa_e_oa_a_sa_da_ca_sa

ここに

「そもそもBASIC認証自体が安全ではなく通常利用は避けるべきです。」
と書いてあるのだが、これって本当なのか?
6デフォルトの名無しさん:2009/01/24(土) 09:14:28
いまさら感
7デフォルトの名無しさん:2009/01/24(土) 10:59:44
どっちも底辺レベルは変わらんな
8デフォルトの名無しさん:2009/01/24(土) 15:03:16
php4.4.4

datetime型をyyyy/mm/ddで表示させたいんだけど
どうすればいいの?
9デフォルトの名無しさん:2009/01/25(日) 02:06:26
そんな型はありません
10デフォルトの名無しさん:2009/01/25(日) 03:48:00
>>8
->format
11デフォルトの名無しさん:2009/01/25(日) 06:38:00
<?php
setcookie("aaaaa","12341234");
print $_COOKIE['aaaaa'];
?>

このプログラムを実行すると、
もしかして、一回パソコンの中にめがけて
サーバーから12341234が送信されてきて、
そんで、次にアクセスしたときに、こんどは
パソコンから、サーバーにめがけて、
12341234が、送信されてるの?

つまり、パソコンの中の文字列がそのまま
画面に表示されるのでなくて、いったん
パソコンから出て行って、インターネットレイヤーを通過して、
相手のサーバーまで届いて、そんで今度は変数にセットされて、
またこっちのマシンに戻ってきて、それで最終的に表示されるの?
12デフォルトの名無しさん:2009/01/25(日) 09:06:57
>>11
12341234は送信されません
13デフォルトの名無しさん:2009/01/25(日) 09:15:34
>>12
148:2009/01/25(日) 14:33:24
言葉足らずですまんです。

mssqlにあるdatetimeをphpでselectしたときだったもんでdatetime型という表現をさせてもらいましたわ。
でもって、時刻の部分が邪魔だったので、splitで分解して、strtotimeのformatにY/m/dで希望する形式に
出せました。

どもでした。
15デフォルトの名無しさん:2009/01/26(月) 06:11:43
質問

「予約語は変数の名前として使ってはいけません」
って教科書に書いてあるんだけど、
実際にやってみたらエラーにもならず、
実行されてしまうんだけど、エラーはでないの?

<?php
$if=1;
print $if;
?>
16デフォルトの名無しさん:2009/01/26(月) 06:44:59
<?php

for($i=0x127;$i<=0x255;$i++){

$b=$i;

$c=chr($i);

print $c;
print "<br>";
}


?>
このコードを実行すると、ところどころ、□になって
しまう文字があります。
これはこういうものなの?
17デフォルトの名無しさん:2009/01/26(月) 06:46:41
やりたかったことは、
アスキー文字の127−255って
どんなものなのか、見たかったということです。
18デフォルトの名無しさん:2009/01/26(月) 07:08:57
<?php
while($a=array_shift($_SERVER)){
print ($a);
print "<br>";
}
?>

このスクリプトを実行すると、
サーバー実行環境情報が
全部出てくるよ
19デフォルトの名無しさん:2009/01/26(月) 07:55:46
>>15
エラーは出ないみたいだ。

PHP: キーワードのリスト - Manual
http://jp2.php.net/manual/ja/reserved.keywords.php

> 以下のキーワードはいずれも定数、クラス名、 関数名として使用することはできません。
> これらを変数名として使用することは一般的には可能ですが、 混乱を生じる可能性があります。

変数には頭に $ がついているからだろう。
20デフォルトの名無しさん:2009/01/26(月) 08:07:51
>>19
サンキュー
人間が混乱するってだけなのね。
21デフォルトの名無しさん:2009/01/26(月) 08:09:01
質問

arrayを使わずに
要素を配列につっこむ便利な記法ってないの?
perlにはあったんだけど?

たとえば、
a,b,c,d,eの5要素を配列に入れたいとして、
arrayを使わずに、っていうか、クオーテーションを打たずに
格納する方法ってないのかな?
22デフォルトの名無しさん:2009/01/26(月) 09:37:13
<img src="./img/****"> のファイル名の部分に、MySQLの値 $row["@@@@"]をいれたいんだが
上手く表示できない・・・誰か助けてください><
23デフォルトの名無しさん:2009/01/26(月) 09:55:06
質問

PEAR + PECLが
PHPの「エクステンション」なの?
24デフォルトの名無しさん:2009/01/26(月) 10:25:39
>>21
PHP: 配列 - Manual
http://jp.php.net/manual/ja/language.types.array.php
PHP: array - Manual
http://jp.php.net/function.array

PHPには、配列変数の初期化方法は2つしかないと思う。
・array()を使う。
・$a[] = "hoge"; $a[] = "fuga"; という風に、未定義の変数に[] をつけて要素を一つずつ代入。

Perlはよく知らんのだけど、この記法のことを言ってる?

Perl 配列とリストデータ 【 バイクショップ パルス 】
http://www.pals-net.co.jp/a/perl3.html
> クォートワード(quote word)とは、文字列(空白以外)をリストリテラルへ記述する際に使えるショートカット
> @girls = ( "lucy" , "nancy" , "angie" , "sarah") ;  これはかなり面倒だが、、、
> @girls = qw( lucy nancy angie sarah );        このように書けば同じ結果が得られる

こういうのはPHPにはないと思う。

あと、
> クオーテーションを打たずに
これはカンマのことだと推測したんだが、どう?
25デフォルトの名無しさん:2009/01/26(月) 10:28:15
>>22
<img src="./img/<?php echo $row["@@@@"]; ?>">

この記法なら、たいていのサーバの設定で動くはず。
これで駄目ならまた質問して。
26デフォルトの名無しさん:2009/01/26(月) 10:36:34
>>21
$myArray = explode(" ", "lucy nancy angie sarah");
27デフォルトの名無しさん:2009/01/26(月) 10:48:17
>>26
あー、文字列リテラルだけならそれで行けるか。
28デフォルトの名無しさん:2009/01/26(月) 10:50:28
>>24 自己訂正。
> > クオーテーションを打たずに
> これはカンマのことだと推測したんだが、どう?

よく見たらクオーテーションもないのね。何やってんだ俺。
29デフォルトの名無しさん:2009/01/26(月) 14:15:12
>>25
ありがとうございました!動きました!感動しましたw
30デフォルトの名無しさん:2009/01/26(月) 15:58:00
>>24
Rubyも
a = %w(hoge mage hage)
みたいにいけたよな。
"hoge", "mage", ・・・ がまどろっこしいといえばそうだね。
31デフォルトの名無しさん:2009/01/27(火) 14:06:59
PHPはあらゆる記述がまどろっこしいからな。
32デフォルトの名無しさん:2009/01/27(火) 15:33:15
>>31
どこが?
33デフォルトの名無しさん:2009/01/27(火) 15:48:28
複数の値でtrimする方法を教えてください。
こんな感じで考えています。
$arr(りんご、どりあん、ポテト)
trim($str, $arr)
34デフォルトの名無しさん:2009/01/27(火) 15:54:26
>>32
31じゃないけど、PHPが冗長なところはたくさんある。
なんでこんな表記なんだ、洗練された構文を用意しろよっていつも思う。

例えば、変数名に$、配列が array、多重代入が list とかね。
list($a, $b) = array(0, 1);

これが例えばPythonだと
# カッコ()はなくてもいい。
a, b = (0, 1)

しかしこれは悪いことばかりではない。文の意味をarrayやlistというキーワー
ドで検索してすぐ調べられる。
Pythonだと構文の意味をある程度勉強しなきゃならない。

構文が単純なほうが入門はしやすかったりする。LISPなんかその最たるものだな。
35デフォルトの名無しさん:2009/01/27(火) 16:00:23
>>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 "今日の買出しは、とみかんとね。"って感じで実装したいです。
37デフォルトの名無しさん:2009/01/27(火) 16:48:47
>>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
ありがとうございます。
もう忘れません。
39デフォルトの名無しさん:2009/01/28(水) 00:27:42
>>24,26
サンキュー、まさにそれが言いたかった。ありがと
40デフォルトの名無しさん:2009/01/28(水) 03:38:18
<?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だったら、赤文字で、「スリーセブン!」と表示する。
偽造した特殊景品を持ってくれば換金もできる。
41デフォルトの名無しさん:2009/01/28(水) 04:55:01
PHPマニュアル、
chm版、の日本語版、
ダウンロードしてきて
インストールしたんだけど、メニューが文字化けしている。
なんで?
42デフォルトの名無しさん:2009/01/28(水) 04:56:44
>>41
自己レス
有名な問題みたいだな
なんで本家は対応しない?
43デフォルトの名無しさん:2009/01/28(水) 05:32:28
PHPのマニュアルってchm版はだめだね
字が小さすぎる
フォントを大きくすることも、なぜかできない。
44デフォルトの名無しさん:2009/01/28(水) 05:40:54
<?php
for ($i=1;$i<=100;$i++){
$a[$i]=rand();

print $a[$i]." => ".$a[$i]%3;
print "<br>";
}
?>

---------------------------------------------------
ある数を3で割った余りは、
0か1か2の、3通りにしかならない、ということが、
視覚的に、ビジュアルに把握できる良質なプログラム。
45デフォルトの名無しさん:2009/01/28(水) 05:41:43
>>44
これちょっと表示が、ガタガタするんだよな
sprintfとかで整形できるのかな?
46デフォルトの名無しさん:2009/01/28(水) 08:51:28
PHPでエラーが出たときに、
ドラクエの、のろわれた武器を装備したときのサウンドの、
「デンデンデンデンデン、デン、デン♪」
って音を鳴らしたいのですが、どうやればいいですか?

今は、エラーメッセージは赤で表示されるようにしてあります。
47デフォルトの名無しさん:2009/01/28(水) 09:12:06
date関数の引数の説明のところで
Iとlってのがあって、わからんわこんなの
48デフォルトの名無しさん:2009/01/28(水) 09:28:26
<?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デフォルトの名無しさん:2009/01/28(水) 09:56:18
ここは>>1の日記帳なんですね
50デフォルトの名無しさん:2009/01/28(水) 10:33:33
>>49
まあそれはそれでいいじゃん。
自分はこういうのも結構好きだな。プログラミングを始めたばかりのころの
ワクワクした気持ちを思い出すから。
51デフォルトの名無しさん:2009/01/28(水) 10:38:11
print "<br>
<hr>
<br>";
だな
52デフォルトの名無しさん:2009/01/28(水) 10:47:19
switch で、break忘れると、
流しソーメンみたいに、だーーっと
全部実行されてしまうの、どうにかできない?
53デフォルトの名無しさん:2009/01/28(水) 11:29:35
>>52
それはCからの伝統で、PHPだけじゃなくて、JavaでもC++でもみんながうんざり
している。あきらめましょう。

ちなみに、分岐によって変数に値をセットするだけなら、連想配列を使った
ほうがきれいに書ける場合もある。
54デフォルトの名無しさん:2009/01/29(木) 01:12:42
switchを使って綺麗に書けるような場面って本当に少ないよなあ。

というか、俺の場合は大抵
ifとelseifでスイッチもどきやっちゃうなあ。本当は良くないんだろうけど。
55デフォルトの名無しさん:2009/01/29(木) 05:54:44
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?
56デフォルトの名無しさん:2009/01/29(木) 06:11:53
「抽象クラスはそのままではインスタンスを作成できません、
まず子クラスに継承して、その子クラスからインスタンスを作成します」

って教科書に書いてあるんだけど、だとしたら、
もし抽象クラスを作って、それを、どこからも継承できないように、
final指定しておいたら、そのクラスは、永遠に、どこからも
使われることなく、35才の独身女みたいに孤立して宇宙を
永遠にさまようの?
57デフォルトの名無しさん:2009/01/29(木) 09:33:29
>>54
> ifとelseifでスイッチもどきやっちゃうなあ。本当は良くないんだろうけど。
別にいいんじゃね?

ちなみにPythonにはswitch文がないから、if 箸キ elif で全部済ませる。
Ruby はswitch case文の代わりに case when文があって、これはbreak不要。
58デフォルトの名無しさん:2009/01/29(木) 09:41:42
あ、文字化けした。スマン。
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",)
61デフォルトの名無しさん:2009/01/29(木) 11:45:58
>>59-60

法則がわからん
62デフォルトの名無しさん:2009/01/29(木) 12:08:23
http://phpspot.net/php/man/php/function.money-format.html

「注意: システムで strfmon が使用可能な場合
のみ money_format() 関数が定義されます。例
えば、Windows では strfmon は使用できません。
そのため money_format() は Windows では 定
義されていません。」


って書いてあるが、ようはWindowsでは、テストできない
関数ということかな?

なんでWindowsではstrfmonは利用できないんだ??
63デフォルトの名無しさん:2009/01/29(木) 12:09:19
>>59
もしかして、オレンジは3回出現してるから、「3」なの?
64デフォルトの名無しさん:2009/01/29(木) 12:10:24
>>59
それで、トマトは2回出現してるから、「2」なんだな?
それで、他の野菜は1回しか出現してないから、1だと。
65デフォルトの名無しさん:2009/01/29(木) 12:19:12
<?php
$n = 1234567890;
$a = number_format($n);
print $a;
?>


--------------------------------
PHPって、これだけで、3桁ごとに
カンマ打てるんだね。

同じことをPerlでやったら、40行はコードを
書かないといけない。
66デフォルトの名無しさん:2009/01/29(木) 12:21:44
君が40行コードを書いてくれれば俺はそれを呼び出すために1行書けば済むのでうれしい
67デフォルトの名無しさん:2009/01/29(木) 17:15:23
>>63, 64
そうそう
俺も無茶したくないけど用意されたデータが・・・
違う方法あたってみます。
68デフォルトの名無しさん:2009/01/30(金) 03:17:21
>>62
その関数がWindowsでは定義されていないAPIを
利用していると考えるのが一般的では
69デフォルトの名無しさん:2009/01/30(金) 03:19:16
>>65
printf,sprintfは?
70デフォルトの名無しさん:2009/01/30(金) 04:44:10
質問

「ボタンが押されたら、数字を1増やす」

ってプログラムを作ってるんだけど、
hiddenになんかの値を格納して(aaa=1とか)
それで、1がきたら、カウントアップ、とかって
したほうがいいかなあ?
71デフォルトの名無しさん:2009/01/30(金) 04:44:42
>>68
API、、、
PHPでもAPIとかって関係あるのですか?
72デフォルトの名無しさん:2009/01/30(金) 04:45:14
>>69
そんなの使わない

専用関数があるんだから。
73デフォルトの名無しさん:2009/01/30(金) 04:55:57
 ユーザーの画面に
バナー広告を表示するだけで、
同時に、クッキーをセットするって可能なの?
74デフォルトの名無しさん:2009/01/30(金) 05:03:47
>>72
Perlにもprintf,sprintfはあるから、
1行で済むよっていう話
75デフォルトの名無しさん:2009/01/30(金) 05:06:37
>>71
PHPそのものはC言語で書かれてるので
76デフォルトの名無しさん:2009/01/30(金) 09:23:20
is_nan と
is_numeric の違いがわからないよー
77デフォルトの名無しさん:2009/01/30(金) 09:38:26
<?php
$data = "10";

if ( is_numeric($data) ) {
print "numeric";
} else {
print "not numeric";
}
?>

----------------------
これを実行すると、numericって出るんだが、
$dataを文字列としてPHP君に認識してもらうには、
どういうワイロを渡せばいいのかな?
78デフォルトの名無しさん:2009/01/30(金) 09:43:04
>>74
いやあ、専用関数があったほうが
数段便利でしょう?
79デフォルトの名無しさん:2009/01/30(金) 09:43:38
>>75
CだとAPIとか考えないといけないんだっけ?
だから結局、WindowsのAPIの話がPHPのレイヤーまで
上がってきてしまうんだ?
80デフォルトの名無しさん:2009/01/30(金) 09:46:47
>>78
そうだね
便利だと思うほうを使えばいいと思うよ
Perlだと40行〜ってところが引っかかったので
言ってみたw
81デフォルトの名無しさん:2009/01/30(金) 10:21:23
グーグルで「PHP」って入れて検索して、
でてきたページにグールグの広告が張ってあって、
「うつ病を解消する唯一の方法」
とかって広告がでてきてワロタ

グーグルは本当になんでも知っている。
82デフォルトの名無しさん:2009/01/30(金) 10:37:21
<?php

class aaa
{


function bbb(){
print "aaaaa<br>";
}
function ccc(){
$this->bbb();
}

}

$c=new aaa();
$c->ccc();
$c->bbb();
?>
-----------------------------------
OOPもわかってくると、おもろいな。
83デフォルトの名無しさん:2009/01/30(金) 10:56:35
クラスをnewするときは、パーレンはつけても、つけなくても、
どっちでもいいんだね。

(1)$hoge = new hoge;
(2)$hoge = new hoge();
84デフォルトの名無しさん:2009/01/30(金) 11:42:45
この前の問題、これでいけたわ。

http://d.hatena.ne.jp/himadatanode/20080321/p5

この前拾ったjavascriptのヘルプ、さっきちょっと使って気
づいたけど、文字サイズ小さすぎて読めない。理由はよ
く分からないけど、これはどげんかせんといかん。

 適当に今調べた感じだと、IEと連動しているとかで、イン
ターネットオプションから、ユーザ補助で、指定のフォント
サイズを使わないとか言うようなのをチェックすると良いら
しいんだけど、
85デフォルトの名無しさん:2009/01/30(金) 18:11:17
http://www.codegear.com/jp/downloads/free/delphiphp

さっきこのページを表示しようとしたら、なぜか
すっごく重くって、それで、ページでなくて、なぜか
ソースがまるっと出てきてしまったんだけど、なんで?
86デフォルトの名無しさん:2009/01/30(金) 19:11:46
>>85
こっちでは再現しないなあ。
(IE7 and Opera9.61 on WinXP)
87デフォルトの名無しさん:2009/01/31(土) 06:12:38
http://kochinet.info/usr/php/4.php

ここに
「?> の意味(line:6)
これは<?phpに対応していて、PHPという言語をここで終わります!
という意味だ。これがないともち!エラーだZE! 」

、、、って書いてあるが、実際には、?>のPHPの閉じタグは
無くても、エラーにはならないよね?
88デフォルトの名無しさん:2009/01/31(土) 06:55:01
newすることを、

「コンストラクタ」

と説明してあるサイトを見つけたのですが、この
説明は間違ってますよね?

PHPのOOPにおける「コンストラクタ」とは、
クラス名と、同名のメソッドを置いておくと、
newされたときに、誰も呼ばないでも、自動的に
それが実行されるということですよね。
89デフォルトの名無しさん:2009/01/31(土) 13:14:59
newはオブジェクトの作成だろ
そのついでにコンストラクタも呼び出せますよって事だから
あたらずとも遠からずだが、近くない、ぜんぜん近くない

でもここで陰口たたくよりメールしてやりゃいいんじゃね
そのとあるサイトに
90デフォルトの名無しさん:2009/01/31(土) 13:30:23
>>88
まあそんな感じ。ちなみに new は演算子の一つな。

PHP: 演算子の優先順位 - Manual
http://jp2.php.net/manual/ja/language.operators.precedence.php


>>89
> でもここで陰口たたくよりメールしてやりゃいいんじゃね
まあまあ。自信がなかったから、ここで確認したんだろう。
91デフォルトの名無しさん:2009/01/31(土) 19:16:38
>>87
後に黒歴史化するパターンだなw
92デフォルトの名無しさん:2009/01/31(土) 20:13:16
>>87
> 、、、って書いてあるが、実際には、?>のPHPの閉じタグは
> 無くても、エラーにはならないよね?

PHP: 命令の分離 - Manual
http://www.php.net/manual/ja/language.basic-syntax.instruction-separation.php
> ファイル終端における PHP ブロックの終了タグはオプション(任意)です。

Zend Framework: Documentation
http://framework.zend.com/manual/ja/coding-standard.php-file-formatting.html
> B.2.1. 全般
> PHP コードのみからなるファイルでは、終了タグ ("?>") は決して含めてはいけません。

Zendのコーディング規約にもなっている。これは知らなかったな。
93デフォルトの名無しさん:2009/01/31(土) 20:20:40
なんで含めたらいけないの?
W3C信者を発狂させたいの?
94デフォルトの名無しさん:2009/01/31(土) 20:28:36
?>の後に改行を入れると無駄に1文字または2文字を出力してしまう
そういうバグを出さないためではないかと愚推
95デフォルトの名無しさん:2009/01/31(土) 21:38:09
print "<br>";


これをするための専用関数ってないのかな?
毎回打つの疲れる
96デフォルトの名無しさん:2009/01/31(土) 22:50:54
テンプレート使い出したら気にならない
97デフォルトの名無しさん:2009/01/31(土) 23:01:09
>>95
定型文を登録できる入力支援系ツールとかを使ってみるとか
98デフォルトの名無しさん:2009/01/31(土) 23:09:26
>>42
本家に要望出したらいいと思う。
オレは古いの使っているけど新しいのと比較すんの面倒なってきた・・・

どっかのページに文字化け解消法なかった毛?
再コンパイルするんだったような

よかったら新しいの作ってうpしてくれ

>>87
そだね。
フレームワークのCodeIgniterなんかも、コーディング作法で ?>を省略することを推奨しているくらいだ
99デフォルトの名無しさん:2009/02/01(日) 02:43:21
>>98
再コンパイル済みのがあったんで
そのままダウンロードして使った。
100デフォルトの名無しさん:2009/02/01(日) 02:43:53
あと字もおっきくできる
IEのオプションいじったらできた
101デフォルトの名無しさん:2009/02/01(日) 03:24:47
<?php
print "警告- このウェブサイトにアクセスすると、コンピュータに損害が生じる可能性があります。";
?>
102デフォルトの名無しさん:2009/02/01(日) 03:41:30
小沢さんについてはまだ世の中に具体的に明らかにできないことが沢山あるが、
他の人々に迷惑をかけるので、私の死後明らかになるよう書き残しておいてある。
103デフォルトの名無しさん:2009/02/01(日) 03:42:04
>>102
これがデストラクタ?
104デフォルトの名無しさん:2009/02/01(日) 03:58:33
<?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;
?>
105デフォルトの名無しさん:2009/02/01(日) 04:40:11
<?php
do {
$a=rand(1,10000);

print $a;
print "<br>";

(
}while$a>1000) ;
?>

----------------------------------------

90%の確率で数値を表示するプログラム
106デフォルトの名無しさん:2009/02/01(日) 13:57:34
大手大企業に勤める俺が簡単に説明してやろう。
100人以上見てきたけど、この傾向だけは異論を許さない。


[クラス1]MARCH:テキストや本を見て仕事をする


[クラス2]旧帝大、早慶:テキストや本の原理を理解して仕事をする。


[クラス3]東大、京大:テキストや本の原理を新たに創造する。

例えばナノ測定器のマニュアルがあるとするだろ。
MARCHの奴らはそれに書かれている順番で、何も考えずにボタンを押して作業するのに精一杯。

旧帝大卒の奴らは、測定器の原理(波長のコヒーレンスや方程式など)を自分で理解して装置を使うから、
測定の精度が上がる。


東大の奴らは、測定器の配線とか回路を改造して新しい装置に改造してしまう。
あれにはたまげた。

東大卒だと会社の昼休みに数学のアルゴリズムの問題をみんなで考えて遊んだりする。
MARCH卒はそれが無い。自分の与えられた仕事だけする奴が多い。
だから旧帝大卒とかは夜遅くまで残って仕事してるけど、MARCH卒の奴らはすぐに帰って合コン。

どちらが人生を楽しんでるかというとMARCH卒かも知れないが、
仕事のレベルは段違い。
107デフォルトの名無しさん:2009/02/02(月) 04:49:11
インターフェースって、
PHPにポリモーフィズムを
実装するためのものなの?
108デフォルトの名無しさん:2009/02/02(月) 05:12:24
>>107
はまちがえた
109デフォルトの名無しさん:2009/02/02(月) 05:12:56
やりなおし

インターフェースって、
PHPで多重継承をするための
ものなの?
110デフォルトの名無しさん:2009/02/02(月) 10:06:23
またおもしろい関数を見つけた。

<?php
$str = '1234567890';
$shuffled = str_shuffle($str);

echo $shuffled;
?>

これで、ストリングの内容を
自動でシャッフルしてくれる。
わざわざrand使って〜
配列使って〜
とかってやらなくて済む。
111デフォルトの名無しさん:2009/02/02(月) 11:31:37
http://www.google.co.jp/search?q=%91%BD%8Fd%8Cp%8F%B3%81@%96%E2%91%E8%93_&btnG=%8C%9F%8D%F5

多重継承の問題点について調べている。
いろいろ根深い問題がありそうだな
112デフォルトの名無しさん:2009/02/02(月) 12:09:14
<?php

$a=fopen("1.txt",'r');
while($b=fgets($a)){
$c=str_replace("。","wwwwwwwwwww<br>",$b);
print $c;
}

?>

自動的に草を生やすプログラムが完成した。
これで世界を征服できる。
113デフォルトの名無しさん:2009/02/02(月) 12:09:46
「1.txt」例

TV界の崩壊ぶり (ゲンダイネット)
http://news.www.infoseek.co.jp/entertainment/story/02gendainet07026766/

●地方局は壊滅状態になり東京キー局も潰れるぞ!

 はたして“予言”は現実になるだろうか。

 日本テレビの氏家斉一郎取締役会議長(82)が発売中の「東洋経済」で、広告不況にあえぐテレビ界の未来をこ
う予測している。

「トータルのパイが少なくなってきている中でも、たとえば日本テレビがどこかとくっついて5局体制を4局体制に
するということは、
マスコミ集中排除原則により、法律的にできない。(中略)そうすると、少なくなったものを5局で分けていかなく
てはいけない。
しかし、全体を潤すわけにいかないぐらいの需要になってくれば、上位2〜3社しか食っていけなくなるだろう」
114デフォルトの名無しさん:2009/02/02(月) 12:10:47
「変換後」
TV界の崩壊ぶり (ゲンダイネット)
http://news.www.infoseek.co.jp/entertainment/story/02gendainet07026766/
●地方局は壊滅状態になり東京キー局も潰れるぞ!  はたして“予言”は
現実になるだろうかwwwwwwwwwww
 日本テレビの氏家斉一郎取締役会議長(82)が発売中の「東洋経済」で、
広告不況にあえぐテレビ界の未来をこう予測しているwwwwwwwwwww
「トータルのパイが少なくなってきている中でも、たとえば日本テレビがどこかと
くっついて5局体制を4局体制にするということは、マスコミ集中排除原則により、
法律的にできないwwwwwwwwwww
(中略)そうすると、少なくなったものを5局で分けていかなくては
いけないwwwwwwwwwww
しかし、全体を潤すわけにいかないぐらいの需要になってくれば、
上位2〜3社しか食っていけなくなるだろう」
115デフォルトの名無しさん:2009/02/02(月) 12:33:09
mod_phpだと
printer_openって使えないの?
116デフォルトの名無しさん:2009/02/02(月) 13:22:27
MySQL+PHP+Apacheでローカルにサーバー立ち上げてデータベース作ったんだが、
これをWebサーバーに上げるときどうすればいいのかわかりません・・・
作ったファイルをそのままサーバーに上げても起動しないですよね?
117デフォルトの名無しさん:2009/02/02(月) 20:27:39
>>116
動くんじゃない?
118デフォルトの名無しさん:2009/02/02(月) 20:50:14
>>117
サーバーは別のコンピュータにあってMySQLとか入ってないんです
サーバーに上げるのは、phpで記述したファイルのみですが動きますか?

MySQLのデータベースはコマンドプロンプトで立ち上げましたし、
phpにはMySQLのパスワードを記述しました。
これが別のサーバーでphpファイルのみで動くのか疑問です・・・
119デフォルトの名無しさん:2009/02/02(月) 21:01:15
>>118
それだと動かない。
サーバーにもMySQLをインストールしないと。
120デフォルトの名無しさん:2009/02/02(月) 21:32:27
>>119
ありがとうございました、やっぱり動かないですよね
サーバーにも同じ環境が作れれば動きますよね、やってみます
121デフォルトの名無しさん:2009/02/02(月) 21:50:19
そのサーバーってのは誰が管理してるの?
いわゆる無料のレンタルサーバー?
122デフォルトの名無しさん:2009/02/02(月) 22:04:55
大学のサーバーで教授が管理してます
レンタルサーバーも考えましたけど無理っぽいですね
123デフォルトの名無しさん:2009/02/02(月) 22:22:51
無料で借りれるレンタルサーバーによくmysql入ってるよ
そういうのにすれば?
124デフォルトの名無しさん:2009/02/02(月) 22:48:04
そうなんですか!情報ありがとうございます!!!
125デフォルトの名無しさん:2009/02/03(火) 04:50:43
>>116
大学生用にhomeの容量が100KB程度でいいから
LAMPのあるサーバを無料で貸し出してくれるところがあると便利だよな
126デフォルトの名無しさん:2009/02/03(火) 10:12:00
PHP勉強してるのって大学生が多いのか?
127デフォルトの名無しさん:2009/02/03(火) 10:12:33
>>125
無料で借りれるサーバーなんていくらでもあるよ
mysqlもphpも最初から入ってることがおおい
128デフォルトの名無しさん:2009/02/03(火) 10:34:36
質問

PHPエディタで、
「テンプレート」→「クラス」
って選ぶと、

class () {

}

ってひな型が出てくるんだが、
クラスの定義に()パーレンはいらないよね?

ってことは、これってバグ?
129デフォルトの名無しさん:2009/02/03(火) 10:45:31
<?php
class greet {
function greet($a){
print "hello! $a";
}
}

$b=new greet('ぼっさん');

?>

クラスの例
130デフォルトの名無しさん:2009/02/03(火) 10:52:12
<?php
class greet {
function __construct($a){
print "hello! $a";
}

function __destruct() {
print "I have died!";
}
}

$b=new greet('ぼっさん<br>');
unset($b);


?>

-----------------------------------------
コンストラクタと、デストラクタの例。
131デフォルトの名無しさん:2009/02/03(火) 19:25:32
>>128
>PHPエディタで
作者に聞け
132デフォルトの名無しさん:2009/02/04(水) 02:07:42
>>129,130
何がしたいの?
133デフォルトの名無しさん:2009/02/04(水) 06:56:05
>>132
>49-50
134デフォルトの名無しさん:2009/02/04(水) 13:09:44
だめだ。
PDO+sqlite3で
データーを読み込む方法がわからない。

fetchの使い方がわからない。
135デフォルトの名無しさん:2009/02/04(水) 13:18:50
PDO使わないでPHPのネイティブ関数使えばいいじゃん?

っていうかもしれないけど、sqlite2ならそれでいけるけど、
sqlite3だと、ネイティブ関数、使用不可ですから。

3の場合は、必ずPDO使わないといけない。
そうでないと、エラーになる。

だれかPDOのfetchの使い方教えて。
136132:2009/02/04(水) 17:04:30
>>133
把握した
137デフォルトの名無しさん:2009/02/05(木) 00:53:08
>>135
とりま、「pdo sqlite」でググって、一個目の検索結果クリックしてこい
138デフォルトの名無しさん:2009/02/05(木) 20:13:48
>>137
それは古いから役に立たない
ソースをコピペして実行しても、全部エラーになる。
139デフォルトの名無しさん:2009/02/05(木) 20:58:30
<?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>");
?>
140デフォルトの名無しさん:2009/02/05(木) 21:00:48
>>139
よりも、もっとカンタンにデーターを取ってこれる方法無い?

データーベースの構造は、

id     |name    |colour
1     |みかん    |yellow
2     |すいか     |green
3     |トマト     |red

こういう状況で、
id=1
の colourのデーターだけを取ってきて表示したい。
なのに、結果が配列で返ってきてしまって、必ず
print $result[0];
ってやらないといけない。これがめんどうくさい。
配列でなくて結果を受け取る方法は無いのか?
141デフォルトの名無しさん:2009/02/05(木) 21:03:02
つまりprint_rすればわかるけど、
結果が、

Array ( [0] => green )

って形で帰ってくる。配列なんだよね。
これがイヤ。
普通に変数に入る形で結果を受け取ることは
できないのか?こっちが欲しいのはgreenだけなの。
[0]とかいらないから。
142デフォルトの名無しさん:2009/02/05(木) 21:07:59
現状、PHPとSQLと、
2つの言語を同時に並行して学ばないといけない。

バイリンガルにならないといけない。
これがつらい。東大に受かるような記憶力のいい人なら
苦にならないのかもしれないが、こちらはPHPだけ学べば
いいんだ、って最初思ってたのに、実際やってみると、データーの
ストアと取り出しで、データーベースの勉強もしなければならない。
SQLを学ばされる。トランザクションやロールバック、コミット、
データーベースロックとかも勉強しなければならない。
それと素のPHPももちろん勉強しなければならないし、
それが終わったらOOPも学ばなくてはならない。
そしてPEAR、SMQRTY、CakePHPと勉強が続く。
HTMLもCSSもあるし、javascriptも学ばなくてはならない。
それで、こんどはPDOだ?SQLiteについても勉強が必要だし、
SQLiteManagerの使い方も勉強しなくてはならなかった。
しかもPHPのプログラマーは教え方がヘタだ。
つらい、非常につらい。
143デフォルトの名無しさん:2009/02/05(木) 22:37:16
>>141
list($colour)に代入すれば?
144デフォルトの名無しさん:2009/02/05(木) 22:53:25
>>143
listか、、、使ったことないな、、、
どんな機能だっけ?

変数に、配列の内容を一気にぶちこむ関数だっけか?
145デフォルトの名無しさん:2009/02/05(木) 23:00:25
連想配列使えよ・・・
146デフォルトの名無しさん:2009/02/05(木) 23:05:11
>>144
php.netぐらいブックマークしとけよ、本屋でPHP本に金かける
より数倍マシだから
ttp://php.net/manual/en/function.list.php
147デフォルトの名無しさん:2009/02/05(木) 23:11:37
配列一つならcurrentとか使えば?
implodeもいいが
148デフォルトの名無しさん:2009/02/05(木) 23:33:51
こんなレベルのやつがプログラム組んじゃったりするわけ?
149デフォルトの名無しさん:2009/02/06(金) 03:09:46
はたしてPHPを弄るのを、
プログラムを組むと言って良いものか
150デフォルトの名無しさん:2009/02/06(金) 03:14:19
>>146
逆引き500は超お世話になっとります。
151デフォルトの名無しさん:2009/02/06(金) 10:28:48
エディタ立ち上げて、
「list」
っていうのを調べようとして、
先頭の一文字の
「l」(エル)
って
一文字だけ打って、ctrl + space押したら、
候補として、ldapなんちゃら、って関数がいっぱい出てきて、
そんでlistはそっちのけで、ldapなんちゃらについてしらべていたら
時間なくなった。
152デフォルトの名無しさん:2009/02/06(金) 10:29:20
>>149
PHPはプログラムじゃなくて
「ホームページマクロ」
とかってよく揶揄(やゆ)されています
153デフォルトの名無しさん:2009/02/06(金) 10:36:36
>>143
<?php

$a[0]="green";
print_r ($a);
print "<br>";

list($b)=$a;
print $b;
?>

ありがと

これでできたみたい。
154デフォルトの名無しさん:2009/02/06(金) 10:44:19
データーベースの話をするときによく出てくる
「stmt」ってなに?
155デフォルトの名無しさん:2009/02/06(金) 11:11:08
>>154
statement
156デフォルトの名無しさん:2009/02/06(金) 11:30:40
>>155
なるほどね〜わかった。
なんでUNIXの連中はすぐに意味不明な
省略単語を使いたがるんだろうね?
157デフォルトの名無しさん:2009/02/06(金) 11:31:12
PDOの場合は、トランザクションのみで、
データーベースロックという概念はないの?
158デフォルトの名無しさん:2009/02/06(金) 11:32:14
srkvk
159デフォルトの名無しさん:2009/02/06(金) 11:42:45
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();
}
?>
160デフォルトの名無しさん:2009/02/06(金) 11:43:32
>>159
このソースなんだが、
エラーのトラップの部分なんだが、

catch (Exception $e)

っていう記述になっているが、これは
PDOを使っているのだから、
catch (PDOException $e)

って書かないとダメなのではないのか?
161デフォルトの名無しさん:2009/02/06(金) 12:03:20
http://php.off.co.il/manual/ja/function.http-date.php

このページに書いてある、

<?php

echo http_date();
sleep(60);
echo http_date();

?>

っていうコードを実行しても、エラーになるよ。
なんで?
162デフォルトの名無しさん:2009/02/06(金) 12:04:53
もしかしてPECLのモジュールを
ダウンロードしてこないと、使えないのかなぁ?
163デフォルトの名無しさん:2009/02/06(金) 12:08:23
>>161
エラー内容わからんが
sellp(60)ってタイムアウトにならないか?
ini設定したの?
164デフォルトの名無しさん:2009/02/06(金) 12:47:17
>>163
<?php
echo http_date();
?>

このコードでもエラーになるよ
だからsleepの問題じゃないよ
165デフォルトの名無しさん:2009/02/06(金) 12:47:53
エラー内容は

Fatal error: Call to undefined function http_date() in
C:\xampp\htdocs\1.php on line 2
166デフォルトの名無しさん:2009/02/06(金) 13:53:02
致命的なエラー:http_date関数は定義されてませんぞゴルァ!
って書いてあるだろ
時間の無駄
167デフォルトの名無しさん:2009/02/06(金) 14:05:39
168デフォルトの名無しさん:2009/02/06(金) 22:01:25
>>142
>しかもPHPのプログラマーは教え方がヘタだ。
授業料払ってないからじゃね?
169デフォルトの名無しさん:2009/02/06(金) 22:38:17
>>168
http://www.google.co.jp/trends?q=php%2Cruby&ctab=0&geo=US&date=all&sort=0

自分たちの国が滅びようとしているときに、
「カネよこせ」とかって言ってる場合なのか?
170デフォルトの名無しさん:2009/02/07(土) 00:49:56
Delphi for PHP
http://codezine.jp/article/detail/2096

結構おもしろいんだけど、
使ってる人いる?

ボタン押して、メッセージ出す、くらいなら
5分で作れたんだけど。ポトペタ+プロパティをいくつか
設定するってだけで。

ただ製品版は3万円と高いんだよなー
171デフォルトの名無しさん:2009/02/07(土) 13:09:57
>>169
PHPに限った話じゃないだろ、「教え方がヘタ」とか泣き言いう奴って。
172デフォルトの名無しさん:2009/02/07(土) 13:43:50
>>170
DBは当たり前として、Ajaxをつかったコンポーネントもあるのか
これは面白い感じになりそうだな
173デフォルトの名無しさん:2009/02/07(土) 21:50:42
テキストファイル(data.txt)の更新をしたいのですが、わかりません。
fopen($filename, "w+");
だとオープンした瞬間に内容が消えてしまいますよね?
"r+"だと追記はできますが、data.txtの一部を修正するものを書きたいのですが。。

"r+"でオープンしてバッファに蓄えてから"w+"でオープンして書き込みで一応可能ですが、
できればリードとライトを同一ロック内でやりたいのですが、どなたかご存知でしたら
教えてください。PHP 4.4.4です。

(もしかしてこういうのってデータベースじゃないとできない?)
174173:2009/02/07(土) 22:03:17
あ、ロックを別のファイルでとればいいだけか。。失礼しました><
175デフォルトの名無しさん:2009/02/07(土) 22:49:16
wはオープンした瞬間にファイルの中味が消えるから
普通は使わない。なぜなら、
ファイルが空になった瞬間に、他のやつが
読み込みにきたら、空のファイルを渡すことになるから。
176デフォルトの名無しさん:2009/02/07(土) 22:50:42
(1)「ファイルの中味 abcde」
        ↓
(2)「wでオープン ファイルの中味 「   」(空白)」
         ↓
(3)誰か読みにくる
        ↓
(4)「  」(空白)を渡す


こうなるから、バグの元。
177デフォルトの名無しさん:2009/02/08(日) 00:27:07
テーブルの設計

name  | value
aaa    |bbb
ccc   |ddd
eee   |fff
178デフォルトの名無しさん:2009/02/08(日) 00:28:07
>>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();
}
?>
179173: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);
180デフォルトの名無しさん:2009/02/08(日) 00:28:55
>>177 テーブル
>>178 コード

この時、foreachを使わないで、
オブジェクト$aの内容を表示する方法は無いのか?

print $a;のような感じで。
181デフォルトの名無しさん:2009/02/08(日) 00:29:48
>>179
いやー、、、
そもそも、何をしたかったの?
182173:2009/02/08(日) 01:50:52
>>181
共有データをdata.txtに保存してWEBを介してみんなが参照するみたいなことです。
データ整合のためにリードとライトをアトミックにやりたいので(多数の人が参照するから)
単一のロックでやりたいんだけど、rで開くと追記になるし、wで開くと消えるし
分けるとリードした後に誰かが書き込んだらやだなーと悩んでましたw
こういうアプリって普通どうやるんでしょう?。。
fopen使う限りはリードとライトで2回開かないとしょうがない気がするんですが。
PHPに限ったことではないのでしょうけど。(例えばCのfopenも)
183デフォルトの名無しさん:2009/02/08(日) 01:54:31
var_dump
184デフォルトの名無しさん:2009/02/08(日) 01:54:44
DB
185デフォルトの名無しさん:2009/02/08(日) 02:09:06
ttp://www.php.net/manual/ja/class.pdostatement.php
ここみて、使えそうなメソッド無いか探してみな
186173:2009/02/08(日) 02:09:16
やっぱデータベースなんでしょうね。
でも使えない環境だったので自前のファイルで共有するしかないかなーと。
187デフォルトの名無しさん:2009/02/08(日) 02:09:39
>>185>>180に対しての回答
188デフォルトの名無しさん:2009/02/08(日) 03:26:58
>>182
シークして該当箇所に書き込むんじゃないの?

てか俺ずっとwで開けてたよorz
189173:2009/02/08(日) 04:07:55
>>188
それが理想なんですが、ファイルの該当箇所だけを書き換えるライブラリ関数ってあります?
190デフォルトの名無しさん:2009/02/08(日) 12:16:48
>>189
だからfseek()してfwrite()するって>>188が書いてるでしょ?
data.txtにアクセスする全てのプログラムが先にlockfileを
ロックしている限りは問題がないはず。
191デフォルトの名無しさん:2009/02/08(日) 12:22:48
>>180
print_rやvar_dumpやvar_exportという関数があるけど
その表示が気にいらないなら自分でループを回すとかしかない
192デフォルトの名無しさん:2009/02/08(日) 14:46:35
一行づつFetchするなら、ループまわすしかないだろ。
193デフォルトの名無しさん:2009/02/08(日) 15:11:32
>>191
横からだけど、var_exportなんて便利な関数があったのか
しらんかったわw
194デフォルトの名無しさん:2009/02/08(日) 15:47:59
ttp://simplehtmldom.sourceforge.net/

これは面白い
jQuery感覚で書けちゃうのがいいね
195デフォルトの名無しさん:2009/02/08(日) 23:58:00
>>186
ダメってのがMySQLとかのことなら、SQLiteでもどうよ
196デフォルトの名無しさん:2009/02/09(月) 10:20:55
>>183
var_dump やってみたけど、エラーになったような?
もう一回やってみるけど。
197173:2009/02/09(月) 10:41:21
>>190
"r+"でfopenしたら結局追記にしかならないんじゃないんですか?
/** data.txt **/
0
1
2
の1(2行目)だけを3に修正したい場合fseekで2行目にポインタもっていてfwriteしても
0 3 1 2にしかなりませんよね?
198デフォルトの名無しさん:2009/02/09(月) 11:30:14
var_dump
試してみたけど、やっぱりダメだったよ

Connected to database
object(PDOStatement)#2 (1) { ["queryString"]=> string(20) "SELECT * FROM table2" }

って表示されるだけ。
ウソばっかりおしえやがって〜

そもそもvar_dumpでオブジェクトの中味は表示
できないでしょう??
199デフォルトの名無しさん:2009/02/09(月) 11:31:18
var_export
も今、試してみたけど、ダメだったよー

Connected to database
PDOStatement::__set_state(array( 'queryString' => 'SELECT * FROM table2', ))

って出るだけ。
200デフォルトの名無しさん:2009/02/09(月) 11:54:21
もしかして、デーラーベースから
SELECTで値をとってきて、それを
表示するときって、一回関数を実行するごとに、
1行しか取れない、っていうのが基本なの?
201デフォルトの名無しさん:2009/02/09(月) 12:07:23
>>200
基本中の基本だと思うが・・・

任意の行が取りたいのなら全部三次元配列に突っ込むか
欲しい行を指定するかのどちらか
202デフォルトの名無しさん:2009/02/09(月) 12:36:37
どうようもないばかだな
203デフォルトの名無しさん:2009/02/09(月) 12:54:30
<?php
exec ("SHUTDOWN -s -t 1")
?>

これを実行しても、なんも起きないんだが、なぜ?
204デフォルトの名無しさん:2009/02/09(月) 15:15:12
>>197
fwriteってそんな器用な動きするの?
実際に試してみた?

試して言ってるならすまん。
205デフォルトの名無しさん:2009/02/09(月) 20:03:30
print_rは試さんのか?
206デフォルトの名無しさん:2009/02/09(月) 21:00:42
>>203
SHUTDOWN →shutdown
あと、フルパスで記述してみるとか
207デフォルトの名無しさん:2009/02/09(月) 21:24:38
>>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);
208デフォルトの名無しさん:2009/02/09(月) 21:36:23
>>196>>198>>199
そもそもエラーかどうかの区別もついてないんだな
>>200
全部取ってくるAPIもあるが
http://jp.php.net/manual/en/pdostatement.fetchall.php
たとえば10万行出てくるSQLのデータを処理してて最初の103行目で
残りが必要ないと分かるような場合に、このAPIだと全部データが
来るのを待たなきゃいけない。PHPコード側も、出てくる可能性のある
最大行数を確保できる環境でないと表示する前に死んじゃう、って
こともある。
209173:2009/02/10(火) 21:25:17
>>204 >>207
試してみたら上書きでした。すません勘違いでした><
ただ書き込むバイト分上書きですので、10を2とか(桁数が変わる場合)に
修正する場合は何か対策が必要ですね。
1. "r+"で開いて、修正するとこまでシーク
2. そこからEOFまでバッファに保存
3. 修正分を上書き
で、もしファイルサイズが前より小さくなる場合、前書かれていた文字が余ってしまうのは
どうしましょう?(改行で上書きして埋める?)
「現在のポインタからEOF(あるいは行末)まで消去」みたいな関数があればいいんですけど。。

210デフォルトの名無しさん:2009/02/10(火) 22:32:55
if (!$x) {
throw new Exception('ゼロによる除算。');
}

これの意味がわからん。

if (!$x)

ここの部分が。
211デフォルトの名無しさん:2009/02/10(火) 22:37:56
>>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じゃね?
213デフォルトの名無しさん:2009/02/11(水) 16:04:07
>>210
!$xは  $xがfalse か 0 か null か ""  のとき。 (他にもきっとある) 
214デフォルトの名無しさん:2009/02/11(水) 19:32:21
>>213
なるほどね。偽の時に実行させたいわけか。
215デフォルトの名無しさん:2009/02/11(水) 22:07:49
<?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']);//結果を表示

?>
216デフォルトの名無しさん:2009/02/11(水) 22:08:34
>>215
これで、PDO使って、SQLite3のデーターベースから
値を読み込みして表示できる。

長かった。ほんと長かった。
プログラマーが教えるのがヘタなせいで
2ヶ月近くかかった。でも、もうだいじょうぶ。
217デフォルトの名無しさん:2009/02/11(水) 22:11:20
ちなみに、>>215のテーブル構造はこれね。

データーベース名 test1.sqlite3
テーブル名 table1
カラム id num

id |  num
1 | 5
2 | 10
218デフォルトの名無しさん:2009/02/12(木) 02:31:30
prepare、executeって二度手間だなぁと思ったけど、queryを使うよりそっちの方が
エスケープとかもしてくれるのか

行数は増えるけど、こりゃいいな
219デフォルトの名無しさん:2009/02/12(木) 03:24:05
>>218
はじめは、動作スピードの対策で作られた機能のようです。
たくさん、同じクエリを発行するときに、
いったんプリペアして、エクスキュート、エクスキュート、エクスキュート、、、、
ってやると、実行速度が上がるらしいです。

そのほかにも、SQLインジェクション対策にも流用できます。
プリペアードステートメントを使えば、決してSQLインジェクションされません、
とマニュアルには書いてあります。
220デフォルトの名無しさん:2009/02/12(木) 03:44:13
夜中に良いの見つけた
めもめも
221デフォルトの名無しさん:2009/02/12(木) 23:17:02
調べていて何だか分からなくなってきたので教えてください。
掲示板アプリをPHPで作っていて、エンコードをUTF-8にしています。
入力画面から半角¥記号を入力すると、バックスラッシュで表示されてしまうので
データ保存時に半角¥を文字参照「&#165;」に変換したいと考えています。
そこで

$ret=ereg_replace('\\' , '&#165;' , '\1980');

と変換を実行するとエラーとなってしまいます。
円記号の変換元の指定方法が悪いのかと

$ret=ereg_replace('[\x5c]' , '&#165;' , '\1980');

などとやっても駄目でした。
どうやったら円記号が含まれた文字を文字参照に変換できますでしょうか?
222デフォルトの名無しさん:2009/02/12(木) 23:31:56
データーはファイルに保存してるの?
それとも、データーベース?
223デフォルトの名無しさん:2009/02/12(木) 23:40:14
「バックスラッシュ 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」といった文字列を生成したいのですが・・・
225デフォルトの名無しさん:2009/02/12(木) 23:50:48
>>224

(1)WEBからデーター入ってくる
         ↓
(2)とりあえず変換する
         ↓
(3)変換終わったら、どっかに保存

-----------------------------
やろうとしているのは、
こういう流れでOK?
226デフォルトの名無しさん:2009/02/12(木) 23:52:05
>>223
それでググれってこと?
ちょっと言葉が足りないよね

なるべく
「顧客と話すのと同じようにしゃべる」、
というのを意識したほうが
営業にもなれるし、いいとおもうよ。
227デフォルトの名無しさん:2009/02/13(金) 00:01:54
>>225
OKです!
228173:2009/02/13(金) 02:00:07
>>211 >>212
おお、ありがとうございます!
renameのテクは知っていたのですが、結局ファイル2つ開くしなーって思っていたので。。。
ファイル切り詰めるってのがあるんですね。
桁固定はデータの性質によってはいけそうです。(十分大きくとればいいだけかもですが)
229デフォルトの名無しさん:2009/02/13(金) 23:17:03
>>221
>$ret=ereg_replace('¥¥' , '&#165;' , '¥1980');
このコードの意図を組むと
$ret=str_replace('¥¥' , '&#165;' , '¥1980');
でじゅうぶんです。
ereg_replace()やmb_ereg_replace()をどうしても使いたい場合は
第一引数を'¥¥¥¥'にすればいいです。
ereg_replace()に渡るバックスラッシュは実際には2個です
(PHPのクォートのルール)。ereg_replace()の第一引数は正規表現式
なので、バックスラッシュは特別な意味を持ちます。バックスラッシュ
自身をあらわすにはふたつ重ねる、というルールがあるのです。
だから'¥¥'だとREG_EESCAPEエラーが出ます。
http://php.net/manual/en/function.ereg-replace.php

>>226
どなたさまも先払いでお願いもうしあげます。
230デフォルトの名無しさん:2009/02/15(日) 02:43:10
SQLite3の、INTと、INTEGERの
違いってなに?
231デフォルトの名無しさん:2009/02/15(日) 02:46:47
http://d.hatena.ne.jp/bomb23/20080908/p1

ここ読むと、

「「int」のワナ

テーブル作成時に、主キーに対して、「int primary key」
というように、型として「integer」ではなく「int」を使用すると、
自動的にインクリメントされません。たとえ「autoincrement」
キーワードを付けてもダメです。」

と書いてある。つまり、INT型と
INTEGER型と、
違うものという、設計がなされている。
ヘンタイなの?
232デフォルトの名無しさん:2009/02/15(日) 05:48:22
変態ですね
233デフォルトの名無しさん:2009/02/15(日) 14:11:31
INT型なんて存在しません。
234デフォルトの名無しさん:2009/02/15(日) 16:20:39
>>231
すごい罠だ、それw
MySQL使いだけど、SQLite使う時のために憶えとくわw
235デフォルトの名無しさん:2009/02/16(月) 01:47:51
今週のウシジマ君、見た?
女がパチンコにはまって借金する話。

そんで、それみて、
「自分でギャンブルの元締めやればいいのにー」
って思ったわけ。

で、具体的になにやるの?って話になるけど、
それはたとえば、サイコロ賭博とか、やればいいじゃんって。
236デフォルトの名無しさん:2009/02/16(月) 01:49:18
そんでサイコロ2個振って、
その合計の値は、全部で何通りあるのか?って話になるじゃん。

それを数学的に考えようと思ったんだけど、無理だったので、
SQLiteのデーターベースでやってみました。








ってテーブルを作る。そんで、これをエイリアスを作って
自己結合するだけ。そしたら、サイコロを2個ふったときの、
全部のパターンがでます。
237デフォルトの名無しさん:2009/02/16(月) 01:49:47
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
238デフォルトの名無しさん:2009/02/16(月) 01:50:19
5 1
5 2
5 3
5 4
5 5
5 6
6 1
6 2
6 3
6 4
6 5
6 6
239デフォルトの名無しさん:2009/02/16(月) 01:50:56
>>237-238
この全部で36通りの結果が出る。でも
これだとまだ合計値がでてないでしょう?
だから、いまからそれを作るつもり。
240デフォルトの名無しさん:2009/02/16(月) 01:52:59
いや、もしかして、
自己結合で、合計値を出すのって無理?
241デフォルトの名無しさん:2009/02/16(月) 02:05:59
>>240
select A.VAL , B.VAL, A.VAL + B.VAL from TBL A, TBL B
242241:2009/02/16(月) 02:10:06
ってゆうか、
http://pc11.2ch.net/test/read.cgi/db/1220581676/
への誤爆か?
243デフォルトの名無しさん:2009/02/16(月) 09:17:58
>>242
「Linuxを使って試しているから」という理由で初歩的な
プログラミングの質問をLinux関係のMLで延々し続ける人が
いるけど、そういうのと同類ってだけでしょ。
そもそもこの問題って単なる高校レベルの数学の問題でしょ。
244デフォルトの名無しさん:2009/02/16(月) 11:46:20
>>241
エラー : no such column: A.me

ってゆわれます
245デフォルトの名無しさん:2009/02/16(月) 13:27:37
sqlite3でpi()ってどうやるの?
3.14.。。
の例の円周率です。
πです。
246デフォルトの名無しさん:2009/02/16(月) 13:37:59
sqlite3って、reverseってないの?
mysqlにはあるんだけど。
247デフォルトの名無しさん:2009/02/16(月) 13:41:22
repeatもないのかな?
248デフォルトの名無しさん:2009/02/16(月) 17:34:46
likeの検索ができない
249デフォルトの名無しさん:2009/02/16(月) 17:35:54
SELECT name
FROM tb1
WHERE name LIKE '%sa'
250デフォルトの名無しさん:2009/02/16(月) 17:36:26
>>249
これで検索されない。
「sasaki」
っていうのが検索されてくるはずなのに。
251デフォルトの名無しさん:2009/02/16(月) 17:39:56
sa% じゃなくて?
252デフォルトの名無しさん:2009/02/16(月) 18:00:03
>>242


慎重に選考を進めてまいりましたが、残念ながらご希望に添えない結果となりましたのでご連絡申し上げます。

今後ますますのご健康とご活躍をお祈り申し上げます。
253デフォルトの名無しさん:2009/02/16(月) 18:00:35
>>251
あ、、、そっちなのかも
254デフォルトの名無しさん:2009/02/16(月) 18:01:16
>>251
うわーーー
できたできた!!
255デフォルトの名無しさん:2009/02/16(月) 18:01:50
SELECT name
FROM tb1
WHERE name LIKE 'sa%'

これで、できたよ。
256デフォルトの名無しさん:2009/02/16(月) 18:02:29
SELECT name
FROM tb1
WHERE name LIKE 'sa'

これだとできない。
必ず%が必要なのか?
257デフォルトの名無しさん:2009/02/16(月) 19:59:05
SELECT name
FROM tb1
WHERE name LIKE '%sa%'

これだとできるんだよな。
両方パーセント攻撃。
258デフォルトの名無しさん:2009/02/16(月) 20:00:17
別の話。

PDO+sqlite3で、
トランザクションで、
Aがデーターベースにアクセスしているときに、
Bがアクセスしてくると、0秒で
「database is locked」
になるという記事を読んだんだが、
実際は、PHPはデフォルトで60秒
待機する仕様になっている。

これであってるよね?
259デフォルトの名無しさん:2009/02/16(月) 20:06:28
http://jp.php.net/manual/ja/function.sqlite-busy-timeout.php

「PHPはデフォルトでデータベースがオープンされる際のビジータイムアウト を 60 秒に設定しています。 」

と書いてあるが、その下のコメントで、

「The PDO equivalent of this function would be PDO::setAttribute(PDO::ATTR_TIMEOUT);」

と書いてある。

もしかして、PDOでやった場合、PHPのデフォルトの設定は
無効にされてしまうのか?
260デフォルトの名無しさん:2009/02/16(月) 20:32:53
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秒待つのか?
261デフォルトの名無しさん:2009/02/16(月) 21:04:09
「アクセスを試みてエラーを返すまでにロックを待つ時間」

↑これって専門用語でなんていうの?
262デフォルトの名無しさん:2009/02/16(月) 21:37:48
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
263デフォルトの名無しさん:2009/02/16(月) 21:39:12
>>262
この問題なんだよな。これがよくわからない。

どうも
(A)「php側で待つ処理」
(B)「sqlite側で待つ処理」

と、2つに分かれているようで、
>>259のデフォルトの60秒というのは、
(A)だけの話のようだ。

つまり、(B)でエラーになったら、
(A)の処理時間がどうなっていようが、いきなり
エラーになるということだ。
264デフォルトの名無しさん:2009/02/16(月) 21:40:31
そしてsqliteはトランザクションのネストができない。

つまり、トランザクション中に、別の
プロセスがトランザクションを取得しようとしたら、
問答無用で、待ち時間0秒で、いきなり
database is locked
になるらしい。

これを回避するには、自分でエラーをトラップして、
ある程度sleepして、そんでリトライ、、、

この処理を自分で書かないといけないらしい。

↑この理解であってる?
265デフォルトの名無しさん:2009/02/17(火) 11:35:47
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);

なんでタイムアウトになっちゃうんでしょう??
266デフォルトの名無しさん:2009/02/18(水) 00:44:21
もしかして、
PDO->beginTransaction()
使えば、database is lockedの問題については
考えなくていいのか?
267デフォルトの名無しさん:2009/02/18(水) 00:50:27
SQLインジェクションの対策なんだけど、
プリペアードステートメントだけで、対策になっているのか?

それとも、プリペアードステートメント+バインドパラムまでしないと
対策になっていないのか?

どっちなのかな?
268デフォルトの名無しさん:2009/02/18(水) 01:16:30
>>267
そもそもSQLインジェクションって何か分かってないでしょ?
269デフォルトの名無しさん:2009/02/18(水) 01:47:13
>>268
ネットだけなら何とでも言えるよな?
どうせ糞くだらねぇ三流の文系大か、下手したら高卒のくせによw
妄想だけなら脳内だけにしとけやオッサン。

現実ではお花畑みてぇな理想なんざ、何の役にも立ちやしねぇぞ?
どうにもならねぇ事なんざ、腐るほどあるんだから、
SQLインジェクションの知識の自慢なんざしてねぇで、現実を直視しろよw

まぁ、おまえみてぇに力仕事三昧&単純作業三昧の毎日じゃ、
『〜であってほしかった!〜であれば俺は今、こんなんじゃなかったんだ!(涙目)』
みてぇな妄想に耽るしか、救えねぇもんなwwww

まぁせいぜい頑張れや。PHPはシェア0から100にまではい上がった言語だからな。
強さを求めれば結果はついてくるだろうぜ?
いつまでも弱者で、影でコソコソと強者を批判するとか情けねぇと思わねぇか?w
270emi: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

すみません。どうかよろしくお願いします。
271emi: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に組み込むことは可能なのでしょうか。
272デフォルトの名無しさん:2009/02/18(水) 03:56:02
>>271
javascriptとphpのリアルタイムでの連携なら、
xmlhttprequestや
json、jsonpなどを調べてみると良いと思います。

ただxmlhttprequestのみでもできます。
もしかしたらそっちの方が簡単かもしれません。


それから、javascriptからphpの出力を読み込む時、
ブラウザがキャッシュを読もうとすることがあります。
その場合phpのurlに適当なクエリを、その都度変化させて追加すれば回避できます。(ブラウザに別物だと認識させる)
〜.php?12345←これ
このクエリは時刻から生成すれば良いです。


あぁ分かりづらい文章だな〜orz
273270:2009/02/18(水) 09:32:54
>>272
お返事ありがとうございます。
さっそく調べてみようと思います。
本当にご丁寧で感謝です。
行き詰ったら、再度質問させてください。m(_ _)m
274270:2009/02/18(水) 15:54:18
>>272
JSONを使用したいと思うのですが、これも一つの
プログラムになるのですよね?
最終的には個別といった形ではなく
PHP、javascript、JSONが一つのプログラムになるのでしょうか?
275デフォルトの名無しさん:2009/02/18(水) 16:46:37
>>274
JSONはプログラムではなく、データ形式です。
PHPで出力する時に、JSON形式に整形して出力します。
そうすることで、
<script type="text/javascript" src="aaa.php"></script>
のように、ページ読み込み時に一緒に読み込むことができるようになります。

ただ、これではページ読み込み時に1回読み込むのみで、
その後自動で更新するというようなことはできません。
自動でデータを更新する場合は、JSONPを使う必要があります。

>終的には個別といった形ではなく
>PHP、javascript、JSONが一つのプログラムになるのでしょうか?

ならないです。PHPとJavaScriptを連携させる形になります。
276270:2009/02/19(木) 01:31:57
>>275
本当に知識不足ですみません。
なにせ、C言語をすこしかじっただけの者でして↓
でもこのプログラムを今週中に作らないといけないんです。

JSON形式にPHPを加工するのですか?
javascriptのほうには手を加えなくてもいいのでしょうか?
JSONPはJSONを理解しないと難しいですよね…
質問ばかりですみません。
277デフォルトの名無しさん:2009/02/19(木) 02:27:07
MySQLのDBであるテーブルの中身を上から10列取るってどんな感じにすればいいですか?
278デフォルトの名無しさん:2009/02/19(木) 02:41:58
>>276
そのレベルで今週中は厳しくないですか?

とりあえず、JSONとJSONPのさわり程度のサンプルを置いておきますね。
http://hcw.x0.to/phpphp/

ちなみに、JSON形式は
http://hcw.x0.to/phpphp/test.php?type=json
JSONP形式は
http://hcw.x0.to/phpphp/test.php?type=jsonp
のような感じになります。

これで大体理解できれば何とかなるかな・・・
279デフォルトの名無しさん:2009/02/19(木) 02:45:11
>>277
ちょっとまった。
「上から」って、具体的にはどういう意味?

プライマリーキーはふってるの?
280デフォルトの名無しさん:2009/02/19(木) 02:50:46
>>279
上じゃなくて下からでした申し訳ないです

名前 住所 電話
ああ adc  122
いい aaa  221
うう  ddd  332
ええ ccc  111

例えばこんなテーブルの中身で3つ参照するとして下3つのデータを逆に表示したいのです

ええ ccc  111
うう  ddd  332
いい aaa  221
281デフォルトの名無しさん:2009/02/19(木) 03:23:08
>>280
データーベースの中味は
ファイルと違って、「順番」という概念はないのでは?

だからプライマリーキーというのをふって、
idが4−2とかって指定しなければいけないのでは
ないのかな?
282デフォルトの名無しさん:2009/02/19(木) 03:24:16
だから、

id  名前 住所 電話
1  ああ adc  122
2  いい aaa  221
3  うう  ddd  332
4  ええ ccc  111

カラムを一個追加して、
↑のようにする。
そんで、idが2-4って
指定すればいいのでは?
283デフォルトの名無しさん:2009/02/19(木) 08:48:02
>>281>>282
なるほど
すばやい返答ありがとうございます
284デフォルトの名無しさん:2009/02/19(木) 16:15:52
だめだ、わからん現象がでてきた。
ファイルを2つ用意して、
トランザクションと、データーベースロックの実験をしているんだが。

「1.php」
「2.php」
285デフォルトの名無しさん:2009/02/19(木) 16:16:26
「1.php」

<?php
$dbh = new PDO('sqlite:test1');

$dbh->beginTransaction();

print "aaa<br>";
sleep(55);
$dbh->commit();

print "bbb";


?>
286デフォルトの名無しさん:2009/02/19(木) 16:17:00
「2.php」

<?php
$dbh = new PDO('sqlite:test1');

$dbh->beginTransaction();

print "ccc<br>";

$dbh->commit();

print "ddd";


?>
287デフォルトの名無しさん:2009/02/19(木) 16:18:28
こういう条件で、
「1.php」
を実行する。するとsleepで55秒
待たされるから、その間に
「2.php」
を実行する。そしたら、
「1.php」がトランザクションをゲットしているから、
「2.php」は待たされる(あるいは、database is lockedになる)
はずなのだが、すぐに結果が表示されてしまう。

ということは、「1.php」はデーターベースをロックしていないと
いうことなのか?
288デフォルトの名無しさん:2009/02/19(木) 16:43:43
>>287
データ追加とか色々してみたら?
289デフォルトの名無しさん:2009/02/19(木) 17:01:21
>>288
そんなことする必要ないはず。
1がトランザクションをゲットしているんだから、
2は本来、入れないはず。

そういう動作にならないとおかしい。

そうでしょう?
290デフォルトの名無しさん:2009/02/19(木) 17:15:53
>>289
色々試さないで人に聞くやつは葛
291デフォルトの名無しさん:2009/02/19(木) 20:46:57
>>290
アメリカ人に聞いたらすぐに教えてくれたから、
お前もういいわ。クビです。
292デフォルトの名無しさん:2009/02/19(木) 20:52:46
http://stackoverflow.com/questions/564298?sort=oldest#sort-top

ここだ。ここのアメリカ人に聞いた。英語で。
すぐに答えてもらったよ。やっぱ質問するなら、
アメリカだな。ひろゆきなんかもうクビでええわ。
293デフォルトの名無しさん:2009/02/19(木) 20:59:14
>>292
よかったね^^
294デフォルトの名無しさん:2009/02/19(木) 21:00:15
>>292
ちゃんとお礼しとけよ
295デフォルトの名無しさん:2009/02/19(木) 21:07:01
でも何だかんだで>>292は優しいな、
ちゃんと結果を貼ってくれるなんて

今読んできたが、なる程ざワールド

お礼はしとけよ。
296デフォルトの名無しさん:2009/02/19(木) 21:16:11
http://s01.megalodon.jp/2009-0219-2115-02/stackoverflow.com/questions/564298?sort=oldest

魚拓もとっておいた。削除されるかもしれないから。
297デフォルトの名無しさん:2009/02/19(木) 22:20:42
>>290
色々試す前にドキュメント読まないやつは五味葛
298デフォルトの名無しさん:2009/02/19(木) 22:26:10
>>297
ドキュメント読まない・試さないやつはどうなるんだ?
299デフォルトの名無しさん:2009/02/19(木) 22:27:44
七味葛くらいじゃね
30082: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″といったような感じです。
301デフォルトの名無しさん:2009/02/20(金) 08:18:34
>そこでまずこの桁を36.455218にし
sprintf

>10進から60進に直すときは
10進から60進に直せばいい
10進から2進数に変換するのと同じ

GPS座標の変換をやってるみたいだねえ
302デフォルトの名無しさん:2009/02/22(日) 02:09:19
database is lockedをキャッチして、
しばらく待って、リトライさせる処理って、
もしかして関数化して再帰なの?

それとも、こういう時にthrowを使えるの?
303デフォルトの名無しさん:2009/02/22(日) 20:04:58
PHPを利用して一定の時間が経過したらMySQLのデータベースのあるテーブルの中の
レコードを削除する方法ってどのような感じでやればいいのでしょうか?
304デフォルトの名無しさん:2009/02/22(日) 20:47:27
cron?
305デフォルトの名無しさん:2009/02/23(月) 02:47:21
ある適当な文字列
例えば10文字
qwertyuiopの後ろ5文字を削って半分にするプログラムはどんな感じになるでしょうか?
306デフォルトの名無しさん:2009/02/23(月) 02:53:49
substr($string, 0. floor(strlen($string) / 2));
307デフォルトの名無しさん:2009/02/23(月) 02:54:24
みすた
substr($string, 0, floor(strlen($string) / 2));
308デフォルトの名無しさん:2009/02/23(月) 02:56:35
すばやい返答ありがとうございます
substr で文字列数?を指定することで好きな長さにできる感じですか?
初心者なものですみません
309デフォルトの名無しさん:2009/02/23(月) 02:57:51
とりあえずマニュアルを読むことをお勧めする

ttp://jp.php.net/substr
310デフォルトの名無しさん:2009/02/23(月) 03:02:31
なるほどありがとうございます!
便利な関数ですね
311デフォルトの名無しさん:2009/02/23(月) 21:03:41
<?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();
}
}
?>
やったついに成功した
312デフォルトの名無しさん:2009/02/23(月) 22:31:54
質問お願いします

PHPがどういうソースコードで書かれているのか読んでみたいのですが
何を読めばいいのか教えてください。

また
PHPはC言語で書かれていると本にあったのですが
C言語がわからないと読めないのでしょうか。

よろしくお願いいたします。
313デフォルトの名無しさん:2009/02/23(月) 22:51:27
もしや、日本語を知らないのに
日本語を読もうとしてるのか?
314デフォルトの名無しさん:2009/02/23(月) 22:57:46
>>312
PHP自体はCでかかれているけど、
Cなんて知る必要無いよ

ライブラリとか作るなら別だけど。
315デフォルトの名無しさん:2009/02/23(月) 22:58:18
>>313
行間を読め
人間はコンピューターではない
316313:2009/02/23(月) 23:35:58
>>315
行間読んでみた。
正直すまんかった。
317デフォルトの名無しさん:2009/02/24(火) 00:26:36
http://www.php.net/downloads.php
ここ行って、Complete Source Code っていうのダウンロードして、
ひとつひとつのファイルを適当なエディタで開いて読んでいったらいいのではないかな?
そういう話ではない?
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
すみません、ソッコーですが自己解決しました!
320241: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
にしたらいけました!
322デフォルトの名無しさん:2009/02/24(火) 08:59:39
変数の値があればその値を、なければNULLを得たいんだが簡単な方法無いか

今は三項演算とemptyを組み合わせて
 (empty($variable)?($variable):(NULL))
ってやってるんだが
変数名が長くなると読みづらいし扱いづらいしで
何かいい方法は無いですか
323デフォルトの名無しさん:2009/02/24(火) 09:28:39
関数を作るぐらいしか思いつかないが、その値自体はどうやってとってくるの?
324312 :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;
327デフォルトの名無しさん:2009/02/24(火) 14:48:02
>>323,326
すまん、変数が存在したらの間違いだ。
俺の手違いで紛らわしいレスにしてしまい申し訳ない。

読んで頭にハテナが出てしまったと思う
その分のガッカリ感がいかんかと想像し、しかと胸に刻んでおきます。
328デフォルトの名無しさん:2009/02/24(火) 14:52:02
>>327
存在したら、か。
そういう使い方だったら連想配列あたりを調べると幸せになれるとオモ
329デフォルトの名無しさん:2009/02/24(火) 15:04:22
スーパーグローバル変数である$GLOBALSまでは辿りつけたけど
そこから先は想像つかないな
array_key_exists は有無しか判断してくれないし
330デフォルトの名無しさん:2009/02/24(火) 16:38:59
MySQLからデータ抜き出してID番号だけ$_SESSION['id']に代入したいんだけど
fetchrowでやると$_SESSIONに代入できたときは検索結果が表示されないし
検索結果を先に表示すると$_SESSIONに代入されないんだけど他に方法あります?
331デフォルトの名無しさん:2009/02/24(火) 16:44:54
>>322
$foo = isset($bar) ? $bar : null;
332デフォルトの名無しさん:2009/02/24(火) 17:05:27
横槍でスマンがそれは変数名を短くしろよって意味なのか
333デフォルトの名無しさん:2009/02/24(火) 17:50:16
isset と empty は挙動が違うだろ
334デフォルトの名無しさん:2009/02/24(火) 18:05:40
まぁ…その通りなんだがな…
だが質問の内容をよく読んでから書き込めって……
一人浮いてるぞ……
335デフォルトの名無しさん:2009/02/24(火) 18:22:16
>>322って「$variable = 100;」だった場合、NULLを返したいの?
336デフォルトの名無しさん:2009/02/24(火) 19:14:19
>>335
よく嫁
337デフォルトの名無しさん:2009/02/24(火) 19:38:49
>>322はサンプルコードが間違ってるから混乱してるなw
338デフォルトの名無しさん:2009/02/24(火) 21:55:22
>>327
存在しない変数を参照するとふつうにNULLが返るので、
それ以上何が問題なのか分からん。warningが嫌なら
@$foo
とかして参照すればいい。
339デフォルトの名無しさん:2009/02/24(火) 23:23:16
サンプルコード自体が動作を満たしてませんね
色々と不備を重ねてしまいすみませんでした。

>>338
これで十分なんですね。
というかwarningが出ていても変数にNULLが入るのは知りませんでした。
古い表現ですが、感謝感激あめあられです。

回答していただいた方々もありがとうございます。
340デフォルトの名無しさん:2009/02/25(水) 03:45:49
出るのはWarningじゃなくてNoticeでは?
341デフォルトの名無しさん:2009/02/28(土) 01:47:27
リクエストパラメータなどを収めた連想配列から、いくつかのパラメータだけ
の部分配列を取り出したい。

$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')));
こんなの考えたけど、あんまり短くならない。
342デフォルトの名無しさん:2009/02/28(土) 13:24:25
>>341
関数にする。
array_flip(array('foo','bar'))の部分を最初から連想配列にする。
343デフォルトの名無しさん:2009/03/02(月) 18:23:16
http://changi.2ch.net/test/read.cgi/entrance/1226843784/468-
468 名前:名無しさん?[sage] 投稿日:2009/03/02(月) 11:25:37 ID:??? ?2BP(0)
PHPにバグ、vmwareの組み込みedのバグによる脆弱性。アップデートを。

と、いう事らしいです
お気をつけを
344デフォルトの名無しさん:2009/03/03(火) 16:14:31
firefoxだとsessionが動作するのに
IEだと動作してくれないのって何が原因ですか?
345デフォルトの名無しさん:2009/03/03(火) 17:15:45
htmlを通るとsessionが切れるとかいう話もどっかで聞いたな
346デフォルトの名無しさん:2009/03/03(火) 23:44:08
phpで作りたいものがない
347デフォルトの名無しさん:2009/03/03(火) 23:52:02
何ならあるの
348デフォルトの名無しさん:2009/03/04(水) 06:31:16
子作り
349デフォルトの名無しさん:2009/03/05(木) 12:37:25
<?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>';
}



?>
350デフォルトの名無しさん:2009/03/12(木) 22:25:59
<?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
352デフォルトの名無しさん:2009/03/12(木) 23:50:26
で、アクセスカウンタって、そうやってテキストで作るのと、数値項目一つ入れたDBで作るのと、どっちがいい?
353デフォルトの名無しさん:2009/03/13(金) 00:21:56
データーベースで作る場合は、
まず、
「どのデーターベースにしようかな?」
って決めなきゃならないじゃん。
354デフォルトの名無しさん:2009/03/13(金) 00:24:01
そんで決めたら、今度は、
「どのアクセス方法でアクセスしようかな?」
って、アクセス方法を決めないといけないじゃん。

PDOとか、pear::dbとか、
pear::mdbとか、pear::MDB2とか。
(これらはデーターベースアクセス抽象化レイヤー)

それか、O/Rマッパー使うか?とか。
pear db_dataobjectとか。
355デフォルトの名無しさん:2009/03/13(金) 00:24:53
そんで例えば、PDO使う、とか決めるじゃない。
そしたら、今度は、
PDO->execでやるのか、
プリペアードステートメントでやるのか、
バインドパラムは使うのか?
とか、悩まないといけない。
356デフォルトの名無しさん:2009/03/13(金) 00:27:00
そんでわからないから、例えばWEBプログラム板で聞くじゃない
そしたら

「おれたちはマニュアルにのってることしか
回答できねええんだよおおおお」

とかってキモヲタが絶叫してるし。

まじ関わり合いになりたくねぇえ、って心の底から思うじゃない。
思わずプログラム板に避難しちゃうくらいきもいから。
357デフォルトの名無しさん:2009/03/13(金) 00:48:09
>>353-356
おまいらのせいで100gで3600円もする貴重な最高級煎茶が無駄になったじゃないか
358デフォルトの名無しさん:2009/03/13(金) 00:56:54
>>352
テキストが良いよ
359デフォルトの名無しさん:2009/03/13(金) 02:08:50
排他しろヴォケ
360デフォルトの名無しさん:2009/03/13(金) 08:17:04
開いたら閉じてくれぇえええええ
361デフォルトの名無しさん:2009/03/13(金) 19:32:19
<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>";
}
?>
362デフォルトの名無しさん:2009/03/13(金) 19:33:03
>>361
これを「1.php」とかのファイル名で保存して実行。

するとプッシュってボタンが出るから、
それを押すと、自分に対する応援のメッセージが出力される。
363デフォルトの名無しさん:2009/03/13(金) 20:12:21
<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;
}
?>
364デフォルトの名無しさん:2009/03/13(金) 20:13:14
>>363
これを「2.php」とかの名前で保存。

それと、file.txtって名前のテキストファイルを作成して
同じディレクトリに置いておく。

これで事前準備はOK。

あとは、2.phpを実行して、ボタンを押すと、
一回押すごとに、数字が1増える。
365デフォルトの名無しさん:2009/03/13(金) 22:28:07
<?php
$cnt = 0;
$f = file_get_contents (__FILE__);
file_put_contents (__FILE__,
  preg_replace_callback("/(?=>\$cnt = )[0-9]+(?=;)/",
    create_function(
     ...

って感じで、自身を書き換えるカウンタもつくれるんだろうな
366デフォルトの名無しさん:2009/03/13(金) 22:41:47
>>365
そこの変な書き込みしているやつ、止まれ。
お前はタリバンか。
367デフォルトの名無しさん:2009/03/14(土) 05:50:25
画像をアップロードするものを作っているのですが
拡張子はjpgでも中身はTIFFだったりする場合って、みなさんどう対処されてます?
ブラウザでは表示されないんで困ってます

教えてエロい人!
368デフォルトの名無しさん:2009/03/14(土) 06:30:59
>>367
ファイルの先頭数バイトで判定すれば良いんじゃね?
369デフォルトの名無しさん:2009/03/14(土) 07:52:45
>>368
バイナリは詳しく分からないので
getimagesize()で確認してみるとにしました

欲を言えばGDとかで通常のjpgにしたかったんですけど
上書きしたjpgも何故かブラウザで見れなかった〈(。А。)〉
370デフォルトの名無しさん:2009/03/14(土) 09:58:10
>>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 コード参照用
371デフォルトの名無しさん:2009/03/14(土) 10:00:31
調べて増やせば他の拡張子も対応可能
貼ってから気付いたけどマイムタイプだな
372デフォルトの名無しさん:2009/03/14(土) 11:46:57
postgresql の COALESCE みたいな関数ってある?
$a=""; $b=null; $c="hoge";
xxx($a, $b, $c); hoge と表示される
373デフォルトの名無しさん:2009/03/14(土) 13:56:08
PostgreSQLのってか標準SQLのな
まーないけどこんな感じでなんとかなるんじゃね。

$ret = $a == "" ? ($b == "" ? ($c == "" ? null : $c) : $b) : $a;

is_nullとか===にしちゃ駄目よ。

そういやPHPの日本語マニュアル見ると三項演算子ってterniary条件文ってなってるけど
ternaryの間違いだよなこれw
374デフォルトの名無しさん:2009/03/14(土) 15:21:26
やっぱないのか
PHP5.3 から ?: ってのが出来てるみたいだね
375デフォルトの名無しさん:2009/03/14(土) 15:44:55
いや昔からできてるけど
376デフォルトの名無しさん:2009/03/14(土) 16:17:00
昔からって三項演算子の省略型が?
$ret = $a ?: $b
377デフォルトの名無しさん:2009/03/14(土) 16:32:05
C++あたりから普通にあるじゃん・・・
378デフォルトの名無しさん:2009/03/14(土) 16:46:48
誰がC++の話してんだよ^^;
379デフォルトの名無しさん:2009/03/14(土) 16:56:18
あぁすまん、Cからあっ(ry

C派生なんだからPHPは最初からあったでしょ >三項演算子
380デフォルトの名無しさん:2009/03/14(土) 17:04:44
381デフォルトの名無しさん:2009/03/14(土) 17:28:26
>Notice: Undefined variable
エラーでてコンパイルすら通らなかった。
382デフォルトの名無しさん:2009/03/14(土) 17:29:45
ちがった、こっちだったw

>Parse error: syntax error, unexpected ':'
383デフォルトの名無しさん:2009/03/14(土) 18:40:33
コンパイルしてるのか
384デフォルトの名無しさん:2009/03/14(土) 18:52:20
PHPはソースが変更されて最初のアクセスでコンパイルされて中間コードが生成される
二度目以降はこの中間コードを直接見るので一度目より速度は多少速くなる。

実はこれ4.xの途中で変更された仕様で、古いバージョンだと毎度コンパイルしてるから遅い
385デフォルトの名無しさん:2009/03/14(土) 19:00:23
php5でSmartIrcは
どうやってつかうのでしょうか
おしえてください
386デフォルトの名無しさん:2009/03/14(土) 19:08:22
しらない
387369:2009/03/14(土) 19:18:54
>>370
遅くなりましたが、ご丁寧にどうもありがとうございます!
388385:2009/03/14(土) 19:27:40
ttp://www.dotup.org/uploda/www.dotup.org2648.gz

ダウンロードしたんだよ
頼むよ、おしえてくれよ
389デフォルトの名無しさん:2009/03/15(日) 09:26:40
ドキュメント読めばいいじゃん
390デフォルトの名無しさん:2009/03/15(日) 19:34:38
ageんなカス
391デフォルトの名無しさん:2009/03/19(木) 22:49:07
 
日本を狙う 朝鮮人の原爆ミサイル建造費用は

  日本国内の 在日パチンコ屋からの送金

パチンコの市場規模は 年間30兆円

  日本の国家予算の 3分の1以上

  北朝鮮の国家予算の なんと100年分!

これを在日朝鮮人が 自由に動かし

  パチンコマネーを 北朝鮮に送金している

パチンコ屋を 全面営業禁止にしない限り

  北朝鮮は制裁など 痛くもカユくもない
 
在日朝鮮人なら 生活保護もらい放題

  毎月二十数万円もらって 毎日遊んで暮らしてる

  住宅費・医療費・教育費なんでも無料

  税金は1円も払わない 超特権階級(貴族)

  民主党は 選挙権まで与える予定

  日本は 在日天国  <丶`∀´> ウハウハ〜♪

http://2cchan.ham-radio-op.net/kimuchi.html
392デフォルトの名無しさん:2009/03/28(土) 02:06:58
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 ;
;;;;;;;;;;;;;;;;;;;
393デフォルトの名無しさん:2009/04/02(木) 20:35:48
文字列の関数を利用する時は、
非マルチバイト関数を利用する事が
ないかとおもいますが。

マルチバイト関数と、非マルチバイト関数対応表と、
マルチバイト関数が存在しない非マルチバイト関数表
とかってどっかにないでしょうか?
例、mb_trimが存在しない。
394デフォルトの名無しさん:2009/04/04(土) 22:42:33
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デフォルトの名無しさん:2009/04/05(日) 00:34:44
>>393
http://jp.php.net/manual/ja/ref.strings.php
http://jp.php.net/manual/ja/ref.mbstring.php
ここから関数群の差分取るスクリプト書けばおk
396デフォルトの名無しさん:2009/04/05(日) 00:48:44
>>395
ありがとうございます。

非マルチバイト関数を使うな!
といっても、もれが出てしまいます。
皆様どのように解決しておりますでしょうか?

思いつくのは。
・コーディング後に非mbチェックスクリプトを実行。
・関数を改造してこけるようにする。
・対処しない、根性でテスト。
397デフォルトの名無しさん:2009/04/05(日) 01:22:45
>>396
0003. セキュリティを考慮して、特定の関数を使用不可能にする方法
ttp://php.to/tips/3/
398デフォルトの名無しさん:2009/04/05(日) 01:47:54
>>397
ありがとうございます。
399デフォルトの名無しさん:2009/04/06(月) 04:27:20
<?php
$a=mb_convert_encoding(`ping www.google.com`,"UTF-8","SJIS");
print "<pre>";
print_r ($a);
print "</pre>";
?>


-----------------------------------------------
これはおもしろい。
実行すると、PHPからpingを打って、
結果を表示してくれる。
400デフォルトの名無しさん:2009/04/06(月) 05:38:29
$a = `ping www.google.com`;

でいいんじゃないのかと思うが。
401デフォルトの名無しさん:2009/04/06(月) 05:44:59
>>400
やってみたらできた、ありがとう。
execのコードを一部改変したものですから。
402デフォルトの名無しさん:2009/04/07(火) 07:55:39
言い訳スンナヨ
403デフォルトの名無しさん:2009/04/07(火) 16:33:34
Net_UserAgent_Mobileを使って3G端末の識別がしたいんだけど、isFOMA()メソッド
を使用したら、「Call to undefined method Net_UserAgent_Mobile_NonMobile::isFOMA()」
って表示された。
本でもネットでも以下の方法しか記載されてないから、わけわからない。
$agent = Net_UserAgent_Mobile::singleton();

if ($agent->isFOMA()) {}
404デフォルトの名無しさん:2009/04/08(水) 00:59:15
それってPEAR?
405デフォルトの名無しさん:2009/04/08(水) 03:12:46
>>399
へぇーそんな事も出来るんだ。
面白いね
406デフォルトの名無しさん:2009/04/08(水) 11:28:04
>>403
Net_UserAgent_Mobile_NonMobile::isFOMA()

Net_UserAgent_Mobile::isFOMA()
は違うがな
407デフォルトの名無しさん:2009/04/08(水) 14:18:15
http://d.hatena.ne.jp/indiana/20090217/p1

ここにある、かなをローマ字に変換するクラスですが、
うまく動きません。サンプルまでそのまま引きうつして実行しても、
だめです。非常に便利なクラスなのでぜひ活用させてもらいたいの
ですが、何か、アドバイスをもらえませんでしょうか。
408デフォルトの名無しさん:2009/04/08(水) 14:35:36
エスパーじゃないので解りません
409デフォルトの名無しさん:2009/04/08(水) 22:36:15
使えない人ですね
410デフォルトの名無しさん:2009/04/08(水) 23:00:59
>>407
文字コードは設定と一致してる?
クラスの先頭にある
var $charset='utf-8';
の 'utf-8' を 'shift_jis' に変えてみるとか
411デフォルトの名無しさん:2009/04/08(水) 23:40:42
>>410
ファイルはすべてUTF-8にしています。
文字コードを試しに変えてみましたが、だめなようです。
エラーは出ませんが、何も表示されません。
412デフォルトの名無しさん:2009/04/08(水) 23:42:24
>>411
display_errors
error_reporting
413デフォルトの名無しさん:2009/04/09(木) 00:46:02
手元のインタプリタで試したけどそのままで動いてる
(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;

これで漢字などの変換対象でない文字もそのまま出力するはず
これで文字化けなどが起こっているなら文字コード回りを再度見直した
ほうがよいと思う
414デフォルトの名無しさん:2009/04/09(木) 07:45:35
PHPのCLI版おもすれー
415デフォルトの名無しさん:2009/04/09(木) 10:08:47
CLI ってまぎらわしい。
Common Language Infrastructure (いわゆる .NET)
Command Line user Interface (いわゆる DOS窓)
Command Line Interpreter (いわゆる CMD.EXE、COMMAND.COM)
416デフォルトの名無しさん:2009/04/09(木) 10:10:01
あと、Client (Client application) を CLI と略すこともある。
まぎらわし〜〜〜
417デフォルトの名無しさん:2009/04/09(木) 11:33:27
<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を使ってます
418デフォルトの名無しさん:2009/04/09(木) 12:10:24
Access forbidden!
要求されたオブジェクトへのアクセス権がありません。 読み込みが許可されていないか、 サーバが読み込みに失敗したかでしょう。

サーバーの障害と思われる場合は、ウェブ管理者までご連絡ください。

Error 403
localhost
04/09/09 12:08:32
Apache/2.2.11 (Win32) PHP/5.2.9-1

書き忘れたのですが、上のようなエラー文が出ます
419デフォルトの名無しさん:2009/04/09(木) 14:20:28
>>417-418
apacheのerror.logさらせ話はそれからだ
420デフォルトの名無しさん:2009/04/09(木) 14:39:05
[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がちゃんと働いていないということでしょうか?
421デフォルトの名無しさん:2009/04/09(木) 15:40:26
<? = $_SERVER["PHP_SELF"]?>

を普通にファイルへのパスにしたらどうなりますか。
422デフォルトの名無しさん:2009/04/09(木) 15:54:37
>>421
うまくいきました!
ということは<? = $_SERVER["PHP_SELF"]?>の部分記述の仕方に問題があったんですね
お騒がせしてすみませんでした。
423デフォルトの名無しさん:2009/04/09(木) 17:04:02
ブラウザからメールアドレスを入力してもらって、
そのアドレス宛にメールを送るプログラムを書いているのですが、

メールの件名の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?=

文字コード以外で調べるべき箇所があるのでしょうか。
アドバイスなどありましたらお願いします。
424デフォルトの名無しさん:2009/04/09(木) 22:42:50
>>422
その場合、phpのショートタグなんちゃらが
無効になっている。
425デフォルトの名無しさん:2009/04/09(木) 22:44:18
>>423
あいうえおかきくけこ

といれて、抜けるかどうか調べる
426デフォルトの名無しさん:2009/04/10(金) 05:23:33
427407=411:2009/04/10(金) 08:12:20
>>413
ご指摘、ありがとうございます。
当方の環境では、半角英字も全て、出力されません。
やはり文字コード周りが怪しいので、PHP.iniを見直して
みたいと思います。

このクラスは、utf-8などの文字コード設定と内部コードが
あっている必要があるということでしょうか?
428デフォルトの名無しさん:2009/04/10(金) 22:38:57
<?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プログラムを実行できる。
429デフォルトの名無しさん:2009/04/10(金) 22:39:41
$a=fgets(STDIN);


この行でDOSプロンプトからの
キーボードからの入力を受け付けることができる。
ただし日本語は文字化けする。
430デフォルトの名無しさん:2009/04/10(金) 23:52:51
なにを言いたいのかよくわからないけど、
プログラムの簡単な確認なら

php -a

で組込みのインタラクティブシェルが起動するので、
対話的にプログラムを実行できる
あと、Windowsだと、ASConsole というのもある。これもインタラクティブシェル
なんだけど、複数行の入力をサポートするので関数とかのコピペが簡単に
できて結構便利

ちなみに自分の環境では>>428のプログラムで日本語文字化けしなかった
431デフォルトの名無しさん:2009/04/11(土) 03:19:32
ソースコードをutf-8で書いて、
それをDOSプロンプトで出力したので
文字化けしたのかな?
(DOSプロンプトはシフトJIS出力なので)

おそらくソースコードもシフトJISで保存すれば
文字化けしないんだと思う。
432デフォルトの名無しさん:2009/04/11(土) 08:55:19
windowsのphpに脆弱性upでとよろ
433デフォルトの名無しさん:2009/04/11(土) 09:40:17
入社面接に応募したらPHPで100行くらいの自作コードを送るように言われたんだけど、
JAVAの経験はあるのですがPHPの経験がなくてどんなの作ったらいいかわからないので、
なにか意見いただけませんか?
434デフォルトの名無しさん:2009/04/11(土) 10:55:16
100行って微妙だな。
435デフォルトの名無しさん:2009/04/11(土) 11:55:38
質問です。
ニュースサイトなどでよく見かける、「あるページに、内容が関連する他のページの見出しを表示」がしたいのですが、
これはどのような仕組みで実現しているのでしょうか。教えてください。
436デフォルトの名無しさん:2009/04/11(土) 12:41:22
比較する記事から形態素解析で使われている単語を抽出して、ある程度一致したものを列挙するだけ
形態素解析エンジンはChasenとかKakasiとかMeCabとかYahooAPIとか色々あるんで
好きなのを選ぶといいよ
437デフォルトの名無しさん:2009/04/11(土) 12:47:44
一方俺はタグを使った
438デフォルトの名無しさん:2009/04/11(土) 13:28:06
ブログツールのMovableType使ってた時は、タグの類似度でやってたな。
439435:2009/04/11(土) 15:39:09
おー、「形態素解析」初めて聞きました。そういうのがあるんですね。
わかりました。挑戦してみます。ありがとうございます。
440デフォルトの名無しさん:2009/04/11(土) 18:57:59
>>434
100行で魅せろって意味だとしたら相当難しいな
441デフォルトの名無しさん:2009/04/11(土) 19:48:21
ある意味良課題
442デフォルトの名無しさん:2009/04/11(土) 20:07:46
君たちやってみたまえ
443デフォルトの名無しさん:2009/04/11(土) 21:25:31
100行ならメール専用画像アップローダぐらいは作れそうだな
444デフォルトの名無しさん:2009/04/16(木) 06:51:16
バイナリセーフでない正規表現系の関数は、
基本的に危険だから使わないほうが良い?
445デフォルトの名無しさん:2009/04/16(木) 06:51:58
危険、という意味は、ヌルバイト攻撃されるから。
¥nを入れられると、その後ろに’(シングルクオーテーション)等を
自由に入れられてしまう。
446デフォルトの名無しさん:2009/04/16(木) 07:09:31
教科書読んでると、たまに

「*Windows版では動作しません」
って書いてある関数があるんだが、これを実験するには、
やはり、自分のパソコンにLinuxを入れるしか
ないのだろうか?
447デフォルトの名無しさん:2009/04/16(木) 10:07:43
>>445
素のままのデータを使うなよw
448デフォルトの名無しさん:2009/04/16(木) 17:06:43
>>446
Cの時は読み飛ばした
今ならVMWare使って遊ぶ
449デフォルトの名無しさん:2009/04/16(木) 17:08:41
VMwareかぁ、、、
危険ではないのかな?
450デフォルトの名無しさん:2009/04/16(木) 18:11:14
php初心者です。
画像などのファイルをアップロードしてデータベースに格納したものをダウンロード
して表示させるときにcontent-typeをつけて表示していますが、ファイルがいろいろな種類のときに
ダウンロードしてきたデータのmime-typeを判定する方法があったら教えて下さい。
お願いしますm(_ _)m
451デフォルトの名無しさん:2009/04/16(木) 19:12:40
自分のパソコンの中で判定するってこと?
452デフォルトの名無しさん:2009/04/16(木) 19:53:42
>>451
判定結果をcontent-typeの後につけて、出力をしたいと思っています。
453デフォルトの名無しさん:2009/04/18(土) 17:28:42
>>449
何が?
454デフォルトの名無しさん:2009/04/18(土) 18:29:25
>>453
Windowsが起動しなくなるとか、、、
455デフォルトの名無しさん:2009/04/18(土) 21:33:38
>>454
phpの方が危険度高いぞw
456デフォルトの名無しさん:2009/04/20(月) 23:10:44
php初心者ですがアドバイスをいただきたくm(_ _)m
今までC言語6年とJava1年やってきてますので、完全なコンピュータ素人では
ないつもりです。が、Web系は関わった事が無いのでhtmlとかxmlとかは素人です。

今度担当するプロジェクトでphpを覚える必要が出てきまして、入門用の書籍を
探しています。
今日色々とPHP本を漁って、オライリーの「プログラミングPHP」が良さそうかな、
と思いました。

そこで質問が2つ。
○先輩に「PHP5徹底攻略(マンモス本?)」を薦められたのですが、執筆された
時期が5年以上前なので、情報が古くないかと心配です。
○上記の2冊以外でオススメの入門書がありましたら教えてください。

以上、よろしくお願いいたします。
457デフォルトの名無しさん:2009/04/20(月) 23:50:26
phpの言語仕様はC言語に毛が生えた程度。
クラスの概念がC言語には無いけど、Javaやってたようだから何とかなると考えれば、
入門書に頼らずとも、本家サイト(php.net)の言語リファレンス(http://www.php.net/manual/ja/langref.php)よめば、何とかなる様に思えます。

むしろ大変なのは、phpの外の世界。
html, http, セキュリティ対策(XSS, SQL-Injection等)、Javascript、CSSなど、理解しなければならないことが山の様にあります。
458デフォルトの名無しさん:2009/04/21(火) 00:43:24
>>456
俺も>>457にほぼ同意。そんだけ経験あればマニュアルとか、買ってもリファレンス系で足りるはず。
下手に入門本とか買うとかえって混乱すると思う。(オライリー系ならいいけど)
むしろWEBアプリならではのセキュリティとかMVCとかの方が面倒。
459デフォルトの名無しさん:2009/04/21(火) 02:53:59
削除したはずの要素までファイルに記録されてしまう。削除した要素を無視する方法があったら教えてほしい。
$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);
}
460デフォルトの名無しさん:2009/04/21(火) 02:55:48
457が言いたいことを全部言ってくれた

>>459
WebProg板のくだスレで質問してた人?
461デフォルトの名無しさん:2009/04/21(火) 02:57:23
>>460
違うが。
462デフォルトの名無しさん:2009/04/21(火) 03:07:37
もしかして、既に出てる質問なのか。
もし、そうなら、そこのURLを教えてほしい。
該当する板に行ったがなかった。
463デフォルトの名無しさん:2009/04/21(火) 05:57:45
>>456
俺も似たような状況だったけど、webフレームワーク憶えたらすぐに実戦にもっていけた。
PHP憶えるついでに、CakePHPとかやってみたらどうかと思う。

MVCフレームワーク一度も使ったことないなら、CodeIgniterの書籍が超わかりやすいからお勧め
CodeIgniter自体は軽量すぎてあまりオススメしないがw

Amazon.co.jp: CodeIgniter徹底入門: 河合 勝彦, 鈴木 憲治, 安藤 建一: 本
http://www.amazon.co.jp/dp/4798116769
http://images-jp.amazon.com/images/P/4798116769.09.MZZZZZZZZZ.jpg
464デフォルトの名無しさん:2009/04/21(火) 06:09:03
>>456
●はじめてのphp言語 プログラミング入門
●独習PHP
●実践マスターPHP+MySQL
●速効!図解プログラミングPHP + MySQL
465デフォルトの名無しさん:2009/04/21(火) 09:56:06
>>456
マンモスの徹底攻略4ならPDFで公開されているから、何か買う前にダウンロードしてみたらどうだい。
466デフォルトの名無しさん:2009/04/21(火) 14:07:58
>>459
そのサンプルを実行してみると君がいったような動作には
ならない。予想では
0. サンプルが実際のコードをあらわしていない
(実際のコードにはつまらないタイプミスがある、など)
1. names.txtへの書き込みが失敗している
2. web上で動かしていて上書きされている
467デフォルトの名無しさん:2009/04/21(火) 19:05:47
>>464
独習PHPは、わかりにくかったでしゅ
468456:2009/04/21(火) 23:13:35
皆様ありがとうございます。
ここの意見も参考に色々な本を試し読みしまくって、結局「プログラミングPHP」と
PHPのセキュリティに関する本を買いました。
私にとってレベルが高すぎず低すぎず、文体とか読んだ感じとかのフィーリングが
好きだったので。
今回の仕事にPEARとxmlが絡む事は確定しているんで、その辺もフォローしている本の
方が良いかな?と結構迷いましたが、基本とセキュリティ知識をある程度身につけて
からにします・・・不器用なんでw
469デフォルトの名無しさん:2009/04/21(火) 23:13:46
>>466
うむ・・・。
スクリプト一式をこちらにおいておきます。

http://www6.atpages.jp/~autonomydoll/chat/
(chat_error.phpがうまくいかないほうです)
470デフォルトの名無しさん:2009/04/22(水) 00:22:51
>>469
すみません。後になって気付いたので訂正します

× 空の要素が記録されてしまう
○ 空の要素が<>の形で記録されてしまう
471デフォルトの名無しさん:2009/04/25(土) 18:17:06
http://www.itmedia.co.jp/enterprise/articles/0809/10/news038.html

「PHPの「mt_rand()」機能の脆弱性では、
ユーザーが新しく作成したパスワードを
攻撃者が予測できてしまう可能性がある。」

これってどういうことかな?
472デフォルトの名無しさん:2009/04/25(土) 18:50:54
mt_randの中がどうなってるか柱泣けど
通常PCで発生させる乱数ってのは擬似乱数って言って
同じ条件なら同じ乱数が出るようなタイプの乱数だから
パスワード再発行したときと同じ日時で乱数発生させたら
同じパスワード出来ちゃうとかそんな感じじゃないかね
473デフォルトの名無しさん:2009/04/26(日) 20:28:34
>>471-472
ここが分かりやすいかな。
ttp://blog.ohgaki.net/php-python
474466:2009/04/26(日) 20:33:34
>>470
>>469のアドレスをアクセスするとソースが見えないんで想像だけど
(というか見えるようにしてもらっても全部を見る気はない w)、
「値が空の要素は除外したい」だったら foreach()のブロックの最初に
if (strlen($v) == 0) continue;
を追加すればいいと思う。
475デフォルトの名無しさん:2009/04/26(日) 22:26:20
<?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、マジで超カンタン
476デフォルトの名無しさん:2009/04/26(日) 22:29:07
ちなみにテーブル構造です

ホスト名 localhost
ユーザー名 root
パスワード pass

データーベース名 bbb
テーブル名 ddd

テーブル構造

 | a  | b  | c
--------------------
0| 111|222 | 333
477デフォルトの名無しさん:2009/04/26(日) 22:33:09
この場合、
bbbというデーターベースに接続して、
dddというテーブルを選択して、
cというカラムを選択して、
行番号0の行を選択して、
そこのデーターを取ってきて、
画面に表示した。
478デフォルトの名無しさん:2009/04/26(日) 22:34:51
いやちょっと説明違うな。

bbbというデーターベースに接続して、
dddというテーブルを選択して、
その中のcというカラムを選択して、
データーを全部取ってきた。そして
その中の、行番号0の行を選択して、
そのデーターだけを画面に表示した。
479デフォルトの名無しさん:2009/05/02(土) 22:52:07
<?php
$b="a";
for($i=1;$i<60;$i++):
print $b++;
print "\n";
usleep(1000000/2);
endfor;

exit;
?>

------------------------------------------------
これをCLIモードで実行すると、
ちょっとおもしろいよ。
480デフォルトの名無しさん:2009/05/02(土) 23:03:57
<?php
print "文字を入力してください\n";
$in = fgets(STDIN);
$c = rtrim($in);
print $c . "、、、ですと?!";
?>

------------------------------
これも実行すると
ちょっと面白い例。

CLIから実行。
PHPで対話的アプリが実装できる。
481デフォルトの名無しさん:2009/05/03(日) 04:16:01
またお前か
全然成長してないな
482デフォルトの名無しさん:2009/05/03(日) 04:45:11
俺も25年前くらいにBASICで同じようなことやって一喜一憂してたから気持ちはわかる
483デフォルトの名無しさん:2009/05/03(日) 11:19:40
ここはプログラム板。
キチガイは入れない場所ですぞ
484デフォルトの名無しさん:2009/05/03(日) 16:33:09
<?php
`CLS`;
?>



なんでこれで
画面がクリアされないのか、
理由がわからないづら
485デフォルトの名無しさん:2009/05/03(日) 16:51:34
行番号がないからだろ
486デフォルトの名無しさん:2009/05/03(日) 18:46:26
>>479
笑いどころはここらへん?
>exit;
>?>
487デフォルトの名無しさん:2009/05/04(月) 17:55:58
MSSQLに接続できん・・・・・
もう2日はトライしてるわ・・・
488デフォルトの名無しさん:2009/05/04(月) 18:05:51
つ PDO
489デフォルトの名無しさん:2009/05/04(月) 18:20:54
>>448
mysql使ってたんだけど、コマンドラインからの操作が面倒くさすぎてMSSQLserverにしたら
2005年版は何かphpとの接続にパッチやら入れないといけないらしく、上手くいかない・・・・
あぁ〜PCやりすぎて目が痛いよう
490デフォルトの名無しさん:2009/05/04(月) 21:17:34
そんなあなたのためにphpmyadminというものがあるが使わなかったんか?
491デフォルトの名無しさん:2009/05/04(月) 21:32:28
MySQL Admnistratorでいいと思う
ちゅうかなんでその理由でPostgreSQLなどに行かずに
急にSQLServerに飛ぶのか解らんが
492デフォルトの名無しさん:2009/05/04(月) 21:48:04
>>490
>>491
あ〜そんな物があったのか・・・・丸二日費やしたのが馬鹿みたいだぜ。
なんとなく目に留まったのがMSSQLだったからorz

ちょっと試してみます
493デフォルトの名無しさん:2009/05/04(月) 22:07:18
xamppだったら
最初からついてるよね。
494デフォルトの名無しさん:2009/05/04(月) 22:19:05
最近のテスト環境構築丸々入ってるよ〜系なら大抵ついてくるね>phpmyadmin
というか、ほんとに便利だから入れないと移行とか大変すぎる
495492:2009/05/05(火) 16:23:27
MySQL Admnistratorは英語って以外は中々使いやすいね。
日本語のかねやんMySQLAdmin使いたいんだけど何か接続できないから諦めた。

それにしてもphpは自分の設定であってるかどうか不安だわ。
少しでも調べないで変えると戻すのも苦労する
496デフォルトの名無しさん:2009/05/05(火) 17:51:51
自PCの環境で完成した〜と思って、サーバにあげて実行してみたら
Fatal error: Call to undefined function zip_open()

・・・まあ、PHP暦1週間の初心者なので・・・(´・ω・`)
497デフォルトの名無しさん:2009/05/05(火) 21:15:31
コマンドのインストールに失敗する前にWebmin使ってみよう!

・・・ファイアウォールの設定はしっかりとね。
498デフォルトの名無しさん:2009/05/05(火) 21:42:23
>>495
Tools→Options→GeneralOptions
右上LanguageをJapaneseにしてアプリ再起動

1%だけ日本語になるぜw
499484: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文に問題あるのでは?
501デフォルトの名無しさん:2009/05/09(土) 02:03:30
>>499
項目名にマルチバイト文字なんて使えるのか?
502デフォルトの名無しさん:2009/05/09(土) 02:19:37
>>499
`項目名`

あと mysql_real_escape_string を忘れずに
503デフォルトの名無しさん:2009/05/09(土) 02:32:09
>>502
それはバッククオートで囲め、て意味?
ただコードを書くだけでは意思が伝わらないことが多いよ
504デフォルトの名無しさん:2009/05/09(土) 02:33:30
テーブル名もマルチバイト文字だな。
505デフォルトの名無しさん:2009/05/09(土) 02:56:10
SQLのオブジェクトにマルチバイト文字を使うのは面倒。
エンコーディングでいかようにでも化けちまうきがすんだけど
''で括ってもどうなるか、EUCになるならいいが、最近はUTF-8もあるから。



506デフォルトの名無しさん:2009/05/09(土) 02:58:37
>>503
テーブル名や項目名をバッククオートで囲む、これ癖つけておいたほうがいいよ
`table`.`index` という感じで

PostgreSQLから移ってきた時に、これで丸2日ほどつぶしてしまったよ俺。。。
507デフォルトの名無しさん:2009/05/09(土) 03:36:11
別にマルチバイトでも問題ないよ
OracleやAccessじゃよくある
508デフォルトの名無しさん:2009/05/09(土) 11:07:26
ただ文字化けしてるだけじゃん。文字コードの設定を統一すればいいよ。

> とコマンドラインからSYSQLに同じ命令を打ったら
コマンドライン版の PHP.EXE のこと?
PHPで直接、SQL の INSERT 文が発行できたっけ???

もしコマンドライン版の mysql.exe なら、mysql.ini で文字コードを設定する。
自分が何をしているのか、相手に伝えられないと答えようがないよ。
509499:2009/05/09(土) 14:24:17
皆さんありがとうございます。
マルチバイトを使わずにアクセスした所、アクセス出来たので設定がおかしいのだと思います。

あああああああああああああああああ何でこんなに設定がめんどくさいんだpg歩ディfgしあhふぃさdhfじゃs」dpfは
環境設定だけでプログラム全く書いてねえぇぇぇぇぇぇl!!!!!!!!!!!!!!!!!!!
510デフォルトの名無しさん:2009/05/09(土) 15:52:55
わからんなら、何かフレームワーク使った方が楽だし憶えやすいぞ。
511デフォルトの名無しさん:2009/05/09(土) 16:33:32
設定が面倒くさいんじゃなくてマニュアル読んで手順通り設定してないだけだろ
文字コードさえ一致してればマルチバイトであろうがなんであろうが動く
むしろマルチバイトで動かないけどアスキーにしたら動いたってのは何も解決して無くて
まだどこかで文字コードの不一致が起きたまま動いていると言うことだ
512デフォルトの名無しさん:2009/05/09(土) 16:44:33
データベース名やテーブル名、フィールド名に2バイト文字を使うのは今では普通なのか?
今まで使ってはいけないと思って使ってなかったけど・・・。
テーブル名やフィールド名を考えるのがメンドイんだよな〜
513デフォルトの名無しさん:2009/05/09(土) 16:58:02
好きか嫌いかだろうな。 別にローマ字でもいいと思ってるし。
要は間違えなければいい。
514デフォルトの名無しさん:2009/05/09(土) 17:18:10
今では普通じゃなくて昔から使えたし別に今更禁止する意味もない
禁止なのは開発の規約上アルファベットで揃えるから禁止とか
日本人しか理解できないから禁止とかそういう理由であって
システム的に動かないから禁止ってわけではない
515デフォルトの名無しさん:2009/05/09(土) 17:19:12
あとはシステム的に開発環境などをスキル低い人が設定できないから
トラブル避けるために禁止ってのもあるけど
516デフォルトの名無しさん:2009/05/09(土) 18:01:45
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文書くのに面倒くさくて、見たくもない、日本語禁止。
518デフォルトの名無しさん:2009/05/09(土) 18:10:37
秀丸で手入力でもしてるのか?
ツール使えよ
仮にカラム名が英文だったとしても打ち間違ってバグの元になるぞ
519デフォルトの名無しさん:2009/05/09(土) 22:24:57
移植性を考えるとマルチバイト文字はオヌヌメできぬ。
520499: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 です
521デフォルトの名無しさん:2009/05/10(日) 01:00:51

>むしろマルチバイトで動かないけどアスキーにしたら動いたってのは何も解決して無くて
>まだどこかで文字コードの不一致が起きたまま動いていると言うことだ
522デフォルトの名無しさん:2009/05/10(日) 01:01:28
なんか初心者スレ案内したほうがいいような気がしてきた
523デフォルトの名無しさん:2009/05/10(日) 01:04:16
>>520
ちゃんとphpとmysql(のDB)と文字コード合わせてる?
524デフォルトの名無しさん:2009/05/10(日) 01:05:49
PHPの文字周りは難しいので
ある程度の学習が必要です。
ttp://www.oreilly.co.jp/books/9784873113654/

個人的には、全文字エンコードを統一し、
フレームワークの利用を推奨です。

・全文字エンコードの例
htmlのcharset
phpのファイル
php.ini
DBのcharset
525デフォルトの名無しさん:2009/05/10(日) 01:56:29
こういう場合にSQL周りをクラスでラップしてると
文字コード関係の問題解決は楽なのよねぇ
526デフォルトの名無しさん:2009/05/10(日) 02:26:38
リリース後に運用でgdgdになって火消しに行くこと多いんだけど
PHPの場合DB周りも含めて実装が意味不明な事が多いんだよねぇ
せめてPEARでも使ってよと思うんだけど、何故かそうしてる所が少ない…
独自実装の方がどう考えても面倒でしょうに
527デフォルトの名無しさん:2009/05/10(日) 02:40:24
mysqli_set_charset を使うには php に mysqli をインストールすること。
デフォルトではインストールされない。
mysql_uery なんて関数ははじめから無い。
たぶん mysql_query か mysqli_query の間違いだろ。

とにかく、php.ini、my.ini の設定を最初っからやりなおせ。
そうすれば文字化けも直る。
入門書・解説サイトなどをよく読め。
528デフォルトの名無しさん:2009/05/10(日) 02:42:07
PEAR など既存のライブラリを使いたがらないのは
他人の書いたコードのデバッグをしたくないからだろ。
PEAR に100%バグが無いと保証あるなら別だが。
529デフォルトの名無しさん:2009/05/10(日) 02:46:57
うちはSmartyぐらいしか使ってないなぁ
530デフォルトの名無しさん:2009/05/10(日) 02:47:24
こんなとこだと思うw

・有名なライブラリの存在を知らない。
・自分が作ったほうがバグが少ないという
根拠のない自信。
・作ってみたい。
・コスト意識がない。
531デフォルトの名無しさん:2009/05/10(日) 02:55:26
最近はメンテや機能追加ばっかりだから
追加でライブラリ使うことを向こうから止められる

開発楽になりますよって言っても聞かないしー
532デフォルトの名無しさん:2009/05/10(日) 02:59:47
その辺のSI会社のプログラマが書いたライブラリより
PEARにバグが無い確率の方が低いだろJK
533デフォルトの名無しさん:2009/05/10(日) 03:01:39
PERA_DBやPEAR_MDBに今さら重大なバグあったら世界がひっくり返るわw
少なくとも、文字コードが良く解りませんって言ってる奴が
直接SQL発行するよりも1億倍マシ。
534デフォルトの名無しさん:2009/05/10(日) 03:02:38
>>532
PEARにバグが有る確立の方が低い
の間違いか?
535デフォルトの名無しさん:2009/05/10(日) 03:05:49
日本語が不自由だからPEAR()笑なんてカスみたいな勝手ライブラリ使うんだろ
どう考えても上級PGがノウハウもって書いた独自ライブラリの方が優れてる
536デフォルトの名無しさん:2009/05/10(日) 03:06:37
>>500ですけど、朝まで続くの?
537デフォルトの名無しさん:2009/05/10(日) 03:14:08
>>533
ペラDBってなんですか?www
538デフォルトの名無しさん:2009/05/10(日) 05:17:55
<?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で見ると、すげーおもしろいよ。
539デフォルトの名無しさん:2009/05/10(日) 05:20:16
データーベース構成

サーバー localhost
ユーザー名 root
パスワード pass

データーベース名 aaa
テーブル名 bbb

テーブル構成

id | name | value

idはプライマリーキーで、
オートインクリメント。
540デフォルトの名無しさん:2009/05/10(日) 05:38:32
面白くはないと思うけど
541デフォルトの名無しさん:2009/05/10(日) 05:39:06
×自分が作ったほうがバグが少ないという
○自分が作ったライブラリなら、バグ出ても自分で直せる
542デフォルトの名無しさん:2009/05/10(日) 05:40:54
PEAR_DBくらい何処でも使われてるライブラリなんて
そもそも使って困るようなバグなんて絶対にないし
仮に万が一出ても速攻で修正されるわ
543デフォルトの名無しさん:2009/05/10(日) 05:44:38
>>541
次の行もみてねw

あと>>530は、オープンソース限定の発言でした。>失礼
544デフォルトの名無しさん:2009/05/10(日) 05:57:14
<?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と同じ。
545デフォルトの名無しさん:2009/05/10(日) 06:18:35
<?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);
?>

------------------------------------------------------------------
↑これが、データーをアップデートするときのコード。
データーベース構造はさっきとおなじ。
546デフォルトの名無しさん:2009/05/10(日) 06:20:09
これで、SELECT,INSERT,UPDATE、の
3つの構文が使えるようになりました。

あとはもうオレ様無敵状態。
547デフォルトの名無しさん:2009/05/10(日) 06:22:08
>>546
つせめてPEARでも使ってよと思うんだけど
548デフォルトの名無しさん:2009/05/10(日) 06:23:16
>>546
DELETE

あと何が凄いってコネクションクローズしてないことだな
549デフォルトの名無しさん:2009/05/10(日) 06:38:13
PDOをつかえば、sqlサーバ入れ替えられるよって云ってみたが、
お勧めのSQL鯖との親和性を証明できぬ。
550デフォルトの名無しさん:2009/05/10(日) 06:55:33
SQLサーバってまさかDBMSのこと?
551デフォルトの名無しさん:2009/05/10(日) 07:37:23
deleteとかって、
普通、使わないと思うんだよね。
552デフォルトの名無しさん:2009/05/10(日) 08:17:10
なんで?
553デフォルトの名無しさん:2009/05/10(日) 09:13:27
確かにupdateで削除フラグ立てるケースが多いな。メンテ時とかに一括削除したり。
554デフォルトの名無しさん:2009/05/10(日) 12:29:40
スレ間違いならスマン
PHP4を使ってるんだが、

$output = '<emoji=1>';
print($output);

のようにすると、<emoji=1>が出力されない。空。

<br />のようなHTMLは出力されるけど、独自タグが出力されない。
これって、サーバー側とかPHPで何か設定とかあるのか?

555デフォルトの名無しさん:2009/05/10(日) 14:44:16
>>553
DBによってはupdateって、コピー先のデータを書き換え、元のところに
システム側でのDeleteのフラグを立てるんだよね
この辺は仕様把握しておかないとボトルネックになる

ウチだと元に戻せること前提だから、消すこと事態がないんだけど
556デフォルトの名無しさん:2009/05/10(日) 15:22:12
ホスト変数が使えない旧mysql APIとか
へんてこ仕様山盛りのunified ODBC APIは
もう捨てちゃえばいいのに。
557デフォルトの名無しさん:2009/05/10(日) 15:33:05
>>474
サンクス。その方法でやったらうまくいった。
558デフォルトの名無しさん:2009/05/10(日) 23:51:00
今日はOOPの勉強するかな。
559デフォルトの名無しさん:2009/05/11(月) 00:20:27
もしかして、
クラスの、メンバ変数定義のところで、
$a=$a*2;

とかって、計算をしたら、ダメなのかな?
560デフォルトの名無しさん:2009/05/11(月) 00:24:14
やったこたないが、検証してみれば分かるだろ?
561デフォルトの名無しさん:2009/05/11(月) 20:26:30
マニュアル読めば分かるだろ?
562デフォルトの名無しさん:2009/05/11(月) 22:52:36
ここはプログラム板ですよ。
「マニュアル読め」しかいえないキチガイは
かえってください!
563デフォルトの名無しさん:2009/05/11(月) 23:33:51
じゃあ google-toi, s'il te plait
564デフォルトの名無しさん:2009/05/12(火) 01:13:37
>>559
メンバー変数定義?

class test
{
private $a = $a * 2;
private $b;

function __construt()
{
~~~~
}

}


ってことか?
565デフォルトの名無しさん:2009/05/12(火) 01:15:52
=w=)コンストラクタでやりゃいいだろ・・・
566デフォルトの名無しさん:2009/05/12(火) 01:46:58
>>565
おお。
そのためにコンストラクタってあるんだ?
567デフォルトの名無しさん:2009/05/12(火) 01:51:38
なんなんだが・・・
568デフォルトの名無しさん:2009/05/12(火) 02:50:29
わしゃーてっきり

self:$:hogera

かと
569デフォルトの名無しさん:2009/05/12(火) 19:00:13
つーか前後関係の説明がさっぱりないから、意味不明
570デフォルトの名無しさん:2009/05/12(火) 20:13:44
>>562
プログラム板だとなぜにマニュアル読まないんだ?
あと,マニュアルに書いてあることをなぜわざわざ質問するんだ?
571デフォルトの名無しさん:2009/05/12(火) 21:36:41
「マニュアル」
しか言えない人はこなくていいです。
帰ってください。
572デフォルトの名無しさん:2009/05/12(火) 21:50:12
まあその程度でも給料もらえるんだよね、PHPプログラマって。
ドキュメント読んで探すより回りのデキる奴に聞いたほうが早い
(邪魔だが朝出した簡単な課題に1日かけられるよりマシかも知れない)
573デフォルトの名無しさん:2009/05/12(火) 21:53:46
他人を逆引きリファレンスにするのはだーれだ!
おれら、生き字引じゃ、なーいんだ!
574520:2009/05/13(水) 00:42:29
未だに設定が上手くいきません・・・・
skip-character-set-client-handshake
を書いてみたりしたのですが、全く変化ありません。
色々なサイトの情報を全て試したので元に戻せるのかも微妙です^q^

どこかにまとめて記述してあるサイトを教えてください。
575デフォルトの名無しさん:2009/05/13(水) 01:10:26
何を? っていうか現状どうなってるか書かねーからこっちも何も言いようが無いんだけど
576デフォルトの名無しさん:2009/05/13(水) 07:22:14
>>574
>色々なサイトの情報を全て試したので元に戻せるのかも微妙です
戻せないなら全部消してインストールしなおしがおすすめです。
これを機会にバージョン管理ツールの使い方をちょっとかじって
楽に戻せるようにしておきましょう。
577デフォルトの名無しさん:2009/05/13(水) 20:04:31
>>574
最初の質問がどこにあるかわからないから、
もう一回最初から質問書いて。
578デフォルトの名無しさん:2009/05/13(水) 21:33:33
svn使ってるけど、本番サーバのフォルダにリポジトリと同期させるのが
コマンドラインでやるしかなくなったことでひるんでる。
作業用クライアントマシンにPHP環境仕込んだけど、やっぱサーバの
環境とはかなり違う・・・憂鬱。
579デフォルトの名無しさん:2009/05/13(水) 21:44:08
svnで本番環境に展開するのと
クライアントにPHP入れたことに何か関連性があるのか?
580デフォルトの名無しさん:2009/05/13(水) 22:33:48
>>579
ない。
581デフォルトの名無しさん:2009/05/13(水) 22:34:42
$a_a++;
ってやったら、プラスされないんだけど、
なんで?
582520: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
583デフォルトの名無しさん:2009/05/13(水) 22:46:38
UFT8
584デフォルトの名無しさん:2009/05/13(水) 22:53:04
> MySQLにマルチバイト文字を追加し

発行したSQLくらい書け
585デフォルトの名無しさん:2009/05/13(水) 23:16:26
>>583
早速直しました。ありがとうございます。

>>584
INSERT INTO `test` (id,name) values (0012,'ああ')
でphpから挿入しようと試みました。
マルチバイト以外は正常に挿入できたので文法に間違いはないと思います。

utf8で全て揃えたら今度は挿入時にエラーが発生するようになってしまいました・・・・

586デフォルトの名無しさん:2009/05/13(水) 23:31:22
>>585
・・・・・・・・・・。で、エラー文を書く気は無いのかい。
587デフォルトの名無しさん:2009/05/13(水) 23:34:07
PHP暦2週間でくだらない質問すいません。

File_Archive::extract
        ↑このコロン二つってどういう意味なんでしょう?
文法とか調べたけど全然載ってないので・・・・
588デフォルトの名無しさん:2009/05/13(水) 23:39:19
>>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)

と出てきます。
少し前までは文字化けしながらも挿入できたのですが・・・
589デフォルトの名無しさん:2009/05/13(水) 23:41:55
>>585
INSERT INTO `test` (`id`,`name`) values ('0012','ああ');

こうじゃダメかい?
590デフォルトの名無しさん:2009/05/13(水) 23:42:19
>>587
親クラスのメソッドとか、メンバに
アクセスするってこと。

たとえば

親クラスA{

unko-
}

だったら、子クラスがBだったら、
親クラスAのメソッドunko-にアクセスしたかったら、
A::unko-

って書く。
591デフォルトの名無しさん:2009/05/14(木) 00:00:59
>>589
出来ませんでした・・・。
INSERT INTO `test` (id,name) values (0012,'aa');
にするとすんなり挿入できるのですが・・・・

utf8 UTF8 UTF-8 など表記の違いがあるのでしょうか
592デフォルトの名無しさん:2009/05/14(木) 00:05:55
ソースがutf8nじゃ無いとか面白いことしてないよな。
593デフォルトの名無しさん:2009/05/14(木) 00:13:44
>>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' )
  ";
594デフォルトの名無しさん:2009/05/14(木) 00:25:09
>>592
sjisだったりしてなぁ。
595デフォルトの名無しさん:2009/05/14(木) 00:40:15
596デフォルトの名無しさん:2009/05/14(木) 00:52:53
>>591
phpinfoで設定確認をされました?
597デフォルトの名無しさん:2009/05/14(木) 00:55:16
PHPてBOMに対応してないんだ、
勉強になった>結構はまりますよね。
598デフォルトの名無しさん:2009/05/14(木) 01:12:33
>>591
あと、mysql_set_charset関数は、ためしました?
mysqli_set_charseじゃないよ。
ttp://www.phppro.jp/phptips/archives/vol42/1
599デフォルトの名無しさん:2009/05/14(木) 01:17:08
すみません、>>598は間違いかも。

ttp://arumtaunsaram.tumblr.com/post/102893729/php-mysql
600デフォルトの名無しさん:2009/05/14(木) 01:29:38
ごめんなさい、ごめんなさい。
>>599も見なかったことに。。。
ROMにもどります・・・

ttp://blog.ohgaki.net/set_namesa_mcb_asc
601デフォルトの名無しさん:2009/05/14(木) 01:53:26
>>600の続き。(連投すみません)
また違う指定されてる方もおられました。
MySQL、PDOとSET NAMESの組み合わせで、
鉄板の指定てあるのかな?

ttp://d.hatena.ne.jp/jrofbyr/20081228/p1
602デフォルトの名無しさん:2009/05/14(木) 09:53:34
for文とwhile文ってみんな使い分けてるの?
for文の方がコード少なくていいから、
while文使った事ほぼないんだけど。
603デフォルトの名無しさん:2009/05/14(木) 11:21:04
というか用途が全然違うでしょ
604デフォルトの名無しさん:2009/05/14(木) 12:14:15
while文で例えばインクリメントで加算していく処理とか。
605デフォルトの名無しさん:2009/05/14(木) 13:51:30
while は
テキストファイルを読み込む時 とか
DBからデータを取り込むとき
hashの処理とか
が多い(while not eof)

for は配列処理とか(個数が決まっているとか)が多いかも
606デフォルトの名無しさん:2009/05/14(木) 16:41:49
foreachもたまには思い出してあげてください・・・
607デフォルトの名無しさん:2009/05/14(木) 17:58:22
すまん そだね
608デフォルトの名無しさん:2009/05/14(木) 20:03:55
>>602
ファイルからデーター抜くときはwhile
609520:2009/05/14(木) 20:29:30
レス下さった方ありがとうございます。
phpinfoで確認した所、ちゃんとutf8に設定されていました。

mysql_set_charset()などの関数が使えればいいのですが、別途にインストールが
必要なのでしょうか?

Fatal error: Call to undefined function mysql_set_charset()
とエラーが出てしまいます。
610デフォルトの名無しさん:2009/05/14(木) 20:40:03
>>609
ちなみにPHPのバージョンは?
古いと関数自体ないよ

ttp://www.phppro.jp/phptips/archives/vol42/1
>mysql_set_charset関数はPHP-5.2.3から追加された
>MySQLのクライアント側の文字コードまで設定することができる関数です。
611デフォルトの名無しさん:2009/05/14(木) 23:50:19
sql でcharset指定できなかったっけ?
#postgresと間違えているか?
612520:2009/05/15(金) 00:20:02
諦めて一度全てアンインストールしてみます。
XAMMPでまとめて入れてみます。
613デフォルトの名無しさん:2009/05/15(金) 01:00:43
XAMMPインストールしたらデフォルトでマルチバイトが扱えました!!!!!1111
どうもお騒がせしました。
これからもよろしくお願いします
614デフォルトの名無しさん:2009/05/15(金) 01:06:07
いままでxampp使ってなかったの?
615520: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 はちゃんと調べたほうが
いいと思う
617デフォルトの名無しさん:2009/05/15(金) 15:08:45
PHP 5.2.3 以後に追加された
mysql_set_charset('UTF8');
の方が望ましい。

・・・らしいよ。
618デフォルトの名無しさん:2009/05/15(金) 15:54:31
SET NAMES だと正しくエスケープできない場合があるから
セキュリティ上よくない。
619デフォルトの名無しさん:2009/05/15(金) 17:40:06
>>618
utf8なら問題なくね?
620デフォルトの名無しさん:2009/05/15(金) 20:33:12
phpでシリアル通信のプログラムを作成しようとしています

お勧めのライブラリは何でしょうか
621デフォルトの名無しさん:2009/05/15(金) 20:55:52
シリアル通信つーてもいろいろあるわけだがUARTで良いのかえ?
622デフォルトの名無しさん:2009/05/15(金) 21:20:15
USBです
623デフォルトの名無しさん:2009/05/15(金) 22:58:43
USB経由でなんかデバイス接続して、
それのコントロールとかをPHPで書けるってことなのかえ?

すごいなあ
624デフォルトの名無しさん:2009/05/15(金) 23:03:48
>>620
とりあえずphpで作ろうとするなw
デバイスドライバがある前提にしたって、それに特化したライブラリがなきゃ話にならん
625デフォルトの名無しさん:2009/05/15(金) 23:10:22
>>624
いままでCとか組み込み系とかで
10年くらいやってきた人なんでしょう?たぶん。
626デフォルトの名無しさん:2009/05/15(金) 23:47:59
ならなぜJavaに行かんのだw
627デフォルトの名無しさん:2009/05/16(土) 06:32:05
>>617
phpのバージョンが不明だから 書いてみた
628デフォルトの名無しさん:2009/05/16(土) 13:33:53
foreachの必要性が良くわからん
629デフォルトの名無しさん:2009/05/16(土) 15:06:55
一度に挿入するデータが多すぎて(カラムが多すぎて)、phpの中に書くと大変かつ汚くなってしまうので
外部にクエリを書いて読み込みたいのですが、可能でしょうか?
630デフォルトの名無しさん:2009/05/16(土) 15:16:06
>>629
ライブラリが導入可能であれば、
O/R Mappingとかいいですね。
SQL文いらなくなります。
631デフォルトの名無しさん:2009/05/16(土) 22:11:07
>>629
クエリを生成するルーチンを書けばいいんじゃないかな
632デフォルトの名無しさん:2009/05/16(土) 22:50:12
>>629
俺は連想配列からクエリ生成するようにしてるよ
633デフォルトの名無しさん:2009/05/16(土) 22:59:08
>>628
配列からデーターを一個づつ抜いてきて、
なんかの処理をするときに便利だよ

配列を使わないのなら、得に使わないかもしれない
634デフォルトの名無しさん:2009/05/17(日) 00:34:29
最近のパソコンには”シリアルポート”(RS-232CとかUARTとか)が標準装備されていない。
むしろUSBコネクタに接続するシリアルポートの方が一般的だったりする。
若い人はそれしか知らんやろね。
635デフォルトの名無しさん:2009/05/17(日) 00:40:32
セントロニクス36ピンだろJK
636デフォルトの名無しさん:2009/05/17(日) 00:46:19
それはパラレル・・・・
637デフォルトの名無しさん:2009/05/17(日) 01:36:16
PCのパラレルポートはちいせえんだよ
あのセントロニクスの巨大コネクタがいいんじゃねぇか
638デフォルトの名無しさん:2009/05/17(日) 01:47:39
>>634
今、RS-232C⇔UBSの製品おおいよ
この間仕事で使ったよ
639デフォルトの名無しさん:2009/05/17(日) 01:51:11
デスクトップは今でも殆どRS-232Cはあるよ
ノートはなくなったけど
640デフォルトの名無しさん:2009/05/17(日) 02:28:43
>>629
プロシージャ使えばいいんじゃない。
641デフォルトの名無しさん:2009/05/17(日) 06:43:18
>>630
そこから吐かれるSQLの効率がよく問題になると思うのだが
#チューニングするときは、ちゃんとわかってないとできないぞ

>>633
それをいうならhashだろう?
642デフォルトの名無しさん:2009/05/17(日) 16:11:20
「hash」っていうのは、添え字がハッシュ値な配列じゃん。配列ジャン!
それに、添え字が連続した数値の普通の配列にもforeachは便利に使えるぞ。
643629:2009/05/17(日) 18:16:58
レスありがとうございます。
カラムが20以上あって何も考えずに書くと骨が折れます・・・。

ルーチンとは、forなどで回すということですよね?
その場合、トランザクションはどのようにすればよいのでしょうか?
644デフォルトの名無しさん:2009/05/17(日) 18:52:07
>>642
うーん 配列と実装は違うと思うよ
key<->val のmapはhash使ってると思うしw
#ちごうたかな?
645デフォルトの名無しさん:2009/05/17(日) 18:52:41
どのようにも何も普通にやればいいんじゃないかな
646デフォルトの名無しさん:2009/05/17(日) 19:01:38
test
647デフォルトの名無しさん:2009/05/17(日) 19:50:48
>>644
ま、この辺読んでから語ってくださいな
ttp://www.php.net/manual/en/language.types.array.php
648643:2009/05/17(日) 21:04:48
すいません、トランザクションは自己解決しました。
649デフォルトの名無しさん:2009/05/18(月) 22:49:17
登録フォームから新しく登録された人の情報を、その人のidの名前で新しくhtmlファイルを作って保存したいのですが、

$arr['id'] を新しく生成するページの名前
$arr に登録された情報が入っていて
$newpage に新しく生成するページのhtmlが<?= ?>込みで書かれているのですが

なにか上手い方法はありませんか?
650デフォルトの名無しさん:2009/05/18(月) 22:53:53
意味がわかりません
ソースを書いてください
651デフォルトの名無しさん:2009/05/18(月) 23:01:54

$arr=$array(id=>'0001',name=>'sato');
$newpage="
<html><body>
id=<?= $arr['id'] ?><br>
name=<?= $arr['name'] ?>
652デフォルトの名無しさん:2009/05/18(月) 23:05:55
その人のidの名前って、
0001.html ?
それとも、
naoko.html?
653651: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>

と書き込みたいです。
654デフォルトの名無しさん:2009/05/18(月) 23:15:03
そうですか。で?
655デフォルトの名無しさん:2009/05/18(月) 23:15:46
どこで行き詰ってるの?
656デフォルトの名無しさん:2009/05/18(月) 23:17:06
ようやくわかった。

0001ってIDの人がきたときに、
0001.htmlっていうHTMLファイルを作って、
そこにデーターを書き込みたい、ってことだな?
657デフォルトの名無しさん:2009/05/18(月) 23:18:13
$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
659デフォルトの名無しさん:2009/05/19(火) 01:53:40
<?php
$title='サーバサイド技術の学び舎 - WINGS';






$data1="「$title 」はサーバサイド技術の最新情報をお届けします。<br />";






$data2='「$title」はサーバサイド技術の最新情報をお届けします。<br />';
print($data1);
print($data2);
?>

---------------------------------
これで、できる。
660デフォルトの名無しさん:2009/05/19(火) 01:54:22
$title 」は


ここに、半角スペースを入れた。
eと、」のあいだ。
661658:2009/05/19(火) 02:00:07
できました!ありがとうございますm(_ _)m
助かりました(。・_・。)ノ
662デフォルトの名無しさん:2009/05/19(火) 02:08:51
どうやら文字コードで化けてたようだ
Shift-JIS以外だと何もせず動いた
663デフォルトの名無しさん:2009/05/19(火) 13:44:44
PHPを始めようと思い、環境を作りました
文字コードの設定に関して教えて下さい

サイトなどを見るとUTF-8かEUC-JPで構築されている例が多いのですが
どちらの文字コードの方が主流、またはおすすめなんでしょうか?
SJISで構築してみたのですが、文字の正規表現が上手くいかず
構築しなおそうかと思っています

宜しくお願い致します
664デフォルトの名無しさん:2009/05/19(火) 14:13:33
SJIS でうまくいかないと言うヤツは
UTF-8 にしても EUC にしてもうまくいかない。
まずは、なぜ SJIS でうまくいかなかったのか
それを解決してみろや。

SJIS か EUC か UTF-8 かは、サーバOSや
クライアントOS(Windowsとは限らないぞ、ケータイだってあるし)
にあわせて最適なヤツをその都度選定すればいい。
665デフォルトの名無しさん:2009/05/19(火) 14:34:20
オレはPC向けはUTF8、ケータイ向けはS-JISだな。
DB使わない場合はPC向けでもS-JISで作る事はあるけど。
666デフォルトの名無しさん:2009/05/19(火) 14:40:48
ちょっと迷ったので質問させてください。

@POSTがない場合に代用の値を入れる。
if($data != $_POST['data']) $data = 0;

Aデータを配列に入れ、キーを付けて再格納する。
$file = $file('./data.txt');
foreach($file as $xxx){
 $p = split('<>',$xxx);
 $data[$p[0]] = $xxx;
}

この二つより軽い書き方とかあるんでしょうか?
667デフォルトの名無しさん:2009/05/19(火) 15:15:03
間違えました、@は正しくはこうです。
if(!$data = $_POST['data']) $data = 0;
668デフォルトの名無しさん:2009/05/19(火) 17:53:07
$data = ( array_key_exists( "data", $_POST ) ? $_POST['$_POST'] : 0 );
669デフォルトの名無しさん:2009/05/19(火) 17:54:49
みすった・・・ orz

$data = ( array_key_exists( "data", $_POST ) ? $_POST['data'] : NULL );

array_key_exists だとエラーログも荒れないというのも重要です
670デフォルトの名無しさん:2009/05/19(火) 19:23:44
>>669
おお……ありがとうございます!
671デフォルトの名無しさん:2009/05/19(火) 19:54:21
とりあえず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
672デフォルトの名無しさん:2009/05/19(火) 19:56:32
間違えました、一番目はこうです。
if(!$data = $_GET['data']) $data = 0
結果0.0024509429931641/sec
673デフォルトの名無しさん:2009/05/20(水) 00:03:47
何で1000回も回す必要があるん?
数msの差なんてDBで・・・
674デフォルトの名無しさん:2009/05/20(水) 00:08:30
入門書って必ずこう書くべきだと思うのね。

(1)プリント分。hello
(2)変数、定数
(3)配列、連想配列(ハッシュ)
(4)if、switch(条件分岐)
(5)while,for,forech(ループ)
(6)ユーザー定義関数
(7)OOP
675デフォルトの名無しさん:2009/05/20(水) 00:10:23
自分だと(3)と(4)は逆かな
676デフォルトの名無しさん:2009/05/20(水) 00:11:36
そんでページの色は









にするべきだと思うのね。虹の色にあわせて。
677デフォルトの名無しさん:2009/05/20(水) 00:12:51
>>675
なんでだよ。ヘンタイ。
678デフォルトの名無しさん:2009/05/20(水) 00:16:07
>>677
プログラムを書かせるため。

表示、変数、分岐まで覚えさせて、それらでプログラムを作らせる
プログラムは覚えるだけじゃなく、自分で考えて書くことが大事だと思ってる
679デフォルトの名無しさん:2009/05/20(水) 00:21:28
(1)プリント分。hello
(2)変数、定数
(3)配列、連想配列(ハッシュ)

の間は、プリント文と変数と定数だけでいいんだよ!
680デフォルトの名無しさん:2009/05/20(水) 00:22:49
(A)まず直接print文でhelloを出させる
print "hello";

(B)
次に変数に入れて出させる
$a="hello";
print $a;

(C)
次に定数を教える

(D)
そん次に
配列を教える。
使い方はprint文だけ。
681デフォルトの名無しさん:2009/05/20(水) 01:16:44
俺は0章で他の言語の思想を尊重してバカにしない事をまず教える
682デフォルトの名無しさん:2009/05/20(水) 13:09:39
requireとincludeって使い方に何か違いがあるんですか?
includeは古い書き方だって聞いたのですが、そういう認識でいいんでしょうか?
683デフォルトの名無しさん:2009/05/20(水) 13:27:06
>>682
include → Warning 続けて動作する。
require → Fatal Error 実行停止

基本は
684デフォルトの名無しさん:2009/05/20(水) 13:27:55
あーすまん、どっちを推奨するか書きたかったが、用件によって違うんでなしで。
685デフォルトの名無しさん:2009/05/20(水) 13:43:35
>>683
requireだと読み込むファイルがなかったらそこで終わるということですか?
includeを使ったことがないので、厳密な違いがあるのかなと

requireを使ってれば間違いないという考え方は危険なんでしょうか?
686デフォルトの名無しさん:2009/05/20(水) 14:11:56
>>685
大体はrequireでオッケー
自分でエラー処理とかしたい場合はincludeを使うという感じかな?
687デフォルトの名無しさん:2009/05/20(水) 15:04:02
>>686
なるほど、そういう使い方ですか
まだPHPを始めて日が浅いので、色々やってみます

ありがとうございました
688デフォルトの名無しさん:2009/05/20(水) 19:22:33
ちょっと質問させてくれ。
ウニコードの整数配列から文字列を作りたいんだが、$array = array(0xE8, 0xC3, ... ); pack('C*', $array); だとうまくいかない。
とりあえず、文字境界で区切って、整数列の長さごとにswitchして
... case 2: pack('C*', $array[0], $array[1]); break; ... みたいな事やってるんだが、他にうまい方法しらない?
689デフォルトの名無しさん:2009/05/20(水) 19:37:40
似たようなことしてるんで、参考になれば。
http://www.ibm.com/developerworks/jp/opensource/library/os-php-unicode/
690688:2009/05/20(水) 22:56:32
>>689
情報どもです。遅くなってすまない。一応その辺りは一通り目を通してた。
html_entity_decodeで一括変換するのも試してみたが、元データがUTF8だから、実体参照にするための変換入れたりするよりは、>688の書き方を選んだ次第。
でも、switchの辺りとか、コードの見た目がアレな感じかなと。
PHP書くのが初めてなんで、他の関数とか、C#のparamsっぽいのとか、定型的な書き方の見落としがあるのかと思ってここに来た。

しかし、型制約のない言語はエラーチェックとかデバッグが大変やね・・・w。
691デフォルトの名無しさん:2009/05/21(木) 01:08:26
>>690
すまそ、何がしたいのか汲み取れなかった。

pack関数が配列をサポートしてないから、エラーなるね。
おそらくswitch〜caseの書き方しかないと思う。

数字だろうと文字だろうと基本は文字の書き出しです、ベースはWebですし。
バイナリ数使うとややこしくなるんで、文字列で書き出すしか。(フォーマットはしっかりして)

計算したあとSQL打つときは、ちゃんと枠にはめないと後々大変です ^^;
692デフォルトの名無しさん:2009/05/21(木) 03:52:39
>>691
いや、若干後出しっぽくなったかも。すまぬ。
PHPコードとしてもこれはアリみたいだからこのまま使うことにした。
サンクス
693デフォルトの名無しさん:2009/05/21(木) 16:58:41
$a = array(0xe3, 0x81, 0x82, 0xe3, 0x81, 0xbb);
$s = call_user_func_array('pack', array_merge(array('C*'), $a));
echo $s;
694デフォルトの名無しさん:2009/05/21(木) 22:45:56
このスレのルール

情報はあとだしで、
なるべく小出しでちょっとづつ出しましょう
695デフォルトの名無しさん:2009/05/21(木) 23:03:04
>>694
まてwww

↓この辺は、ぜひテンプレに入れてくれ
教えてクン養成マニュアル
http://www.redout.net/data/osietekun.html
696デフォルトの名無しさん:2009/05/22(金) 00:28:52
やっぱ逆引き辞書無いと不便だな、と昨日痛感したよ・・・
697デフォルトの名無しさん:2009/05/23(土) 00:46:00
>>696
頼むから、PHPマニュアルなんかと併用してくれよ

あと、そう言う人は人のソースをたぶんあんまり読んだりしないんじゃ
ないかという偏見を持ってみたり
他の言語でいうクックブックやレシピ集くらいまで行けば別だけど
698デフォルトの名無しさん:2009/05/23(土) 09:04:13
<?php
$a=rand(1,2);
if($a==1){
?>

aaa

<?php
}
else{
?>

bbb

<?php
}
?>


-------------------------------
こういう書き方って普通なの?
699デフォルトの名無しさん:2009/05/23(土) 09:37:12
普通っていうか、
aaaのところをprint "aaa";にするかどうかは人それぞれだろ。
700デフォルトの名無しさん:2009/05/23(土) 09:41:17
推奨はどっちなの?
701デフォルトの名無しさん:2009/05/23(土) 10:46:20
それはaaaやbbbの分量、それとaaaやbbbにPHP側から
埋め込みたいデータがどのぐらいあるかによる。
702デフォルトの名無しさん:2009/05/23(土) 13:33:38
>>700
読みやすい方
703デフォルトの名無しさん:2009/05/23(土) 13:51:47
witch 〜 case でやったほうが美しい・・・
704デフォルトの名無しさん:2009/05/23(土) 14:00:33
ていうか、それ動くのか?
705デフォルトの名無しさん:2009/05/23(土) 16:58:13
echoかprintで出力しろよ
もしくは外部ファイル読み出すとか
706デフォルトの名無しさん:2009/05/23(土) 17:00:37
switch 〜 caseじゃなくてか
707デフォルトの名無しさん:2009/05/23(土) 23:27:44
最近の流行のフレームワークを教えてくれ
708デフォルトの名無しさん:2009/05/23(土) 23:42:15
cakeでいいんじゃない
709デフォルトの名無しさん:2009/05/23(土) 23:46:40
>>708
レスThks

だよね。
ちょっと使い倒してみます。
710デフォルトの名無しさん:2009/05/24(日) 05:28:50
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" は壊れているため、表示できませんでした。」

ってなってしまう。なんで?
711デフォルトの名無しさん:2009/05/24(日) 06:15:11
Javascript で、

<script>

a="hello world!";
b=a.strike();
document.write(b);


</script>

こういうの見ると、ああ、OOPなんだな、って思うね。

なので、PHPで、おんなじようなことしたいんだけど。
どう書いたらいい?

OOPでクラスを書いてnewするの??
712デフォルトの名無しさん:2009/05/24(日) 06:24:05
<s><?php echo "hello world!" ?></s>
713デフォルトの名無しさん:2009/05/24(日) 06:35:19
>>712
ふざけんなゴミクズ。
PHPなめとんのか?コラ。
714デフォルトの名無しさん:2009/05/24(日) 06:36:09
SQLはじめると、型っていうのが出てくるんだよね。

とりあえず、数値だけでも、
tiniint
smallint,
int
って3種類あるんだけど、
127以下だったらtinyintでいいのか?
715デフォルトの名無しさん:2009/05/24(日) 06:38:17
>>710
そもそもGDライブラリ入ってる?
716デフォルトの名無しさん:2009/05/24(日) 06:42:54
>>711
マニュアルでクラス関連嫁。

>>714
せめてDBが何なのか晒そうや。
717デフォルトの名無しさん:2009/05/24(日) 07:46:16
<?php
foreach (range('a', 'z') as $letter) {
print $letter;
print "<br>";
}
?>

こういうことができるのが、PHPのすごいところ。

おなじことをperlでやったら、正規表現を駆使した
渾身の一作で、何十行
書かないといけないことやら。
718デフォルトの名無しさん:2009/05/24(日) 08:01:33
<?php
$a = uniqid();
print $a;
?>


これ、試してみたら、全然ユニークじゃないんだけど、
どういうこと?

生成されるIDの左側が常に一緒なんだけど??
719デフォルトの名無しさん:2009/05/24(日) 08:08:55
一文字でも違えばユニークだと思うが
ランダムと勘違いしてないか?
720デフォルトの名無しさん:2009/05/24(日) 08:13:06
>>718
http://www.phppro.jp/phpmanual/php/function.uniqid.html

<?php
// 接頭辞なし
// PHP 5 以降でのみ動作します
$token = md5(uniqid());

// よりよい、推測しにくい方法
$better_token = md5(uniqid(rand(), true));
?>
721デフォルトの名無しさん:2009/05/24(日) 08:17:47
PEARって別にincludeとかしないでも、
ソースの中にベタ書きしてもいいのか?
722デフォルトの名無しさん:2009/05/24(日) 08:21:15
他人に配布しないならいいんじゃね
723デフォルトの名無しさん:2009/05/24(日) 08:43:56
>>717
何がすごいのかわからんけど。

('a'..'z').each{|x|puts x}
724デフォルトの名無しさん:2009/05/24(日) 08:48:57
>>723
だからさ。
そういう書き方すると、
なにをやっているのか、意味が
まったくわからないわけじゃん。
725デフォルトの名無しさん:2009/05/24(日) 08:49:35
>>717程度の話ならどの言語で書いても数行じゃないか
数十行になるのはアセンブラくらだよ
726デフォルトの名無しさん:2009/05/24(日) 08:52:10
まぁ、ある程度簡単で読みやすく書けるところはいいと思うね

でもコメントは書こうよ・・・
727デフォルトの名無しさん:2009/05/24(日) 08:53:22
>>724
それは単に言語を読めて無いだけ
728デフォルトの名無しさん:2009/05/24(日) 08:54:12
>>724
普通に解るだろ別に
それはその言語を知らないから読めないだけじゃないか
729デフォルトの名無しさん:2009/05/24(日) 08:55:23
単にa〜zまでを出力するのに可読性を低くしたり数十行使ったり方がむしろ難しいと思うの
730名無し募集中。。。:2009/05/24(日) 08:56:08
だからDANあたりにPHP使いはアホとか言われるんだよまったく
731デフォルトの名無しさん:2009/05/24(日) 09:26:46
>>724
「PHPのすごいところ」って、そういう意味かw
まあ、>>717はわかりやすいからいいんじゃない?
別にすごいとは思わんけど…w
732デフォルトの名無しさん:2009/05/24(日) 10:19:01
>>717
perlではこう書けます。
foreach my $letter ('a' .. 'z') {
    print "$letter<br />";
}
同じくらい読み易いでしょ?
733デフォルトの名無しさん:2009/05/24(日) 10:22:55
むしろ正規表現を使うほうが難しいw
734デフォルトの名無しさん:2009/05/24(日) 11:39:26
>>717
>>723 はRubyの例だけど読みやすいように書いてみるか

('a'..'z').each do |x|
 puts x + "<br />"
end

これって、すごいのだろうか?w
735デフォルトの名無しさん:2009/05/24(日) 13:17:46
PHP しか知らないんだから PHP がすごいのも仕方ないw
736デフォルトの名無しさん:2009/05/24(日) 13:19:54
コージーお兄さん、サ
737デフォルトの名無しさん:2009/05/24(日) 13:21:50
誤爆失礼
738デフォルトの名無しさん:2009/05/24(日) 13:43:40
Perlだったら
print foreach a .. z, "<br>";
こんだけ。
739デフォルトの名無しさん:2009/05/24(日) 13:57:58
それいいな。
740デフォルトの名無しさん:2009/05/24(日) 14:15:33
>>738
ダウト。仕様を満たしていない。
741デフォルトの名無しさん:2009/05/24(日) 14:33:52
>>717
>おなじことをperlでやったら、正規表現を駆使した
>渾身の一作で、何十行
>書かないといけないことやら。

強引に正規表現を使ってやったぞ

(my $str = join('', 'a'..'z')) =~ s/(\w)/$1<br>/g;
print $str;
742デフォルトの名無しさん:2009/05/24(日) 15:29:15
>>717
Perlでやるとこう?
print join '', ('a'..'z'), '<br>';

または
print ('a'..'z');
print '<br>';

読みにくいかなぁ
743デフォルトの名無しさん:2009/05/24(日) 15:33:20
>>742
元のphpのコードでは、
一文字ずつ、後ろに"<br>"を付けるようになってるんだが…
744デフォルトの名無しさん:2009/05/24(日) 15:59:05
>>> 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 />'
745デフォルトの名無しさん:2009/05/24(日) 16:10:23
717は必ずレスがもらえるコピペ
746デフォルトの名無しさん:2009/05/24(日) 16:10:28
>>744
[Ruby]
for o in ('a'..'z')
 print o + "<br/>"
end
747デフォルトの名無しさん:2009/05/24(日) 16:17:02
>>746
素直にそう書けばいいのに、 Rubist ってやたら .each {|x| ... } を使いたがるよね。読みにくい。
748デフォルトの名無しさん:2009/05/24(日) 16:25:08
>>743
しまった><

じゃあこう
# aからzまで後ろに<br>を付けて出力
print map{"$_<br>"}('a'..'z');
749デフォルトの名無しさん:2009/05/24(日) 16:32:27
>>747
eachもmapもselectもsortもFile.openも似たような構文で書けるから。
なんでeachだけforみたいな別記法使わなきゃならんのという感じ。
rubyの世界の殻の中ではちゃんと統一はとれている。

rubyの外からだと独特で読みにくいのは認めるけど、こればかりは
「使ってみないと分からない」の世界じゃないのかなぁ。
750デフォルトの名無しさん:2009/05/24(日) 16:32:58
>>747
Ruby使いの人は、for使わない症候群なんですよ。普通は>>746みたいに書かない
751デフォルトの名無しさん:2009/05/24(日) 16:34:27
>>747
一言で言うと、「ダサイ」んだよ。Rubyで for 使うと。
他の言語で言うと、foreachを使うべきところで for使う感じ。
752デフォルトの名無しさん:2009/05/24(日) 16:48:38
>>751
Perlの場合、foreachと書くところでforと書いた方がスマートな場合を
Larry Wall自身が自著で幾つか例を挙げている。
753デフォルトの名無しさん:2009/05/24(日) 17:15:14
だからどうした、としか
754デフォルトの名無しさん:2009/05/24(日) 17:22:40
>>747
だって、for が each の構文糖なんだもん
755デフォルトの名無しさん:2009/05/24(日) 17:23:12
print "$_<br>" foreach 'a'..'z';
756デフォルトの名無しさん:2009/05/24(日) 19:14:36
携帯で画像をランダム表示したいのですが
どのようなスクリプトが使えるのでしょうか?
757デフォルトの名無しさん:2009/05/24(日) 19:24:22
<img src="<?php rand(1,10); >.jpg">
で1.jpg〜10.jpg用意しろ
758デフォルトの名無しさん:2009/05/24(日) 19:27:27
これはスクリプトではないので他の方お願いします
759デフォルトの名無しさん:2009/05/24(日) 19:35:42
javascriptでいいんじゃない
760デフォルトの名無しさん:2009/05/24(日) 19:44:37
>>757で何が足りないのか言ってくれないと次が出せない
761デフォルトの名無しさん:2009/05/24(日) 19:46:13
PHPのタグの閉じに?が抜けてるから
そのままコピペして動かなかっただけじゃないのかw
762デフォルトの名無しさん:2009/05/24(日) 19:46:44
この質問かつてないくらい様々なスレにマルチされてるな
763デフォルトの名無しさん:2009/05/24(日) 19:46:49
>>760
遅れてすいません
今サーバをもってないのですが
無料PHPサーバでおすすめあげてもらえませんか?
764デフォルトの名無しさん:2009/05/24(日) 19:47:33
>>762
まあ、初心者っぽいからねぇ
765デフォルトの名無しさん:2009/05/24(日) 19:49:48
>>763
Apacheでいいんじゃね?
766デフォルトの名無しさん:2009/05/24(日) 19:50:30
>>765
ありがとうございます!
767デフォルトの名無しさん:2009/05/24(日) 19:52:40
あぁ、後データベース使いたいならfirebirdがいいよ
768デフォルトの名無しさん:2009/05/24(日) 19:53:33
BDはXindiceの方がいいよ
769デフォルトの名無しさん:2009/05/24(日) 20:00:19
ありがとうございます!!

携帯ではJSは使えないようです
770デフォルトの名無しさん:2009/05/24(日) 20:03:30
いや今時のJSは携帯持ってるよ
771デフォルトの名無しさん:2009/05/24(日) 20:37:49
未だにcookieが使えない携帯があります
772デフォルトの名無しさん:2009/05/24(日) 20:53:57
>>757
すげえええ
773デフォルトの名無しさん:2009/05/24(日) 22:08:32
>>745
けどこのスレってPHP初心者大半 + 一部の分かってる人、と
思ってたら、わりと他の言語もたしなんでる人がヲチしてる
みたいなのが分かってちょっと驚いてるw
774デフォルトの名無しさん:2009/05/24(日) 22:34:53
MySQLで、レコードの数を知りたい時はどうかくの?
775デフォルトの名無しさん:2009/05/24(日) 22:58:42
>>774
見積書

内容           数量   単価
DBレコード調査      1   \50,000-
776デフォルトの名無しさん:2009/05/24(日) 23:49:42
>>775
ボロい商売だな
777デフォルトの名無しさん:2009/05/25(月) 00:02:22
あと勉強することっていったら、
e-mal、正規表現、MySQL、画像生成くらいかなぁー
778デフォルトの名無しさん:2009/05/25(月) 00:10:49
あとinclude_pathの意味がわからない
779デフォルトの名無しさん:2009/05/25(月) 00:11:41
なんでotuneの野郎がこんなスレ見てるのかマジで意味がわからない
780デフォルトの名無しさん:2009/05/25(月) 00:17:54
それと、pearとsmartyとcakeかな。
781デフォルトの名無しさん:2009/05/25(月) 00:27:43
>>773
LLバトルロワイヤルスレから人が来てるからな。
わざわざPHPの初心者スレをチェックする Ruby/Perl/Python 使いなんて
ほとんどいないだろ。
782デフォルトの名無しさん:2009/05/25(月) 00:40:20
PHPはスクリプト系の王者なんだから、
他の言語のことなんか気にしてないのにねー
783デフォルトの名無しさん:2009/05/25(月) 01:25:51
723
>('a'..'z').each{|x|puts x}

724
>だからさ。
>そういう書き方すると、
>なにをやっているのか、意味が
>まったくわからないわけじゃん。

まじっすか。
foreach (range('a', 'z') as $x) { echo $x; }
とおなじじゃないのか。
この程度で「意味がまったくわからない」というのなら、プログラム書くのやめたほうがいいよ。
いくらなんでも頭悪すぎる。

784デフォルトの名無しさん:2009/05/25(月) 01:27:55
単にRubyの構文知らなかっただけだろ
785デフォルトの名無しさん:2009/05/25(月) 01:41:02
>>783
アンカーの張り方くらい覚えてから書き込んでくれよ
786デフォルトの名無しさん:2009/05/25(月) 02:46:03
>>783
頭が悪すぎる
787デフォルトの名無しさん:2009/05/25(月) 02:54:04
>>783
しばらくROMったほうがいいよ。
788デフォルトの名無しさん:2009/05/25(月) 02:57:22
789デフォルトの名無しさん:2009/05/25(月) 02:58:03
>>783
はどうせotuneとかだろ
790デフォルトの名無しさん:2009/05/25(月) 07:25:19
ペチパーの低レベルさがまざまざと
791デフォルトの名無しさん:2009/05/25(月) 07:26:56
>>784
やってる奴じゃないと、普通はわかんないだろ・・・・
#そのくらいは想像せいや ってのもありだけど
792デフォルトの名無しさん:2009/05/25(月) 07:38:36
putsってあったらRubyかTCLだろJK
793デフォルトの名無しさん:2009/05/25(月) 07:44:04
>>724
Cしか知らない人がいきなりforeachとか'a' .. 'z' とか見たらそこで凍ると思うぞ。
方言みたいなもんなんだから言語が違ったら読みにくいのは仕方ないだろ。
794デフォルトの名無しさん:2009/05/25(月) 12:09:35
RANDMIZE
DIM
GOTO
GOSUB
RESTORE
READ
PEEK
POKE
IF 〜 THEN 〜 ELSE
FOR 〜 NEXT
モシ 〜 ナラバ イケ 〜
795デフォルトの名無しさん:2009/05/25(月) 12:42:03
tumblrからお越しの皆様は、半年ROMってろ
796デフォルトの名無しさん:2009/05/25(月) 14:55:44
tumblr のやつらってキモイよね〜
誰にも相手されてないくせに
やたら自意識過剰でさ〜

弱小ゴミクズ言語のくせにナマイキなんだよね〜
797デフォルトの名無しさん:2009/05/25(月) 22:50:30
<script>
a="byebye";
<a src="javascript:'window.alert(a);'">aaaa</a>
window.alert(a);
</script>

これをサニタイズするにはどうしたらいい?
798デフォルトの名無しさん:2009/05/25(月) 23:30:05
htmlspecialchars
799デフォルトの名無しさん:2009/05/26(火) 08:46:23
>>796
やめなさいってw
俺は両方見てるんだからさw
800デフォルトの名無しさん:2009/05/26(火) 09:25:22
>>797
高木「サニタイズ言うな」
801デフォルトの名無しさん:2009/05/26(火) 11:29:58
>>797
意図がわからない
scriptタグの中にHTMLを書くってのは何か意味があるの?
何のために「サニタイズ」したいのかもわからない
802デフォルトの名無しさん:2009/05/29(金) 03:32:32
http://oshiete1.goo.ne.jp/qa2543364.html

ここに、

>extract($_POST);
>とか、
>extract($_GET);
>とすれば、$_POST[aaa] は $aaa へ展開され、そのまま変数に入ります

って書いてあるんだけど、こんなやり方あるの?
803デフォルトの名無しさん:2009/05/29(金) 03:34:32
グーグルで検索したら、extractは危険だから使うな、って
書いてあるのだが、どうなのだ?
804デフォルトの名無しさん:2009/05/29(金) 07:29:55
>>803
危険な理由を考えてみ。宿題。

昔のPHPはクエリのaaaは自動的に$aaaに展開されていた。
危険すぐるので今はoptional、非推奨になっている。
805デフォルトの名無しさん:2009/05/29(金) 07:33:42
普通に考えて、野良クエリーがグローバル変数を侵食するとか怖くてつかえんだろw
806デフォルトの名無しさん:2009/05/29(金) 08:22:54
GETで送ったaaaが普通に$aaaに入るはんて怖すぎるw
でも初期につくったPHPプログラムを見ると、普通にif ($aaa == とか使ってて
え、なにそれこわい
807デフォルトの名無しさん:2009/05/29(金) 13:10:18
>>806
昔はそれしかできなかったんだから、しょうがないでしょ?
機能的にできなかったことで、今の観点から文句をいわれてもねぇーって感じ
808デフォルトの名無しさん:2009/05/29(金) 13:52:25
いや、$HTTP_VARSは使えたでしょ
809デフォルトの名無しさん:2009/05/29(金) 15:56:20
お伺いします。
よくこういうmysql_queryの使用例が出てくるのですが、

mysql_query('SELECT * FROM テーブル WHERE なんとか);

WHEREってどんな役割があって、どう使うものなのかがどうしてもわかりません。
色々とググっては見たのですが、具体的な解説は見付かりませんでした。
どうか教えてください。
810デフォルトの名無しさん:2009/05/29(金) 16:46:36
>>809
板違い。データベース板で聞いてよ。
SQL文については初歩の初歩だから、入門書の1冊くらい読みなさい。
811809:2009/05/29(金) 17:15:27
そうでしたか、ごめんなさい。
でもおかげで「SQL文」で検索したらわかりました。
いままではPHPを使っているんだから、
PHP関連から探すという先入観があり進めなかったようです。
812デフォルトの名無しさん:2009/05/29(金) 17:45:33
>>808
そういう問題じゃない。
この野良クエリが変数に入ることがなぜ脆弱性を引き起こすのか理解してないな。
813デフォルトの名無しさん:2009/05/29(金) 19:17:19
大げさだが、環境変数書き換えるようなもんだからな
814デフォルトの名無しさん:2009/05/29(金) 23:18:50
>>809

WHERE id=1 とか。
815デフォルトの名無しさん:2009/05/29(金) 23:19:35
>>810
お前が板違い。

質問に一切答えない
webprog板のキチガイ自閉症どもから
避難してこのスレができたのだ。
816デフォルトの名無しさん:2009/05/29(金) 23:21:09
>>811
PHPを学ぶときに、
「PHPだけ学べばいいんだ」
って思って最初はじめるんだけど、じきに

PHPプラス、SQLも学ばなくては
いけないんだ、って気づかされる。

つまり、PHPとMySQLのバイリンガルになることを
強要されるってこと。これがキツイ。
817デフォルトの名無しさん:2009/05/29(金) 23:37:33
PHPで自分でテキストいじり倒すよりはるかにSQLのほうが簡単だと思うが
SQLなんてエディタで楽々吐けるんだし
818817:2009/05/29(金) 23:38:43
そういう意味ではPHPとDBはセットなんだと思うよ
今の時代でPHPだけってシステムのほうがほぼ無いんじゃないかな
819デフォルトの名無しさん:2009/05/29(金) 23:40:15
>>815
そういうおまえも、質問には何一つ答えてないワケだが。
820デフォルトの名無しさん:2009/05/30(土) 00:05:13
SQL補完できるエディタとかってあるの?
821デフォルトの名無しさん:2009/05/30(土) 00:25:29
>>820
会社ではAccess、自宅ではPHPmyAdmin使ってる

Winアプリでフリーだとこのあたりが有名かな

黒猫 SQL Studio
http://kuronekosoft.ewinds.net/sqlstudio.aspx

A5:SQL Mk-2
http://www.wind.sannet.ne.jp/m_matsu/developer/a5m2/

ODBCで準備しないといけないが、マニュアル見ればすぐ出来ると思う
あと、PostgreSQLならWinでインストールするとSQLエディタも付いてる
822デフォルトの名無しさん:2009/05/30(土) 00:43:30
PHP+Postgreは少数派か・・・

んー、スーパーグローバルの値を、SQL文にそのまま使うのは怖いね。
限定された空間で作るなら適当にやるけど、公開サーバーだと・・。

とりあえずは、SQL Escapeは必須だし、$_POSTで受け取った変数の中身
くらいはチェックに掛けるな
823デフォルトの名無しさん:2009/05/30(土) 00:57:24
結局、このスレには
> WHEREってどんな役割があって、どう使うものなのか
という問いに答えられるヤツは一人もいないのか。
824デフォルトの名無しさん:2009/05/30(土) 00:59:22
>>823
うん、答える人はいないよ
825デフォルトの名無しさん:2009/05/30(土) 00:59:41
そんなの調べれば出てくるからな
826デフォルトの名無しさん:2009/05/30(土) 01:26:10
>>823
だいたい「どんな役割があって、どう使うものか」を聞きたい人って
学校や会社の宿題が終わらなくて2chで済まそうっていう屑ぐらい
じゃん。そんな屑にいちいち答え教えてたらキリがない
827デフォルトの名無しさん:2009/05/30(土) 04:46:24
PHPスクリプトがサーバーで動くとき、
アパッチ権限で動く場合と、
自分の権限(自分のアカウントがもしyamadaならyamada)で動く場合と、
この2つだけ?

もっと他にもあるの?
828デフォルトの名無しさん:2009/05/30(土) 04:49:10
「サーバー権限」
「ユーザー権限」

この2つ?
829デフォルトの名無しさん:2009/05/30(土) 06:02:00
>>816
PHPっつーかweb開発やってるとPHP、SQL、DB、HTML、CSS、JavaScript(AJAX)、Flash(ActionScript,Flex)、
サーバー構築の知識、サーバーメンテの知識、一通り必要だぞ。
別にPHP関係なくて、Ruby や Railsだって今時そうだし。
それで、キツイ言ってたら、プログラマーやってけないと思うけど。
830デフォルトの名無しさん:2009/05/30(土) 07:04:33
つか簡単でしょそれら
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 指定する場合もあるけど
832デフォルトの名無しさん:2009/05/30(土) 08:16:40
>>830
簡単なことしかやってなかったらいいんですけどねえ・・・
833デフォルトの名無しさん:2009/05/30(土) 09:13:26
「つか」って何ですか?
834デフォルトの名無しさん:2009/05/30(土) 11:19:55
>>827
> Apacheからたたく場合はApacheのuser(and group -> httpd.conf) だっしょ?
suEXECでユーザ権限で動くサーバも多い。
設定次第では、特定の既存ユーザのアカウントで動かすこともできるが、まあこれは
Apacheのuserってことになるのかな。
他のパターンはあるのかなってことだろ?
835デフォルトの名無しさん:2009/05/30(土) 11:21:09
>>834>>831へのレス
836デフォルトの名無しさん:2009/05/30(土) 11:22:01
つーか、どうせこんな質問、レスばかりになるんだから、ム板にPHPを持ってくるのは
やっぱり激しくミスマッチな気がする。
837デフォルトの名無しさん:2009/05/30(土) 11:46:37
>>834
あ そうだ すまん
#自分じゃつかわねーから 忘れてた
838デフォルトの名無しさん:2009/05/30(土) 12:03:27
>>816
>PHPとMySQLのバイリンガルになることを強要される
飯のタネだと思えばつらくもなんともない
839デフォルトの名無しさん:2009/05/30(土) 12:10:13
てか、言語だけ覚えてもただの言語マニアだろ。
どんな言語でも実用的なもの作ろうと思ったら、
システムや外部ツールとの連携を覚えることは必要になる。

PHPでもコマンドラインツールだけ作る用途で使うなら、
SQLなんて知らなくてもいい。
むしろパイプやファイル入出力のほうが有用になる。
840デフォルトの名無しさん:2009/05/30(土) 12:23:38
このスレ、板違いだろ
841デフォルトの名無しさん:2009/05/30(土) 12:36:08
>>839
覚えたばっかりで使ってみたかったんですね。
842デフォルトの名無しさん:2009/05/30(土) 12:43:54
SQLとファイル入出力を両方知った上でどちらを使うか洗濯するのであって
片方しか知らなくていいってことじゃないと思うが
俺は文字を表示したいだけだからechoだけで十分だし
そこまでできてるので俺はPHPできる人ですって話にはならんわけで
843デフォルトの名無しさん:2009/05/30(土) 13:10:13
>>832
そりゃ君の精進が足りないのだよ
844デフォルトの名無しさん:2009/05/30(土) 13:26:56
別に1年目からそれを全て求められるわけじゃないからねぇ
5年やって純粋なPHP以外は解りませんだったらアホだけど
5年やればそのうちの8割くらいは触ることになるはずだから
845デフォルトの名無しさん:2009/05/30(土) 18:24:27
いや、5年もいらないだろ
846デフォルトの名無しさん:2009/05/30(土) 19:11:02
じゃ何年?
847デフォルトの名無しさん:2009/05/30(土) 19:22:28
メールフォーム一筋で食ってきた俺なんか未だにSQLとか書いたこと無いぜ仕事ください
848デフォルトの名無しさん:2009/05/30(土) 19:29:17
触るだけなら1年程度で十分だな。
練りこむのを入れるなら3年強。
849デフォルトの名無しさん:2009/05/30(土) 19:31:24
仕事就いて即バグ取りとメンテ、増築させられたよ
C++やってたから文法覚えるだけで特に苦にならなかった

SQLもいくつか見たら、ノリ判るし
850デフォルトの名無しさん:2009/05/30(土) 19:33:21
ノリでプログラムを理解する奴を俺は信用しない。
851デフォルトの名無しさん:2009/05/30(土) 19:42:03
いや、SQLぐらいプログラムできるなら判るでしょ・・・
852デフォルトの名無しさん:2009/05/30(土) 19:51:55
>>847
それはさすがにもう食い扶持ないと思うぞ……。
つーか今までよく食ってこれたなお前。
853デフォルトの名無しさん:2009/05/30(土) 19:58:56
>>850
この場合、ノリってのはプロジェクトの作法みたいなものを指してるんじゃね
条件の記述パターンとかトランザクションのかけ方とか
854デフォルトの名無しさん:2009/05/30(土) 20:56:06
5年必要って話じゃなくて5年やって駄目ならアホって話だよ
大きなプロジェクトなら1年2年スパンだからずっとコードと保守って事もあるし
それで2年やってサーバ知らないからアホって事にはならんけど
次も同じ仕事を2年3年続けてたらアホだよねって
855デフォルトの名無しさん:2009/05/30(土) 21:36:58
>>853
思うに、誤解の無い表現が出来ない奴は、職業プログラマは駄目だってことじゃね?
856847:2009/05/30(土) 23:16:58
>>852
スピード対応重視だったせいか去年までは何故か食えてたんだけど流石に無理があったw
今はデザイナの嫁さんの稼ぎで食ってる主夫≒ニートでござい。
857デフォルトの名無しさん:2009/05/30(土) 23:33:24
確かにメールフォームの需要がなくなるってことはなさそうだな

食えるかどうかはともかくw
858デフォルトの名無しさん:2009/05/31(日) 00:21:36
>>851
やってることのレベルによると思うけど、それは無理
単純なSQLだけならありだろうけど、そんな奴は迷惑
#と数年前の自分に言いたいw
859デフォルトの名無しさん:2009/05/31(日) 00:25:43
MySQL使いに多いんだけどJOINなしのSQLを何度も投げるのはやめて欲しい
もう3.23の時代じゃないんだぞ
860デフォルトの名無しさん:2009/05/31(日) 00:49:02
>>859
・その方がスクリプト(とDBの構造)がシンプルになる。
・その方が 圧 倒 的 にパフォーマンスがいい場合がある。

なんて理由から、JOINを選択的に排除するのは特に問題だとは思わない。
逆に、とにかくJOINする、っていう考え方が害になることも多いんだよ。
4〜5個JOINを入れ子にしたSQLとか、書いた奴以外が読むのは激しく負担。
また、そこでバグでも出された日には目も当てられない。
861デフォルトの名無しさん:2009/05/31(日) 00:53:35
いやだからその考え方が江戸時代の考え方なんだよったく
862デフォルトの名無しさん:2009/05/31(日) 00:55:05
あまり複雑なJOINだと大量に重複データーが混じるが、それって問ボトルネックになるのかな?
863デフォルトの名無しさん:2009/05/31(日) 01:02:48
それはSQLが間違ってるから混ざるのでは
外部結合なんて混ざりようがないだろ
864デフォルトの名無しさん:2009/05/31(日) 01:05:33
JOINがネックになってればそこはチューニングするんだから、
最初からJOINなしで作るのはおかしい。
よっぽど統計の取り方がクソなRDBMSでも無い限り、JOIN使った方が速い。
JOINは害って言ってる奴は、MySQL4しか使ったこと無いんじゃないか。
865デフォルトの名無しさん:2009/05/31(日) 01:07:35
なんで突然外部結合に話を限定するんだ。
それこそまさに、限定的に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
866デフォルトの名無しさん:2009/05/31(日) 01:10:25
せめて読みやすくしようと勝手にインデントしてみたが、括弧の対応でミスった。
867デフォルトの名無しさん:2009/05/31(日) 01:10:50
それって>>859が書いたんじゃなくてお前が書いたんだろw
言いがかりで正当化しようとするなよ
868デフォルトの名無しさん:2009/05/31(日) 01:12:06
俺も何度か途中参画したプロジェクトでテコ入れしたことあるけど
結合してクエリ投げる回数減らした方がパフォーマンス上がる場合が多かった
869デフォルトの名無しさん:2009/05/31(日) 01:14:43
みんながみんなMySQL使ってるわけじゃないだろ。
接続コストが高いけど性能も高いPostgreSQLやOracle使ってるなら、
JOINした方が全然早い。
単純読み出し命のMySQLくらいじゃないか。都度投げた方が早くなる可能性高いのは。
870デフォルトの名無しさん:2009/05/31(日) 01:19:34
LAMPって知ってる?
ポスグレやOracleはそもそもLAMPの保障外だから
事例としては稀で、実務では通常ありえない組み合わせ
PHPでDBと言えば、特別指定しない限りMySQLのことだから
871デフォルトの名無しさん:2009/05/31(日) 01:26:04
そ、そうだね…
話題変えようか…
872デフォルトの名無しさん:2009/05/31(日) 01:27:12
なんか久々に聞いたなLAMPって単語
873デフォルトの名無しさん:2009/05/31(日) 01:33:55
>>867
>>865のことか?
俺が書いたんではなく、読まされたんだよ。ボトルネックっぽいからと。
結論から言うと、そのデータを取得するためには、90%は無駄な処理。
それを確認するのにどんだけソースとテーブルの関連を調べたか。

最初から、シンプルに3つ位のクエリを出して処理して十分追いつく内容だったし、
マトリックスを作るにしても、もぶっちゃけこのSQLよりPHPで作った方が早かった。
大事なのは、それを突き止めることも困難なスパゲッティSQLを自己満足で書くんじゃないと。

チューニングの結果として複雑になるならまだしも、最初から複雑に書く奴は馬鹿じゃないか?


>>870
さすがに恥ずかしい切り口じゃね?それは。
PostgreSQLも、8.x系統からはまたライトユーザの視野に入るようになってきてる印象。
それまでは、結構昔からDB使ってる人や会社で好まれるもの、っていうイメージがあったが。
874デフォルトの名無しさん:2009/05/31(日) 01:39:12
それはそのSQL書いた奴が馬鹿なだけで、
JOINと言う仕組みが悪いわけじゃないような気が。
875デフォルトの名無しさん:2009/05/31(日) 01:45:20
PostgreSQLもWindows版つくったりと、ユーザー広げようとしてるしね

Joinより、ビューをDB側で用意したほうが圧倒的に早くなるよ
876デフォルトの名無しさん:2009/05/31(日) 01:48:52
なんだ、LEFT JOIN のことか
877デフォルトの名無しさん:2009/05/31(日) 01:57:36
なんだか勇気をもらえるスレだなココ
878デフォルトの名無しさん:2009/05/31(日) 02:03:35
>Joinより、ビューをDB側で用意したほうが圧倒的に早くなるよ

それはない
879デフォルトの名無しさん:2009/05/31(日) 02:26:00
viewったって中身は結合だから、たまたま速ければそれでいいんだけど
遅かった場合に直しようがないから結局最初からSQLで結合した方が楽だよ
880デフォルトの名無しさん:2009/05/31(日) 08:02:33
>>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
それは単なる言葉の定義。
そういう構成で使われることが多かった だけやん
誰が何の保障をしてくれるわけ?
882デフォルトの名無しさん:2009/05/31(日) 09:36:19
>>870
いやあの、LAMPって保障とかそういう言葉じゃないから。

既にあったDBがポスグレとかOracleとかあるからしねえ。
昔はポスグレの方が性能高かったから(今は知らん)か、ポスグレ指定されることもあるしねえ。
金あるとこはしょーもないシステムにOracle突っ込もうとするし。
883デフォルトの名無しさん:2009/05/31(日) 14:17:24
>>879
Oracleの待てビュー早くね?
#Ora使いじゃないからわかんないんだけど
884デフォルトの名無しさん:2009/06/01(月) 05:15:49
メールヘッダインジェクションとか
まじで勉強しないとダメなの?
885デフォルトの名無しさん:2009/06/01(月) 05:46:14
パスの相対指定のやり方とかってどうやるの?

外部から見られたら困る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

これでいいの?

だとしたら、相対パスの書き方はどうなるの?
886デフォルトの名無しさん:2009/06/01(月) 06:04:18
require_once('../../private_html/2.txt');

これでできた。
でも、ドキュメントルートを指定して書く
やり方あったよね。それ教えてよ。

[DOCUMENT_ROOT]

こんなかんじのあったでしょ。
887デフォルトの名無しさん:2009/06/01(月) 06:48:49
またお前か
888デフォルトの名無しさん:2009/06/01(月) 07:07:41
>最低限、CR、LFだけはチェックし、含まれる場合
>はセキュリティ上のエラーとして処理(攻撃が行わ
>れたとアラートを発生させる等)しなければなりま
>せん。


こんなこと書いてあるんだけど、
本当にこんなことしないといけないの?
889デフォルトの名無しさん:2009/06/01(月) 07:08:23
ここはプログラム板
C++やJavaの偉い人がきますよ
890デフォルトの名無しさん:2009/06/01(月) 07:33:50
>>888
SQLの場合、実装に穴があると「;」の後ろにLF入れられたら面倒なことになる場合があるけど、
それは穴の方が問題であってLFが問題じゃないよね。
他にCRLFが問題になる場面って思いつかないな。SQLの場合だけ気をつけてればいいかと。
891デフォルトの名無しさん:2009/06/01(月) 07:47:13
>>890
SQLの話じゃないよ。メールヘッダインジェクションの話だよ。
892デフォルトの名無しさん:2009/06/01(月) 09:49:44
>>891
ああ、なるほど。
893デフォルトの名無しさん:2009/06/01(月) 14:45:11
誰がアナルやねん!
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は正常に動いてるようなのですが。。

もうなにがなんだか…すいません
897デフォルトの名無しさん:2009/06/01(月) 21:53:29
xamppで失敗できる人がいるとは思わなかったw
単に使い方わかってないだけでインストールは一通り出来てんじゃないの?
何をもって「できない」と思ってるのか書いてくれないからわからんけどさ。
898896:2009/06/01(月) 22:33:17
なんとかでき?ました!笑
メモ帳で書いてたので拡張子がphpのつもりがtxtになってるのが原因でした。。

ありがとうございました!!

ちなみに、こんな一括インストールがあるのに、これが主流でないのはなぜでしょう?
これには何か欠点があるのでしょうか?
899デフォルトの名無しさん:2009/06/01(月) 22:36:48
・Windowsでは連続動作・セキュリティ的に脆弱
・一括インストールだと後のバージョン更新、ライブラリ追加ができない
・バージョンやライブラリ当の違う、複数の環境に対応したテストがしづらい
900デフォルトの名無しさん:2009/06/01(月) 22:43:06
>>898
秀丸使ったほうがいいと思うよ(メモ帳以外のエディタなら何でも)

>何か欠点
使いたいバージョンを手でインストしても、慣れればそう手間ではない
おまけがいっぱい入りそうなのが嫌
Linux鯖がメインでphp以外はディストリのパッケージを使うから
#Win版はzipを解凍
Postgresの方がメインだから
単なる趣味だから
901デフォルトの名無しさん:2009/06/01(月) 22:44:25
まぁ、せっかくだからPHPエディタのスタンドアロン版とかお勧めする
簡易デバッグも出来るし(設定できればの話だが)
902デフォルトの名無しさん:2009/06/01(月) 22:45:36
>>898
お手軽開発用としては割と主流だけどね。
本番用には>>899の理由含めて色々問題があるから使い辛いけど。
903896:2009/06/01(月) 23:30:20
そうなんですか。。。
僕は学校の課題を家でも出来るようにしたいだけだったので、たぶんこれで大丈夫です!
もしハマっていったらまた個別で使いやすいようにインストールしていきます。
ちなみにエディタはGreenPadを使うようにしました。一番簡単なようだったので。。。

いろいろありがとうございました!!
904デフォルトの名無しさん:2009/06/02(火) 01:11:20
>>885
まず http://www.php.net/manual/ja/ これをブックマークしといて。
それから
search for 欄にDOCUMENT_ROOT
を入力してからその右側のプルダウンからonline documentationを
選択してそのさらに右にある矢印をクリック。
気持ち悪いピンクの囲みに何か書いてあるだろう?
905デフォルトの名無しさん:2009/06/02(火) 12:34:17
xampp使うと成長しないからね
906デフォルトの名無しさん:2009/06/02(火) 14:35:27
$arr = (4,7,8,9)
上記配列で、
残りの1~9(今回の場合は1,2,3,5,6)までの値を配列に格納
する方法を教えてください。
907デフォルトの名無しさん:2009/06/02(火) 20:18:19
普通に1から10まで回して、$arrに存在してなかったら追加でいいんではない?
908デフォルトの名無しさん:2009/06/02(火) 20:44:02
$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)
}
なのはなぜですか?
909デフォルトの名無しさん:2009/06/02(火) 21:19:26
トーナメント表などのお勧めな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
912デフォルトの名無しさん:2009/06/03(水) 01:22:39
>>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
913デフォルトの名無しさん:2009/06/03(水) 05:37:18
>>898
主流じゃないと思うが、検索する限りではWindowsではよく使われているようですよ。> XAMPP
914デフォルトの名無しさん:2009/06/03(水) 07:51:52
>>894
xamppにしたほうがいいよ。
915デフォルトの名無しさん:2009/06/03(水) 09:25:13
>>910
rangeという関数あるんですね。
ありがとうございます。
いろいろと活用できそうです。
916デフォルトの名無しさん:2009/06/04(木) 00:57:35
>>906>>908 もなんか質問がおかしいなぁ
>>910 の回答もきっと勘違いだし
頭悪そうなやつばっかだな
917デフォルトの名無しさん:2009/06/04(木) 01:01:23
いやだから文句言うなら回答例を
918デフォルトの名無しさん:2009/06/04(木) 01:24:03
>>917
おまえもばかだなあ。回答例なんてもう必要ないんだよ。
>>906 の質問の正解は >>908 で出てるだろ。>>906 = >>908 かもしれんが。
>>908 が意味不明な質問してるがきっと何か勘違いしてるんだろう。
>>910 は微妙な回答をしているが、これは >>906 の質問が悪いからだな。
919デフォルトの名無しさん:2009/06/04(木) 01:49:21
プログラムって、はじめてやるような例の場合、
精神的な負担やストレスがはんぱないよね。

ストレス度250%って感じ。

同じこと何回もやって、
「ああ、また例のあれだな」
って、先の展開が読めれば
なんてことないんだけど、1回目は
本当に脳の血管がぶちきれそうになる。
920デフォルトの名無しさん:2009/06/04(木) 02:00:39
>>919
そこで言うストレスっていうのは、時間内にできるかどうかもわからん!ってもんだろうな。

時間的な制限がよっぽどきっちきちでなければ、初回が一番楽しい。・・・は語弊があるか。
一番モチベーション高いけどな。
二度目は前回の反省を活かしていじる楽しみがある。(でも一番迷走しやすい)

逆に、三回目以降こそ苦痛で仕方がないような気がする。
どうせそのままでは使えなくてあちこちいじる必要があるのに、全体としてやってることは
前と同じっていう、なんとも言えない作業感が辛くなったりする。

また、前にやった処理と若干違う部分がなんとも修正しにくかったりした場合とかも、変に
あるものを活かそうとして逆に足を引っ張られたりしない?
921デフォルトの名無しさん:2009/06/04(木) 02:03:28
>>920
ああ、あなたは理系だね。
私は文系だから、ストレスを感じ取る
局面が正反対なの。
922デフォルトの名無しさん:2009/06/04(木) 06:28:58
unko大学からのアクセスのときだけ、
専用のページに飛ばすのって
どう書けばいい?

unko大学のリモホが、

abc-123.unko.edu

だったとしたとき。

リモホを変数に格納して、
ピリオドで区切って配列に格納して、
右から二つのセクターが、edu、unko、
と一致しているかどうかを==で調べて、
もしtrueなら飛ばす、これでいいの?
923デフォルトの名無しさん:2009/06/04(木) 06:38:15
>>922
別にそれでもいいけど普通htaccessでしょ。
924デフォルトの名無しさん:2009/06/04(木) 06:42:30
それでいいんじゃねーの
925デフォルトの名無しさん:2009/06/04(木) 07:03:41
>>923
ただ飛ばすだけでなくて、ログも取りたかった。
phpで全部制御すればなんでもできるでしょ?
926デフォルトの名無しさん:2009/06/04(木) 07:06:03
>>925
ログはHTTPdのログがあるじゃないか・・・。
まあPHPで済まして悪いことは何もないからそのままでもいいと思うが。
927デフォルトの名無しさん:2009/06/04(木) 07:36:12
無料のレンタルサーバーだから
アパッチのログは見れないんだよ、dude
928デフォルトの名無しさん:2009/06/04(木) 07:56:52
date関数って、どの時間帯が表示されるのかな?

php.iniの設定で決めるの?
929デフォルトの名無しさん:2009/06/04(木) 07:57:35
つまり自分のパソコンで実験してるときはJSTが表示されて、
レンタルサーバーにアップロードしたら、
そのサーバーのタイムゾーンで表示されてしまうのかな?

だとしたら、アタマこんがらがるね。
930デフォルトの名無しさん:2009/06/04(木) 08:06:04
なんでPHPerって、スレを乱立させるんですか?
931デフォルトの名無しさん:2009/06/04(木) 08:10:51
クッキーの受け入れを拒否してると、
セッションクッキーも受け取れなくなるの?
932デフォルトの名無しさん:2009/06/04(木) 08:20:21
ブラウザの開発元に聞いたら?
サーバ側の処理で「クッキーの受け入れ拒否」とかあるの?
933デフォルトの名無しさん:2009/06/04(木) 08:24:33
仮に誰かが血迷って次スレ立てるとしたら、少なくともスレタイを「PHP初心者@〜〜」にしとけ
それか、ここがム板での雑談スレって扱いなら、テンプレに質問スレへのリンクでも貼って置けよ。

クソスレ乱立させんな
934デフォルトの名無しさん:2009/06/04(木) 08:49:17
>>931
当然。URLにセッションIDを埋めるしかなくなる。
それが他人のパソコンに残ったり、そのURLを利用者が知らずにネットに貼ったりして
セッション乗っ取りが行われる。セッションIDにはワンタイムトークンを使うべきと言われたり、
決済やパスワードの変更等重要なタスクが発生する場面では再認証すべきと言われているのは
そのため。

>>932
開発元に何を聞くんだよw
935デフォルトの名無しさん:2009/06/04(木) 08:50:10
>>928
date_default_timezone_set()
936デフォルトの名無しさん:2009/06/04(木) 09:00:53
>>934
あーー。
それで、use.cookie_only=1
とかにしないとダメなんだ?
937デフォルトの名無しさん:2009/06/04(木) 09:19:47
>>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);
西暦と月の情報だけで、その月の朔を含む週の日曜日を求めるコード。
長くて気持ち悪いんだけど、もっと短くならないかな?
939デフォルトの名無しさん:2009/06/04(木) 17:22:44
十分短いと思うがw
940デフォルトの名無しさん:2009/06/04(木) 17:34:03
>>938
$first_sunday = strtotime('next sunday', mktime(0, 0, 0, $month, 1, $year));
941デフォルトの名無しさん:2009/06/04(木) 18:10:33
>>940
お、ありがとう。
この関数のことは知らなかったよ。
942デフォルトの名無しさん:2009/06/04(木) 20:54:58
>>922
下のは正規表現で一発な気がする
943デフォルトの名無しさん:2009/06/04(木) 23:48:20
>>922
Webサーバが逆引きした名前を用意してくれるとは限らないし、
そもそも逆引きの名前がないかもしれない。
944デフォルトの名無しさん:2009/06/05(金) 01:38:43
>>940
$first_sunday = strtotime("next sunday $year-$month-1");
945デフォルトの名無しさん:2009/06/05(金) 22:05:48
>>944
% php -r "var_dump( date( 'Y-m-d' ,strtotime( 'next sunday 2009-2-1' )));"
string(10) "2009-02-08"
946デフォルトの名無しさん:2009/06/06(土) 14:07:50
PHP5で、文字列の連結を高速化する手法はありますか?

配列に格納後joinするのが早いと思っていたのですが、実際に計測してみると「.」で一つずつ連結する方が早い始末…

メモリ確保の観点から「.」で一つずつ連結するより早い方法がある(C#のStringBuilderのような)と思うのですが、どうなんでしょう
947デフォルトの名無しさん:2009/06/06(土) 15:58:12
>>946
'.'を使うのは並び順とかを指定するコストを人間が
負担してるわけだから早いのは当たり前。

例えば以下でどっちが早い?っつったら二番目に決まってるじゃん。
ループ回す分のコストがないわけだから。

foreach(1..5 as $count){
 print $a[$count];
}

print $a[1] . $a[2] . $a[3] . $a[4] . $a[5];
948デフォルトの名無しさん:2009/06/06(土) 16:01:28
>>945
PHP 4.4.3では2009-02-01と出るな・・・・。
まったくPHPってヤツは。
949946:2009/06/06(土) 16:39:34
>>947
一気に連結するのでなく、逐次です
950デフォルトの名無しさん:2009/06/06(土) 16:52:37

foreach($a as $tojoin){
 $a = $joined . $tojoin;
}
よりも
$joined = join('', $a);
の方が遅いってこと?なら研究の余地があると思うが。

joinは内部的に配列を追ってるから、そのコストを人間が
負担するのでは比べる意味がない。
951デフォルトの名無しさん:2009/06/06(土) 17:09:04
ほとんどの場合、その程度の速度差を気にしたところで何の意味もない
952デフォルトの名無しさん:2009/06/06(土) 17:36:18
一応計測結果です
http://hcw.sblo.jp/pages/user/m/article?article_id=29631051&stq=session%3A%3A%3A%3A3a93f213efaaaa7db99f1d7175ada485

「.」で連結する度にその分のメモリを確保しているのか、参照する時に一度にメモリを確保するのか

もし前者だったらとんでもないロスになりますから、もしそうだったら何かjoinに代わる手法はあるのか

その辺りの情報が知りたくて質問させて頂きました
953945:2009/06/06(土) 17:38:33
>948
2009-02-08になったのはPHP5.2.6@FreeBSD。
まったくPHPってヤツは。。。
954952:2009/06/06(土) 17:56:11
すみません

>>952
>とんでもないロス

は言い過ぎました。

ある程度のロスがあるので、気持ち的にちゃんとした処理が簡単に出来るならしておきたい

に訂正しまふ
955デフォルトの名無しさん:2009/06/06(土) 18:14:47
>>952
あのさあ・・・・。
連結作業があって、それをそのままドンと出すのと、
配列チマチマ作る作業が先にあって、それからjoinするのとじゃ手間が全然違うでしょ。
それでも通常と配列にはほとんど差がでてないという。

逐次データが出てくるような場合は '.'、元々配列ならjoinの方が早いっていうのは
当たり前のような気がするが。

ためしに配列作ってそれを '.'で繋ぐってテストスクリプト作ってみ。

あとこういうのはクラス化するとどこでロスが出るか分からないから>>950みたいに
裸でスクリプト書くのが普通。

そもそも君が知りたいのはjoinのコストと'.'のコストでしょ?全然テストになってない。
テストスクリプト作り直し。
956デフォルトの名無しさん:2009/06/06(土) 18:18:21
質問

リモートホストをサニタイズ無しで
表示するのって危険?
957デフォルトの名無しさん:2009/06/06(土) 19:22:34
大事なのは、リモートホストの直接菜表示が危険かどうかではなく、
それが何故危険かどうかわからないことだ
958デフォルトの名無しさん:2009/06/06(土) 20:30:46
>>955
お願いします、PHP以外のCやC#とかをいじってから言って下さい

C#には文字列連結用のクラスまでデフォルトで用意されてるんですが…
959デフォルトの名無しさん:2009/06/06(土) 21:10:21
>>958
他の何言語を持ち出してきても結論は変わらないでしょ?
それと>>955がCやC#をいじったことがない前提で話を
しているのはなぜ? w
960デフォルトの名無しさん:2009/06/06(土) 21:20:24
>>959
メモリ確保時のロス、リスト構造、ポインタ、PHPのメモリコピーのタイミングなどの話が全く出てこないので、他言語の事を上げさせていただきました

正直、ここまで話にならないとは思いませんでした
961デフォルトの名無しさん:2009/06/06(土) 22:44:04
>>960
話にならないのはお前のテストコードだろ。
俺は元々C書きだ。
お前が本当にC書きなら、メモリ確保やポインタがどうなってるか知りたい場合ソースコード
読むのが普通だろ。何やってんの?

> メモリ確保時のロス、リスト構造、ポインタ、PHPのメモリコピーのタイミングなどの話

PHPのテストコードレベルでそんな話出てくるわけ無いだろ。
962デフォルトの名無しさん:2009/06/06(土) 23:14:44
>>961
失礼しました。コードを書き直しましたが、これで良かったですか?

http://hcw.sblo.jp/pages/user/m/article?article_id=29631051&stq=session%3A%3A%3A%3A521c5f1096213206131ec5d0622a3c5e

本当に連結されてるのか分からないので一応str_replaceを入れましたが、
無くても同じような結果でした

てかあのコードのどこが問題だったのか分からんが、配列joinの話なんだからリスト構造とポインタの話ぐらい出るだろ
963デフォルトの名無しさん:2009/06/06(土) 23:41:46
>>962
おい・・・・・このテストスクリプトって無駄なjoinを繰り返してないか・・・?
他人にお話にならないとか抜かすのは100年早いと思うぞ。

でだ。単純に、

> for ($ii=0; $ii<$cnt; $ii++) {
> > $sb1 .= $str;
> }
と、
> $sb2 ='';
> $sb2 = join('', $test_array);
とを比較してみたら、これでもやっぱり配列の方が遅かったな($test_arrayは用意してある)。
何か問題を感じたらこういう根本的なとこから追っておくのが普通だろ。
964デフォルトの名無しさん:2009/06/06(土) 23:45:39
まてまて、これは公平な試験じゃないな。片側だけ配列にアクセスしてる。

> for ($ii=0; $ii<$cnt; $ii++) {
> > $sb1 .= $test_array[$cnt];
> }
と、
> $sb2 ='';
> $sb2 = join('', $test_array);
だとjoinの方が早い。

結論:
・'.' と joinはjoinの方が早い。
・配列を使った連結と使わない連結は、使わない連結の方が早い(当たり前だわな)
965962:2009/06/07(日) 00:05:10
配列を使わない方が速いに決まってるってのが分からんのですが

実際にどんな処理をしてるのかは知りませんが、
join時に配列の各要素を回ってメモリサイズを計算

メモリ確保

結合

の方が
一回一回メモリを確保で結合していくよりも速くないですか?

まあ勘違いしてるかもしれんので、今度時間のある時にでもCで確認してみます
966965:2009/06/07(日) 00:11:08
一応

>>965で言ってる配列は、ポインタを格納した配列です。
PHPは値を書き換える時点でメモリをコピーするらしいので、
多分ポインタで持ってるのではないかなと

この時点で間違ってるんかな…
967966:2009/06/07(日) 00:57:22
ああああ変なこと言ってる

>>966は無視してくださいスレ汚しすみません
968デフォルトの名無しさん:2009/06/07(日) 01:03:05
まぁぶっちゃけると、そんなこと気にしてる暇があったらコード書け、と。
今の時代、早いコードより見やすいコードのほうが重要
969デフォルトの名無しさん:2009/06/07(日) 05:59:02
ここで遅い、早い言っている人はそれがクリティカルなプログラムをphpで作っているんだw
970デフォルトの名無しさん:2009/06/07(日) 06:01:27
>>965
> 配列を使わない方が速いに決まってるってのが分からんのですが

配列をシークするコストがなくなるからな。文法無視して例を書くと、

foreach(1..100 as $loop){ $a .= 'abc' }
foreach(1..100 as $loop){ $a .= $b[$loop] }

どっちが早いか明白だろ?

> 一回一回メモリを確保で結合していくよりも速くないですか?

仮にPHPがそう設計されてるとして、結合だけに関してはな。
ただ、君のテストコードだとjoinは配列使ってて'.'は配列使ってないので
、配列のコストがjoinには掛かる。だから、「君のテストコード」
の場合ではjoinの方が早いとは限らない。

>>966
だ・か・ら、

ソース嫁、と。

>>968
そうでない場面もあるよ。まあPHPでは少ないけど。
971デフォルトの名無しさん:2009/06/07(日) 06:40:08
>>969
誰がそんなこと言ってるんだ?
972デフォルトの名無しさん:2009/06/07(日) 11:47:39
>>970
> ただ、君のテストコードだとjoinは配列使ってて'.'は配列使ってないので

.で逐次連結するか、すべて一時配列に格納して最後にjoinするか、
そういう前提でどっちが効率的なのか、って質問だろうに。

勝手なテスト書いてクソの役にもたたない結論出されてもね。
973デフォルトの名無しさん:2009/06/07(日) 12:00:11
言われてるのは、何のためにそこまでテストしたいんだってのがぶれ過ぎてるってことじゃないの?

例えば>>962のコードでは
$var2[] ='a';
ってことをやって計測してるけど、本当にこれが最善の配列の作り方なのかとか、
例えば連結する文字列が固定なのであれば
join('', array('a', 'a', 'a', 'a'))
なんて書き方も可能なのでそっちとの比較もしてみるとか、
考慮に入れてもいいような事がいろいろあるはず。

その辺が甘々なのに、ちっちゃなパフォーマンスにこだわるのが違和感バリバリ。
974デフォルトの名無しさん:2009/06/07(日) 12:10:59
というか、joinよりimplodeの方が速度出るんじゃなかったっけ?
その辺から地道に頑張れ
975デフォルトの名無しさん:2009/06/07(日) 12:26:12
joinはimplodeのaliasだぞ。
976デフォルトの名無しさん:2009/06/07(日) 12:33:52
あら。ほんとだ。
差が出るのはsplitとexplodeか。(正規表現の解釈で?)

うん。おれが地道に頑張る
977デフォルトの名無しさん:2009/06/07(日) 12:44:21
          _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|:;
                   |ニ⊃|  |⊂ニ| || ,|/
                   |_. └ー┘ ._| ||/
                   ヘ 「 ̄ ̄ ̄| /
978デフォルトの名無しさん:2009/06/07(日) 12:45:32
相変わらずそのAAは発達しないんだな
979デフォルトの名無しさん:2009/06/07(日) 13:02:35
テストコードを書いた者ですが、
もともとはC#で言う「StringBuilder」を作りたかったのであのようなコードになりました
書き方が悪かったですね

まあ多分色々勘違いしてると思うので大人しくソース眺めてみます
980デフォルトの名無しさん:2009/06/07(日) 15:57:01
>>960
> 正直、ここまで話にならないとは思いませんでした

この流れ、どう読んでもお話にならないのは自分の方だから、
社会に出て身の程を知った方がいいよ。
981デフォルトの名無しさん:2009/06/07(日) 16:07:23
PHPのスレだなあ

とりあえず、>>979のしたかった話と、大方のレスのレベル(階層)がずれてるのは確かだろ。
文字列連結の、PHPの実装上最も速い方法は 「.」 での連結なのか?っていう疑問。
んで、ただ単にCの階層で具体的な話をする(できる)奴がいなかったってだけじゃないか
# 本人が挙げたテストコードが、その階層以前の問題だったってことも大きいんだろうけど

>>960の煽りはいただけないが、>>980の煽り返しは明らかにレベル(次元)が低い、と思う。

ちなみに俺はPHPのソースコードはダウンロードしたことはあるが読んだことない。
982デフォルトの名無しさん:2009/06/07(日) 19:30:07
需要があるみたいなので、そろそろ次スレ頼む
983デフォルトの名無しさん:2009/06/07(日) 19:32:09
>>981
>ただ単にCの階層で具体的な話をする(できる)奴がいなかった
>ってだけじゃないか

>>961が指摘してることを理解してから出直しな
984デフォルトの名無しさん:2009/06/08(月) 13:07:04
>>945
2/1は日曜なんだから次の日曜は8日で当たり前じゃないのか?
985945:2009/06/08(月) 21:33:48
願わくは984にもう少しスレを遡る勇気あらんことを。
986デフォルトの名無しさん:2009/06/09(火) 09:00:33
何だよ性格ひねくれてんな
987デフォルトの名無しさん:2009/06/09(火) 12:44:40
>>984
2/1の次の日曜は8日なんだが、'next sunday'は1日になったり8日に
なったりするからやっぱりPHPはこういうトコ困ったちゃんだな〜って流れだよ。
988デフォルトの名無しさん:2009/06/09(火) 13:23:18
そういう時は "+1 day" してから訊ねるといい。
989デフォルトの名無しさん:2009/06/09(火) 14:03:16
php4とか旧世代の遺物を使ってんのが悪いんだろ
990デフォルトの名無しさん:2009/06/09(火) 14:09:42
>>989
客のサーバにPHP4しか入ってない(んで触れない)こととか普通にあるからなぁ。
991デフォルトの名無しさん:2009/06/09(火) 15:44:13
うちでもメインのサーバーはPHP4だよw
今度PHP5の新サーバーを立てたけど、まだまだPHP4には頑張ってもらわないとw
992デフォルトの名無しさん:2009/06/09(火) 21:40:12
PHP5に入れ替えても完全に動くって補償があるならいいけど
今とりあえず動いてるなら4使い続けちゃうよね
993デフォルトの名無しさん:2009/06/10(水) 06:50:20
サーバーで動かしてるサービスが複数あるから
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をちょこっと使う必要があるから、そのあたりの関数作ったりして、少し憂鬱になる

サポートとっくに切れてるんだから新しくしてよと
996デフォルトの名無しさん:2009/06/11(木) 23:31:58
今回、実験してみたんだけど、
その国が15:00前後になるように
リンクを投入すると、一番クリック数が
多くなるみたいね。
997デフォルトの名無しさん:2009/06/12(金) 01:21:44
わかんないことがあったんで、
アメリカの掲示板に英語で質問したら
すぐに解決した。2ちゃんねるはもういらない。
998デフォルトの名無しさん:2009/06/12(金) 05:53:41
>>997
2chじゃなくてMLとかだろjk・・・。
999デフォルトの名無しさん:2009/06/12(金) 13:07:44
糞スレ終了
php板に帰れよ
1000デフォルトの名無しさん:2009/06/12(金) 13:11:20
?>
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。