【PHP】下らねぇ質問はここに書き込みやがれ 27
■ このスレッドは過去ログ倉庫に格納されています
00011様
2006/08/23(水) 00:54:52ID:uM5Jzzy0まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0404397
2006/08/29(火) 14:56:33ID:???0405397
2006/08/29(火) 14:57:31ID:???0407397
2006/08/29(火) 15:16:06ID:???<form action="hoge.php">
<input type="checkbox" name="fC[]" value="0"> hoge <br>
<input type="checkbox" name="fC[]" value="1"> foo <br>
<input type="checkbox" name="fC[]" value="2"> bar <br>
<input type="checkbox" name="fC[]" value="2"> bar <br>
<input type="submit" value="OK">
</form>
<?php
if (isset($_POST['fC[]'])) {
$array = file(hoge.txt);
$del = $_POST["new_data[]"];
array_splice($del_array,$del]);
}
?>
チェックしたところのデータを配列から消したいのですが、これだとうまくいきませんでした。
不適切な箇所ございましたらご指摘お願いいたします。
0409nobodyさん
2006/08/29(火) 15:39:15ID:???0410nobodyさん
2006/08/29(火) 15:41:41ID:???鏤?
な感じの文字化けが出てくることがあるんだけど、どんなときに出るかわかる人います?
途中でUTF8で書いてるphpを呼んでるから出るのかな?
0414397
2006/08/29(火) 16:13:38ID:???修正してみました。
<form action="hoge.php">
<input type="checkbox" name="fC[]" value="0"> hoge <br>
<input type="checkbox" name="fC[]" value="1"> foo <br>
<input type="checkbox" name="fC[]" value="2"> bar <br>
<input type="checkbox" name="fC[]" value="2"> bar <br>
<input type="submit" value="OK">
</form>
<?php
if (isset($_POST['fC'])) {
$array = file(hoge.txt);
$del = $_POST["new_data"];
array_splice($del_array,$del]);
}
?>
array_spliceの使い方ま間違えているのでしょうか?原因がわかりません。
ご教授おねがいいたします。何度も長文すみません。
0415nobodyさん
2006/08/29(火) 16:21:48ID:???$_POST['fC'] を isset() 以外で使って無いじゃないか。
$_POST['new_data'], $del_array がどこから来てるかも分からないし。
原因どころか、何がしたいか分からない。
何でもここで訊く前に、しばらく自分で考えた方がいいぞ。
0416nobodyさん
2006/08/29(火) 16:39:49ID:???if($_POST['fC'][$i] === "") { unset($_POST['fC'][$i]); }
}
0417nobodyさん
2006/08/29(火) 16:44:05ID:???if($_POST['fC'][1] !== 1) { unset($_POST['fC'][1]); }
if($_POST['fC'][2] !== 2) { unset($_POST['fC'][2]); }
if($_POST['fC'][3] !== 2) { unset($_POST['fC'][3]); }
print_r($_POST['fC']);
0421397
2006/08/29(火) 17:56:30ID:???やりたいことは、WEBメールにあるような、
チェックボックスにチェックを入れてsubmitボタン押すと
チェックされたデータを削除する動作を行いたいです。
データはテキストファイルに一行ずつ格納してあります。
何度も申し訳ございません、ご教授願います。
0422nobodyさん
2006/08/29(火) 18:00:36ID:???いや、まず動かしてから質問しようよってことだと思うのだが・・・
わかりません以前の問題があるから突っ込まれているんだと思うんだけど(;´Д`)
0423nobodyさん
2006/08/29(火) 18:09:01ID:???$_POST['fc']には何が入るんだ?
今一、分からんが数字でとってきてあとはその行を削除すればいいんじゃね?
一行ずつとは?
1つのtextファイルに1行毎に入っているのか、1行のtextファイルがなんこもあるのか?
0424397
2006/08/29(火) 18:11:22ID:???<input type="checkbox" name="fC[]" value="0"> hoge <br>
<input type="checkbox" name="fC[]" value="1"> foo <br>
<input type="checkbox" name="fC[]" value="2"> bar <br>
<input type="checkbox" name="fC[]" value="2"> bar <br>
<input type="submit" value="OK">
</form>
<?php
if (isset($_POST['fC'])) {
$list = file($file_name);
$flg = $_POST["fC"];
foreach($list as $line) {
$k = 0;
if($k != $del_f) {
array_splice($list,$k,1)
}
++$k;
}
}
?>
何度もお見苦しくて申し訳ございません。新しくソース書いてみました。
不適切な記述がございましたらご指摘ください。
0425397
2006/08/29(火) 18:16:52ID:???一つのファイルに1行毎にデータが格納されてます。
何かひっかかる箇所がございましたらご指摘ください。
0426nobodyさん
2006/08/29(火) 18:44:53ID:???> 何かひっかかる箇所
ほぼ全部。
$flgは何?$del_fってどこから来た?$lineは何のために存在するの?
そもそも、そのチェックボックスは複数選択できるよね?だったら、そんなコードで動くわけない。
(まあ、なんとなくやりたいことは伝わったけどw)
foreachするのは $list ではなく $_POST['fC'] のほうが良くね?
0427nobodyさん
2006/08/29(火) 18:53:36ID:???要はtextファイルにある掲示板のログをチェックボックス式で消すって感じだろ
$del_file = $_POST['fc'];
$list = file($file_name);
if(is_numeric($del_file)) {
if($del_file <= $list) {
foreach($del_file as $number) {
unset($list[$number]);
}
}
}
エラーでるかもしらんがうまくアレンジ
0428427
2006/08/29(火) 18:57:58ID:???$count = count($list);
foreach($del_file as $number) {
if(is_numeric($number)) {
if($number<=$count) {
適当にこんな感じにしる
0429nobodyさん
2006/08/29(火) 20:24:07ID:???そもそもここからしておかしい気がする今日この頃
0430nobodyさん
2006/08/29(火) 20:49:25ID:???ありがとうございます。
かれこれ9時間くらいこの問題に向かってようやく解決できました。
本当にありがとうございます。
0431nobodyさん
2006/08/29(火) 20:52:51ID:5eCmr2IIwebでリアルタイムモニターの表示のようなものを考えているのですが、
while(1) {
print($a);
flush();
sleep(1);
ー処理ー
}
として、ブラウザは1秒置きに$aの値が表示されるのですが、
表示が流れていってしまいます。常に最新の値だけを1個表示したい
のですがどうすればいいでしょうか?
0432nobodyさん
2006/08/29(火) 21:02:55ID:???0433nobodyさん
2006/08/29(火) 21:03:40ID:???0434433
2006/08/29(火) 21:05:03ID:???的外れでしたらすみません。
0436nobodyさん
2006/08/29(火) 21:18:46ID:???と推測してみる
0438nobodyさん
2006/08/29(火) 21:21:15ID:???0439nobodyさん
2006/08/29(火) 21:24:05ID:???いまさらの発言にワロタw
0440431 ID:5eCmr2II
2006/08/29(火) 21:24:18ID:5eCmr2IIあとで試して見ます。
l
0441nobodyさん
2006/08/30(水) 02:30:27ID:IYdUp6kA再帰的に読み込んだphpに飛ぼうとすると
Access forbidden!ってでるんだけど、どういうこと?
0442nobodyさん
2006/08/30(水) 02:44:20ID:???お前の言っている意味が良く分からん。全然html関係ないんじゃないの?
パーミッションの設定がおかしいだけだろ。
PHPファイルの場合ちゃんと実行権限あるのか?フォームで自分にデータを
渡して処理しようとしてるんじゃないの?
0443nobodyさん
2006/08/30(水) 03:00:37ID:???もっと勉強しまっす。
0444nobodyさん
2006/08/30(水) 04:13:36ID:f9Q+oUlSPHPのバージョンは4.4.2です。サーバーはxreaです。
どうかよろしくお願いします。
0445nobodyさん
2006/08/30(水) 04:29:06ID:???fgetとループを使うとかfileで全行取得してから配列をいじるとか
0446nobodyさん
2006/08/30(水) 04:31:22ID:???0447nobodyさん
2006/08/30(水) 05:54:00ID:r1SUfqGuパーミッションの変更ってどうやってますか?
0448nobodyさん
2006/08/30(水) 09:06:21ID:???0449nobodyさん
2006/08/30(水) 10:27:26ID:???0450nobodyさん
2006/08/30(水) 11:38:50ID:???そのシステムはUNIXのものより複雑になっており、
各ファイル/ディレクトリのプロパティにおいて、
それぞれのアクセス権を一覧・変更(権限がある場合のみ)できる。
Windows NT/2000/XPシステムにおけるアクセス権を
パーミッションと呼ぶことはあまりない。
0451nobodyさん
2006/08/30(水) 11:49:58ID:???ただいま自分のサイトにページャーをつけようと格闘してます。
いまのところ以下のようなとてもスマートとは思えないPHP構文でなんとか
動作はしてますが、これからデータベースの件数がどんどん増えるたびに
そのつど20件ごとの構文を付け足していかなければいけないと思うと鬱になりますw
ごらんの通り今は20件ごとにいちいち設定してます。
これを件数が何件あろうと適応できるようにするのは可能でしょうか?
先輩方、お知恵をお貸しください。
0452nobodyさん
2006/08/30(水) 11:50:49ID:???$Data=$Arr;
$P=$_GET["p"];
$url = "../hogehoge.php?id={$id}&p=";// リンクURL
if ($P <= 1) $alpha = 1 - $P + 1;
for ($i = $P - 1; ($i <= $P + 1 + $alpha) && ($i <= 2); $i++) {
if ($i < 1) continue;
if ($i - 1 == $P) {
$preTag = "<strong>";
$aftTag = "</strong> | ";
}
else {
$preTag = "<a href='".$url.($i - 1)."'>";
$aftTag = "</a> | ";
}
if (sizeof($Arr) > 20) { // 20件まで
$links .= $preTag.$i.$aftTag;
}
}
if ($P <= 1) $alpha = 1 - $P + 1;
for ($i = $P - 1; ($i <= $P + 2 + $alpha) && ($i <= 3); $i++) {
if ($i < 1) continue;
if ($i - 1 == $P) {
$preTag = "<strong>";
$aftTag = "</strong> | ";
}
else {
$preTag = "<a href='".$url.($i - 1)."'>";
$aftTag = "</a> | ";
}
if (sizeof($Arr) > 40) { // 40件まで
.............
0453nobodyさん
2006/08/30(水) 11:55:40ID:???0455nobodyさん
2006/08/30(水) 12:55:32ID:???なんじゃこりゃ…よくもこれだけ意味不明なコードを書けるもんだ。
いまいち最終的にどういう結果になればいいのか読めないんで間違ってたらスマソ
<?php
$Data = $Arr;
$MaxPage = intval(count($Arr) / 20);
$P = $_GET["p"];
$url = "../hogehoge.php?id={$id}&p=";// リンクURL
for($i = 0; $i < $MaxPage; $i++) {
if ($i == $P) {
$preTag = "<strong>";
$aftTag = "</strong> | ";
} else {
$preTag = "<a href=\"$url$i\">";
$aftTag = "</a> | ";
}
$links .= $preTag.($i+1).$aftTag;
}
0456nobodyさん
2006/08/30(水) 13:03:18ID:???間違えた。
$MaxPage = intval(count($Arr) / 20);
は
$MaxPage = intval(count($Arr) / 20) + 1;
でよろ。
0457nobodyさん
2006/08/30(水) 13:13:33ID:???どういう動作なのかサッパリわからんが、こういうことだろうか…
$Dataとか$Arrの正体はなんなのかはおろか
「20件ごと」の意味すら読み取れてないので、間違ってるかも
<?php
$P = $_GET["p"];
$range = 10;
foreach($Data as $i){
if( ($i-$P) > $range ) break;
$df = abs($P-$i);
if($df==0){
/* <strong></strong>とかの処理 */
}elseif($df<=$range){
/* <a href=""></a>とかの処理 */
}
}
?>
0458nobodyさん
2006/08/30(水) 13:14:03ID:???というか、ファイルアップ自体、大の苦手です。
どこかいいサイトはないでしょうか?
0459nobodyさん
2006/08/30(水) 13:16:07ID:???for ($i == 1; $i < $loop; $i++)
などとする場合、countの結果はキャッシュされるから
for ($i == 0; $i < count($line); $i++)
の方がベター
とかありますか?
0460林
2006/08/30(水) 13:21:15ID:???さっそく試してみます。
>よくもこれだけ意味不明なコードを書けるもんだ。
私にもよくわかってないんです。^^;
いろんなソースを足して引いてのトライアンドエラーで
なんとか簡単なページャーは使えるようになりましたが、
ソース自体の意味はわかっていません・・・
いただいたヒントを元にまたがんばってみます!
0462nobodyさん
2006/08/30(水) 13:30:41ID:???むしろキャッシュなんてしないから前者の方がベターだと思う。
前回のcount()から$lineが変化してない、なんてのはcount関数では関知しない。
0465nobodyさん
2006/08/30(水) 13:40:04ID:???コメント欄に全角文字が含まれてないとエラーになるようにしたいんですが
if(〜) {&error("半角英数のみの書き込みは禁止です");}
〜の部分を教えてください。
コメントは$commentです。
0466nobodyさん
2006/08/30(水) 13:43:04ID:???0467林
2006/08/30(水) 14:28:27ID:???すんなりうまくいきました。ありがとうございます。すごいっすね^^
ただ、$MaxPage = intval(count($Arr) / 20) + 1; の部分で
件数が36件や48件などのように端数が出る場合はなんの問題も
ないのですが、30件とか40件などのイーブンな場合1つ多くページャー
が出てしまいます。これはイーブンように何か構文を足さないといけない
とおもいますが、例えば
$EvenPage = intval(count($Arr) / 20);
if ......
if以下がどのような感じになるか、アドバイスいただけますでしょうか?
0468nobodyさん
2006/08/30(水) 14:30:22ID:???0469nobodyさん
2006/08/30(水) 14:35:43ID:???んじゃ
$MaxPage = intval((count($Arr) - 1) / 20) + 1;
if($MaxPage < 1) $MaxPage = 1;
とでもしといて。
0470nobodyさん
2006/08/30(水) 14:40:49ID:???> $alpha = 1 - $P + 1;
↑この恐ろしく無意味な式の右辺について、なぜ誰もツッコミを入れないのか・・・??
>>452よ、他の人も書いてたが、キミは才能というかセンスが無さ過ぎる。
プログラミングのような思考法はキミには全く向いてないようだ。
早めに諦めて別のことに全力を傾けることをオススメする。
0472nobodyさん
2006/08/30(水) 15:00:39ID:???俺も前に言われてちょっと落ち込んだ
でも今は元気です
0473nobodyさん
2006/08/30(水) 15:05:23ID:???0474458
2006/08/30(水) 15:08:34ID:???メールで送るのがいいのかもしれませんが良く分からないもので…
fsockopenにてメールサーバにアクセスしてデータを取得したのですが画像や動画はどこに格納されていますか??
0476nobodyさん
2006/08/30(水) 15:10:03ID:???教えてあげたほうが親切
言わないでいて、それで食っていこうなんて馬鹿な気をおこして路頭に迷うよりましだろう
0477nobodyさん
2006/08/30(水) 15:16:24ID:???global $_POST, $_GET, $_SERVER......;
とかはやった方がいいの?
スーパーグローバル変数はglobalで宣言しなくても使えることは使えるんだけど……
0479nobodyさん
2006/08/30(水) 15:29:11ID:F9+d4VtV文書として何も残ってないプログラム(=ソフト?)を
後々の為(改変など)に、仕様がどうなっているのかがちゃんと分かるモノにしたいのですが
いくらで出来ますか?
また、その時に何があれば「仕様が分かるモノ」になるのでしょうか?
よろしくお願いします
0484nobodyさん
2006/08/30(水) 15:40:22ID:???その仕事はかなり糞だ。ほとんどの人がやりたくないだろう。
他人のプログラムを読むのは苦行でしかない。
ましてそこから仕様を上げるなんてほとんど無理。
もちろんプログラムにもよるけど。
作業1日あたり4万くらい出せば、やる人はいると思うよ。
0486nobodyさん
2006/08/30(水) 15:46:42ID:???コンサル業者に頼んでシステムの分析・解析までをしてもらうことになると思うけどそれなりに高いよ。
相場だといくらくらいになるんだろ…Webサイト1個くらいなら納期1〜2ヶ月で計30万〜150万くらいかなーと思うけど。
作成物は要求定義書、基本設計仕様書、詳細設計仕様書、運用マニュアル、保守マニュアル、運用データ統計表辺りかね?
0489nobodyさん
2006/08/30(水) 16:07:35ID:???0490nobodyさん
2006/08/30(水) 16:28:33ID:???0492nobodyさん
2006/08/30(水) 16:41:46ID:???将来のことなんて誰も分からないだろ。俺らが止めろとか言うことじゃないと思うよ。
センス無いと思ってた奴が将来画期的なシステムを作り出すかもしれないし。
食えないと思ったら自分で気づくだろうし。
0493nobodyさん
2006/08/30(水) 16:44:10ID:35ExyJAhようにするにはどうすればよいでしょうか?
(そりゃぁ完全にそれを防ぐことは不可能だとは思うけど)
データの管理はデータベースを使用しています。
クッキーを使おうか、それとも投票者のIPを記録してみるか悩んでいます。
みなさんはどうしていますか?
0494nobodyさん
2006/08/30(水) 16:44:32ID:F9+d4VtVレスありがとうございます
そのような仕事は、大変なのですね
>>480さんの言われるとおり規模によるものでしょうから
一概には何とも言えないものであるとは思いますが
それ以前に、
他人の書いたプログラムを見るのは
>>484さんの仰るように相当な労力が掛かってくるのですね
>>485さん、>>487さん
貴重な体験を聞かせて頂いてありがとうございました
でも、そのようなお仕事をこなされたのですね
尊敬いたします
>>486さん、詳しく説明して頂いて感謝致します
1つのwebサイトなら納期1〜2ヶ月で計30万〜150万くらいが相場なのですかね?
要求定義書、基本設計仕様書、詳細設計仕様書、運用マニュアル、保守マニュアル、運用データ統計表について
あまり聞きなれないので少しググって見たのですが
運用データ統計表というのは、よく分かりませんでした。これは、どのようなものなのでしょうか?
基本設計仕様書というものと、基本設計書というのはほぼ同じものだということなのでしょうかね?
明確な違いが記述してあるサイトが無く、同じような意味合いで使われているようでしたので
長文失礼致しました
0495nobodyさん
2006/08/30(水) 16:48:44ID:QW9pyzd4コード:
<form method="post" action="./test.php">
テスト用<br />
<input type="file" name="test" id="test" /><br />
<input type="submit" value="送信" />
</form>
<?
if($_POST){
$tmp=$_FILES['test']['tmp_name'];
list($width,$height)=getimagesize($tmp);
$newwidth=400;
$newheight=400*$height/$width;
$newimage = imagecreatetruecolor($newwidth, $newheight);
$oldimage = imagecreatefromjpeg($tmp);
if(imagecopyresampled($newimage, $oldimage, 0, 0, 0, 0, $newwidth, $newheight, $width, $height)){
imagejpeg($newimage,'./test/2-1.jpg');
}else{
echo("複製失敗");
}
}
?>
実行結果:
ファイルをアップロードすると、下記の警告が出た後「複製失敗」が出力されます。
Warning: Division by zero
Warning: imagecreatetruecolor(): Invalid image dimensions
Warning: imagecopyresampled(): supplied argument is not a valid Image resource
参考にしたのはhttp://jp2.php.net/manual/ja/function.imagecopyresampled.phpのコードです。
よろしくお願いします。
0497nobodyさん
2006/08/30(水) 16:56:24ID:???大きさ出すときの計算間違ってない?
0498nobodyさん
2006/08/30(水) 17:01:54ID:GN99dFvP指定のアドレスが存在するか調べる関数とかそれに似た効果をもつ
関数ありますか?みなさん何使ってますか。
0499nobodyさん
2006/08/30(水) 17:25:02ID:???正規表現で正しそうなアドレスを受け入れるだけかな。
DNS見に行ってドメインが存在するかどうか確かめるとかあるけど、面倒なんで。
送った後のエラーメールの処理をきちんとやる。
0500nobodyさん
2006/08/30(水) 17:35:19ID:QW9pyzd4このコードはテスト用に簡単に組んだものですので。。
1枚2枚ならFireworksで手動で作業しますが、数百枚単位で、しかも自動で
サイズ変更をしたいのです。
具体的には、画像アップロード掲示板のようなもので、サムネイル表示を
したいと思っています。
>>497
division by zero が出るのは、たぶんgetimagesizeのところで$width,$heightが
正常に取得できてないのでは?と自分なりに考えています。$widthが0なら
「0で割り切れません」が出ても当然ですよね…
PHPマニュアルでgetimagesizeの説明を見ると、引数にファイル名を取れる
はずなのに、なぜ????と悩んだ末、こちらに書き込んだ次第です。
0502nobodyさん
2006/08/30(水) 17:39:45ID:???> 正常に取得できてないのでは?と自分なりに考えています
考えても何も解決しない。
なぜ echo $width; をやってみようと思わないのか?
■ このスレッドは過去ログ倉庫に格納されています