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

【PHP】下らねぇ質問はID出して書き込みやがれ 117

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2012/03/22(木) 01:10:44.38ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 116
http://kohada.2ch.net/test/read.cgi/php/1330224598/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0011nobodyさん2012/03/22(木) 17:33:03.99ID:???
さようなら(^_^)
0012nobodyさん2012/03/22(木) 17:43:47.74ID:???
やっと糞コテが消えてくれるのか
長い春休みの終わりだね
0013nobodyさん2012/03/22(木) 19:19:51.80ID:???
>>10
何が不都合か全然わかりませんが
0014nobodyさん2012/03/22(木) 22:00:14.83ID:???
あのコテまじうざかったな
0015nobodyさん2012/03/22(木) 22:36:09.09ID:???
コードで示して反論できないからうざいって、おまえらww
0016nobodyさん2012/03/23(金) 02:14:01.87ID:iXg707kO
【PHPのバージョン】5.4

main.php
<?php
include("./sub.php");
$t="NG";
sub\check();

sub.php
<?php
namespace sub;
$t="OK";
function check(){
global $t;
print $t;//←ここでOKと出したい
}

この状態でmainを実行させた時NGが表示されてしまいます
OKと表示させるにはどうしたらよいのでしょうか
0017192012/03/23(金) 07:20:16.77ID:iXg707kO
あ、もしかしてグローバルスコープの変数は名前空間の影響を受けなくて
だから、subでOKとした後にNGで上書きしてるのかなとも思ったのですが
(とは言え衝突を回避するのが名前空間の機能な訳で、グローバル変数は適用されないなんて書いてませんでしたが…)

main.php
<?php
include("./sub.php");
// $t="NG";//←ここを削除
sub\check();

sub.php
<?php
namespace sub;
$t="OK";
function check(){
global $t;
print $t;//←ここでOKと出したい
}
$t="NG";を消して、sub名前空間でグローバル変数$tを定義したのですが
やはりcheck();でsub名前空間のグローバル変数$tを取る事が出来ません。
nullになってしまいます。
sub名前空間のグローバル変数を、sub名前空間の関数から取るにはどうしたらよいのでしょうか。
0018162012/03/23(金) 07:20:40.34ID:iXg707kO
実際には、
main.php
include("./sub1.php");
include("./sub2.php");
$API1=sub1\get();
$API2=sub2\get();

sub1.php
namespace sub1;
$APIKey=getKey();
function getKey(){
....
}
function get(){
global $APIKey;
$APIKey.="ごにょごにょ";
return $APIKey;
}

sub2.php
namespace sub2;
$APIKey=getKey();
function getKey(){
//sub1のgetKeyとは全く違う処理
}
function get(){
global $APIKey;
$APIKey.="何々";//sub1のgetとは全く違う処理
return $APIKey;
}

と言う風に書いているので、sub名前空間のグローバル変数にアクセスしたいです
0019nobodyさん2012/03/23(金) 11:10:58.87ID:???
>>16
functionのglobalは、functionが定義されたときに入るわけじゃなくて
そのfunctionが呼ばれたときに入るっす。
だから、$t='NG';のあとに呼んだら当然、NGになるわけっす。
includeするファイルの中で$t=としておいても、その後、functionを呼ぶ前に$t=したら、そっちが入るってわけっす。
頑張って整理しなおしてちょ。
0020nobodyさん2012/03/23(金) 11:30:48.69ID:jFveHLpp
strstr の逆ってある?
ニードルより手前を返す
0021212012/03/23(金) 11:34:23.42ID:???
自己解決した
php5.0だといろいろなことが出来なくてつらいね
0022nobodyさん2012/03/23(金) 11:38:28.01ID:???
21・・・そうか21だな
0023nobodyさん2012/03/23(金) 11:47:50.04ID:???
>>17
> (とは言え衝突を回避するのが名前空間の機能な訳で、グローバル変数は適用されないなんて書いてませんでしたが…)
勝手に解釈しない
http://www.php.net/manual/ja/language.namespaces.definition.php
> PHP のコードならなんでも名前空間に含めることができますが、
> 実際に名前空間の影響を受けるのはクラスとインターフェイス、関数、そして定数の 4 種類だけです。
0024nobodyさん2012/03/23(金) 12:07:05.97ID:zUr5jMT5
http://php.s-memo.info/e26.php
を参考に、テーブル内の平均を求めたいのですが

$sql = ""; ←1
$sql = "SELECT AVG(point) FROM dt_table";     
$res = mysql_query($sql, $connectDB); ←2
$Avg_point = @mysql_fetch_assoc($res); ←3
print $Avg_point['AVG(point)'];

この3つは具体的に何をしてるのでしょうか?
特に3の@が理解できなくて
0025nobodyさん2012/03/23(金) 12:38:02.71ID:???
1 初期化
2 sql接続
3 取り出したデータを配列に格納
@ データが配列じゃない時出るエラーを表示しないようにしてる
0026nobodyさん2012/03/23(金) 13:38:25.90ID:???
>>19
指摘があさって
>>25
sql接続ってなに?w
取り出したデータ?
@の説明も変
0027nobodyさん2012/03/23(金) 15:25:04.46ID:???
2 sql接続 MySQLに$connectDBに入ってるID、passで接続して $sqlに入ってるSQL文を実行させる
3 取り出したデータ SELECT〜でSQLから帰ってくる値
@ SELECT文の結果は普通は表 sqlエラーは表じゃない 表じゃないのが帰ってくると配列に入れられない

すまないiphoneなんだ くわしく説明できなくてすまない
0028nobodyさん2012/03/23(金) 15:31:17.87ID:???
・・・
0029nobodyさん2012/03/23(金) 16:38:56.91ID:???
>>24がどの程度、元々わかる人なのかどうかわからないけど
1や@あたりを聞いてくるに2は、$connectDBの意味わからないとか
そういうオチじゃないのか。
0030162012/03/23(金) 19:16:41.63ID:iXg707kO
>>23
申し訳ありません、読み取れていませんでした。

main.php
<?php
include("./sub.php");
sub\check();

sub.php
<?php
namespace sub;
$t="OK";
function check(){
global $t;
print $t;//←ここでOKと出したい
}
//----
グローバル変数は名前空間の影響を受けないのは分かりましたが
$t="NG";を消し、$t="OK";のみ書いたとしても、check()で$tが取得できないのは何故でしょうか
print $tはnullになってしまいます。
0031nobodyさん2012/03/23(金) 20:29:40.40ID:???
>>30
うちの環境じゃそのコードでは再現しないな、OKと出る
0032nobodyさん2012/03/24(土) 01:12:55.15ID:???
恥ずかしいスレらしい回答っぷりだな
0033nobodyさん2012/03/24(土) 02:46:58.29ID:???
えーとー わかんない! うふふ おっけー
0034nobodyさん2012/03/24(土) 19:32:43.78ID:???
globalの宣言位置おかしくね?
0035nobodyさん2012/03/24(土) 19:34:39.57ID:???
おかしくないよねorz
勘違いだった
0036nobodyさん2012/03/25(日) 12:14:33.01ID:???
$a = "fasef faseafas fasecvfeasc agrv aerf"
$b = "nguy cef trhv vsred";
最後から数えて、
一番最初に半角スペースが出る位置から最後まで
文字列を取得する方法を教えてください

$aならaerf
$bならvsred
0037362012/03/25(日) 12:14:50.10ID:QMJF3zqJ
$a = "fasef faseafas fasecvfeasc agrv aerf"
$b = "nguy cef trhv vsred";
最後から数えて、
一番最初に半角スペースが出る位置から最後まで
文字列を取得する方法を教えてください

$aならaerf
$bならvsred
0038nobodyさん2012/03/25(日) 12:17:59.42ID:QMJF3zqJ
hayaku
0039nobodyさん2012/03/25(日) 12:30:46.27ID:???
>>37
http://www.php.net/manual/ja/function.strrchr.php
0040nobodyさん2012/03/25(日) 18:39:55.84ID:Xs8rCD1j
文字化けをしたらとりあえず文字コードを変えて見て解決しているのですが、Shift_JISのページとUTF-8のページとがあって、どうにか統一させたいのですが何かいい方法はありませんでしょうか。
includeした時に、includeした部分だけ文字化けしたりして、困っています・・。
0041nobodyさん2012/03/25(日) 18:44:52.52ID:???
>>40
一括変換のフリーソフトを使う
0042402012/03/25(日) 19:08:41.50ID:Xs8rCD1j
>>41
そんなものがあるのですか?
0043nobodyさん2012/03/25(日) 19:23:51.85ID:???
そもそもの混在してる原因を把握して対処したほうがいいと思うが
0044402012/03/25(日) 19:40:57.72ID:Xs8rCD1j
>>43
なるほど・・・・・・・
0045nobodyさん2012/03/25(日) 19:51:45.11ID:XZS3up0b
クラスのabstractの使い方を教えて
0046nobodyさん2012/03/25(日) 19:58:34.44ID:???
>>45
http://jp.php.net/abstract
0047nobodyさん2012/03/25(日) 22:06:24.52ID:gnfrYa0q
ユーザーIDを突っ込むだけでユーザー情報をいろいろゲットできる素敵な方法ありませんか?
自分が考えたのは以下のような感じです。

$user = new User($_SESSION['user_id']);

class User
{
  protected $name;
  protected $role;
  protected $age;

  public function __construct($id) {
    $this->name = $this->getName($id);
    $this->role = $this->getRole($id);
    $this->age = $this->getAge($id);
  }
  // メソッドは省略
}

このやり方でおかしくないでしょうか?
だめなところがあれば教えて頂きたいです。
0048nobodyさん2012/03/25(日) 22:08:42.48ID:???
すみませんプロパティは全部publicです。
if ($user->name == 'master') みたいに使います。
0049nobodyさん2012/03/25(日) 22:09:30.75ID:???
PDO
0050nobodyさん2012/03/25(日) 22:22:33.78ID:???
protected厨きめえ
0051nobodyさん2012/03/25(日) 22:22:56.79ID:???
しかもコンストラクトにpublic付ける意味ねえ
0052nobodyさん2012/03/25(日) 22:31:12.23ID:???
コンストラクト(笑)
0053472012/03/25(日) 22:36:44.33ID:gnfrYa0q
>>50-51 さんのアドバイスどおり変更します。
$user = new User($_SESSION['user_id']);

class User
{
  public $name;
  public $role;
  public $age;

  function __construct($id) {
    $this->name = $this->getName($id);
    $this->role = $this->getRole($id);
    $this->age = $this->getAge($id);
  }
  // メソッドは省略。全部DBから引っ張ってきます。
}

他にも突っ込みどころがあればどんどんお願いします
0054nobodyさん2012/03/25(日) 22:39:07.83ID:???
privateにしろや
0055472012/03/25(日) 22:54:21.92ID:gnfrYa0q
privateにすると
$user = new User($_SESSION['user_id']);
$user_age = $user->getAge();
if ($user_age < 20) exit('煙草は二十歳になってから。');
みたいな書き方になりますよね。

publicにしてコンストラクタで全部突っ込んでおけば
$user = new User($_SESSION['user_id']);
if ($user->age < 20) exit('煙草は二十歳になってから。');
という感じで一手間省けていいかと思ったのですがまずいですか?
0056nobodyさん2012/03/25(日) 23:17:21.65ID:???
つかうなじゃねーのかよ
0057nobodyさん2012/03/25(日) 23:31:23.28ID:???
>>55
前者で書くのが当たり前だ!!!!!!!!!!!!!!!!
後者はするなっ!!!!!!!!!!!!
0058472012/03/25(日) 23:34:24.80ID:gnfrYa0q
了解しました・・・。privateにします。ありがとうございました。
0059nobodyさん2012/03/25(日) 23:40:32.36ID:???
>>55
別にそれでもいいと思うよ
0060nobodyさん2012/03/25(日) 23:41:41.63ID:???
使うな君のスレだから、好きなようにさせてあげなよ。
質問者さんはかわいそうだけど。
0061nobodyさん2012/03/26(月) 00:14:43.41ID:???
>>55
他人様に出すわけでなく自分が運営する分にはまるで問題ないな
0062nobodyさん2012/03/26(月) 01:13:48.82ID:???
>>58
それでよい
変数はprivate
代入はメソッドから
これを守るように
0063nobodyさん2012/03/26(月) 06:27:50.67ID:???
プロパティというからデータメンバっぽく見えるけれど、アクセサを追加できる言語から来たんじゃないのかな
0064nobodyさん2012/03/26(月) 10:05:56.18ID:HmiPRK1e
【OS名】CentOS 6
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL
【質問内容】
ここで質問していい内容かどうかちょっと迷ったのですが、
POSTでデータを送信して画面を移動した後に、
再読込みなんかをすると「データを再送信しますか?」といった表示がされます。
ブラウザ側でPOSTのデータが保持されているような状態なんじゃないかと思いますが
再読込みしてもそういった表示が出ないようにすることは可能でしょうか?
0065nobodyさん2012/03/26(月) 10:10:23.26ID:???
PHP関係なくね
0066nobodyさん2012/03/26(月) 10:24:02.70ID:scUKAG1L
CMSとフレームワークってどうちがうんですか?
また、それぞれの長点、欠点はなんですか
0067nobodyさん2012/03/26(月) 10:54:08.22ID:???
レイヤーが違うでしょ
フレームワークを使ってCMS構築したりもするだろうし
0068nobodyさん2012/03/26(月) 11:10:43.24ID:???
>>64
headerのLocationで飛ばすか、javascriptでpost送信の二択
好きなほうを選べ
0069nobodyさん2012/03/26(月) 11:11:30.29ID:???
>>66
フレームワークは建物を作るための工具
CMSは新築の家
0070nobodyさん2012/03/26(月) 11:17:21.49ID:scUKAG1L
こういう解釈でいいんですか?

サーバー → 土地
PHP → 資材
ライブラリ → 小工具
フレームワーク → 大工具
CMS → 注文住宅
WEBサイト → 建売住宅
プログラマー → 土方
0071sage2012/03/26(月) 12:16:47.49ID:???
×プログラマー → 土方
○プログラマー → 大工
0072nobodyさん2012/03/26(月) 16:08:22.19ID:scUKAG1L
<input name="image01" type="file" size="30"/>
<input name="up_submit" type="submit" value="アップロード"/>
ってしてやると、画象情報をaction 先に送れるじゃないですか。


<input name="image01" type="file" size="30"/>
<input name="image02" type="file" size="30"/>
<input name="image03" type="file" size="30"/>
<input name="image04" type="file" size="30"/>
<input name="up_submit" type="submit" value="アップロード"/>

と、複数あった場合、次のページで
アップロードするデータがあった × 繰り返し
をしたいんですが、何か うまい方法ないですか?
0073nobodyさん2012/03/26(月) 16:36:58.16ID:???
<input name="image" type="file" size="30"/>

count($_POST['image'])
0074nobodyさん2012/03/26(月) 16:37:15.96ID:???
<input name="image[]" type="file" size="30"/>

count($_POST['image'])
0075nobodyさん2012/03/26(月) 17:49:35.83ID:scUKAG1L
>>73-74
ありがとうございます。
0076nobodyさん2012/03/26(月) 18:13:36.19ID:scUKAG1L
なんどもすいません。
画象関連のことをやってるのですが、

データベース読み込む
 ↓
レコード回す
 ↓
$row[レコードのid].jpg で表示する
 ↓
画象が無い時は、noimg.jpg 表示する
 ↓
データベース閉じる

なことやってるんですが、
画象があるかどうかってやっぱ
if(file_exists($base_path.$file_name.".jpg")){
 画象ある時
}else{
 画像ない時
}
という処理になるしかないですか?

画象が1種類ならまだしも、画象01 画象20とか20枚くらいになってくると
file_existes だらけになるなー と。



0077nobodyさん2012/03/26(月) 18:22:51.34ID:IgGnmM6E
Smartyで配列のインデックスに配列は使えないのでしょうか?

{$arr[$key[$i]]}

はエラーになり

{assign var="k" value=$key[$i]}
{$arr[$k]}

こうしないと動かない


0078nobodyさん2012/03/26(月) 18:54:29.17ID:???
>>76
ループしてるんだからループの中で判定すればよかろ。
あと、
> 画像ない時
ちょっぴり感動した。

>>77
http://www.smarty.net/docsv2/ja/language.syntax.quotes.tpl
0079nobodyさん2012/03/26(月) 18:57:16.56ID:???
>>76
そもそもDBにレコードいれる際に、
ファイルがあるかどうかのフラグを入れるなりすればいいじゃん。
一意にIDから紐付けだけでやろうとすると、DBから引き出した後にどうしても判別は必要になる。

DB挿入時点でそのあたりちゃんとやってあげれば、SELECT文側でifかけて、いきなりidによるファイル名か、noimgを指定するかも出来るよ。
0080nobodyさん2012/03/26(月) 19:13:51.94ID:???
clearstatcache使えよ!!!!!!!!!!!!!!!!!!
0081nobodyさん2012/03/26(月) 19:14:56.40ID:???
>>77
smartyスレがありますよ
0082nobodyさん2012/03/26(月) 19:20:48.80ID:???
>>76
ちゃんとウィルスチェックしとけよ
0083nobodyさん2012/03/26(月) 19:28:59.50ID:IgGnmM6E
>>78
どもです、でもちょっと問題と違うような
バッククォート駆使してみましたが駄目でした

>>81
どこですか?スレタイ検索では見つかりませんでした
0084nobodyさん2012/03/26(月) 21:01:26.55ID:???
>>81
どこですか?早く答えてください。
0085nobodyさん2012/03/26(月) 22:11:27.94ID:zyHVVz6T
ブログサービスでは、他ブログに引っ越すという、
FC2ブログから→アメブロといった具合に記事を移すことが
可能ですが、あのような機能はphpで可能ですか?
何かブログサービスは共通のプログラムを使用してるのでしょうか?
0086nobodyさん2012/03/26(月) 22:28:01.00ID:???
まずwebのお気に入りのエロ画像を取得して自分のブログに貼り付けるプログラムを書いてみてください
話はそれからです
0087nobodyさん2012/03/26(月) 22:29:03.47ID:???
>>85
RSS吐いてるだけじゃねぇの?
0088nobodyさん2012/03/27(火) 01:19:54.73ID:???
相変わらず回答がトンチキだな
0089nobodyさん2012/03/27(火) 01:30:28.56ID:???
お前が言うな
0090nobodyさん2012/03/27(火) 01:56:21.94ID:???
>>85
phpで可能です。

各社の引越しの仕様を見たらどうでしょう。
http://blog.ameba.jp/import/
http://wiki.livedoor.jp/staff/d/API/AtomPub
http://blog.fc2.com/import/import.html

以下のフォーマットで提供するブログがあり、それを使用しているブログがあるようです。
http://ja.wikipedia.org/wiki/Atom#Atom_Publishing_Protocol
0091nobodyさん2012/03/27(火) 02:38:14.89ID:???
htaccessをいじって
動的アドレスを静的にしたつもりですが
静的アドレスでアクセスできますが
そのアドレスリンクをクリックすると
ブラウザ上部には
動的アドレスが出てきます。

どうしたらブラウザ上部のアドレスも
静的になりますか?
0092nobodyさん2012/03/27(火) 02:47:31.45ID:???
>>91
>>1
0093nobodyさん2012/03/27(火) 03:09:04.99ID:Hu5JOpw4
xp ver5.3

htaccessをいじって
動的アドレスを静的にしたつもりですが
静的アドレスでアクセスできますが
そのアドレスリンクをクリックすると
ブラウザ上部には
動的アドレスが出てきます。

どうしたらブラウザ上部のアドレスも
静的になりますか?
0094nobodyさん2012/03/27(火) 03:14:04.70ID:???
なんだよめんどくせえなぁという空気が漂ってるな。
でもやっぱり
>>93
>>1
0095nobodyさん2012/03/27(火) 03:15:28.57ID:???
xp ver5.3

htaccessをいじって
動的アドレスを静的にしたつもりですが
静的アドレスでアクセスできますが
そのアドレスリンクをクリックすると
ブラウザ上部には
動的アドレスが出てきます。

どうしたらブラウザ上部のアドレスも
静的になりますか?
0096nobodyさん2012/03/27(火) 03:18:42.99ID:???
もう寝るんで朝までにお願いします
0097nobodyさん2012/03/27(火) 08:10:18.26ID:wGVpcWGl
チュン! チュンチュン!
0098nobodyさん2012/03/27(火) 09:10:01.76ID:???
こいつらに回答できるわけないじゃん
0099nobodyさん2012/03/27(火) 10:16:21.24ID:jEdLf/ck
クラスについての質問です

Class Database //データベース関係の処理
{
 function Exec_SQL()
 {
 };
 色々な処理
}

Class User //ユーザー認証等の処理
{
 function Check_User()
 {


色々なメソッド
}
0100992012/03/27(火) 10:25:36.87ID:jEdLf/ck
>>99は書き込みミスです ごめんなさい
クラスについての質問です

Class Database //データベース関係の処理
{
 function Exec_SQL()
 {
 };
 色々な処理
}

Class User //ユーザー認証等の処理
{
 function Check_User()
 {
 };
 色々な処理
}

クラス外でDatabaseを呼び出ししています
UserクラスでDatabaseクラスのExec_SQL()を使うには基本的には継承となると思いますが
それ以外の方法はありますか?
0101nobodyさん2012/03/27(火) 10:41:08.08ID:???
直接呼べばいいじゃん
0102nobodyさん2012/03/27(火) 11:12:49.51ID:???
>>93
【Apache】mod_rewriteについて語るスレ
http://kohada.2ch.net/test/read.cgi/php/1023791370/
0103nobodyさん2012/03/27(火) 11:16:50.04ID:???
意味わかってないやつが知ったかで用語駆使して頓珍漢な対応したあげく
全然関係のないスレに質問した、の図だな
0104nobodyさん2012/03/27(火) 11:28:38.50ID:???
と、93が申しております。
0105nobodyさん2012/03/27(火) 11:37:17.02ID:???
意味が分かってるので誘導したけどなんでしょうか?おばかな103さん
0106nobodyさん2012/03/27(火) 11:51:52.34ID:???
自分が言われたと思っちゃったんですね。
そういう自覚があったということでしょう。
0107nobodyさん2012/03/27(火) 12:17:29.48ID:DR/4ZRIX
phpでpixivにログインできない誰かタスケテ
0108nobodyさん2012/03/27(火) 12:23:30.15ID:???
まともなやつはこんなスレで回答しないよw
0109nobodyさん2012/03/27(火) 13:12:40.86ID:???
質問スレかと思ったら糞スレじゃないか
お前らみんな死ねばいいのに
0110nobodyさん2012/03/27(火) 13:12:53.41ID:???
>>107
コード出せ
■ このスレッドは過去ログ倉庫に格納されています