【PHP】下らねぇ質問はここに書き込みやがれ 33
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/11/23(木) 00:27:02ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
【前スレ】
【PHP】下らねぇ質問はここに書き込みやがれ 32
http://pc8.2ch.net/test/read.cgi/php/1162818436/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc8.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc8.2ch.net/db/subback.html
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
0581nobodyさん
2006/12/01(金) 11:47:43ID:???0583580
2006/12/01(金) 11:50:48ID:???サンクスです
http://jp2.php.net/manual/ja/ini.core.php#ini.short-open-tag
やはり、short_open_tag を on にしていないと使えなかったんですね。
<? と ?> のショートタグは無効にしたい (XML宣言とかで邪魔になるし美しくないので) のですが、
<?php= みたいな方法で <?php echo を使いたいんです(´・ω・`)
やはりこれは無理なんですかね…。
0585nobodyさん
2006/12/01(金) 11:56:14ID:pNXMUOFK横着はいけないなと・・。
ショートタグを活用したことが無かったので意外だったんですよね。
構文エラーじゃないのかと思った次第です。
<?=$test?>
0586nobodyさん
2006/12/01(金) 14:56:38ID:???0587nobodyさん
2006/12/01(金) 15:04:13ID:???0588nobodyさん
2006/12/01(金) 15:06:35ID:???0589nobodyさん
2006/12/01(金) 15:19:11ID:???まぁ、単純な置換でショートタグから普通の構文にできるんで、好みでやればいいかと
0590nobodyさん
2006/12/01(金) 15:44:49ID:mT/4eJy6FORMに数字しか入力させないようにしたいのですが
なんの関数を使えば良いでしょうか
0591nobodyさん
2006/12/01(金) 15:47:39ID:???0593nobodyさん
2006/12/01(金) 16:02:12ID:NWvcMdwA0594nobodyさん
2006/12/01(金) 16:05:26ID:mT/4eJy6どうもでしたー
0596nobodyさん
2006/12/01(金) 17:17:14ID:???FPDFを使ってPDFファイルを作成しました。
index.html→ex.php(IE上でPDFが表示される)
は問題ないのですが、ブラウザで表示するのではなく、
ファイルとしてダウンロードさせようと思います。
それで、ex.phpの上部に
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="ex.pdf"');
と記述したのですが、ファイルのダウンロードが出来ません。
もしご存じの方は、どうすればいいか教えていただけないでしょうか。
0597nobodyさん
2006/12/01(金) 17:32:40ID:???$path_file="c:/httproot/hogehoge.pdf";
$content_length=filesize($path_file);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment ; filename=aaa.pdf");
header("Content-Length: ".$content_length);
readfile($path_file);
?>
0598nobodyさん
2006/12/01(金) 17:33:53ID:???と回答もしないであげ足とるなよおまえらw
0599nobodyさん
2006/12/01(金) 17:34:34ID:???Content-Typeを application/octet-stream に変えてやればいい
0600nobodyさん
2006/12/01(金) 17:36:41ID:???0601nobodyさん
2006/12/01(金) 17:49:43ID:???0602nobodyさん
2006/12/01(金) 18:11:28ID:???本スレとくだスレという、互いを意識しあう二つのスレが存在した。
本スレに住む住人は、「くだスレいらなくね?」と思い、くだスレに住む住人は、「本スレいらなくね?」と思っていた…
そんな拮抗した時代はもろくも崩れ去った…
本スレ住人とくだスレ住人の戦争が勃発したのである。
続く↓
0603596
2006/12/01(金) 20:25:17ID:???ありがとうございます。
試しに597さんのソースをex.phpの上部に貼り付けて
$path_fileをプログラムがある場所を指定したのですが、
ダウンロードはされるものの、作成されたファイルを開けません。
(なので、作成失敗していると思います)
0604nobodyさん
2006/12/01(金) 20:27:32ID:ZL9qk5lmあるユーザ(例えばID=10)がログインしてるとき、IP等だけでなく、
IDもapacheのログに追加出力するにはどうしたら良いのでしょうか??
IDの内容は$_SESSIONで持ちまわっています。
apacheのログ出力設定の何かをいじるのだろうと思いますが、
ググってもいまいち望みの結果が検索できませんでした。。。
0605nobodyさん
2006/12/01(金) 21:11:34ID:???IDを付け加えた別のログを吐くしかないのでは?
0606nobodyさん
2006/12/01(金) 21:17:25ID:???0607nobodyさん
2006/12/01(金) 21:21:04ID:???phpはinput.htmlのsubmitボタンからhoge.phpを呼んでいます。
ブラウザーからはうまく行きます。
input.html
<form action="hoge.php" method=POST>
<input type="text" name="name">
<input type="submit" value="submit">
</form>
hoge.php
<?php
$fh = @fopen("piyo.txt","a");
fputs($fh,"$_POST[name] ああ\n");
fclose($fh);
?>
<a href="input.html">
telnetでの入力
telnet localhost 80
POST hoge.php HTTP/1.0
Content-Length: 6
name=1
と入力してます。しかしpiyo.txtには何も入力されずああが増えるだけです。
どなたか原因を教えてもらえないでしょうか?
0609nobodyさん
2006/12/01(金) 21:58:33ID:???0610607
2006/12/01(金) 22:18:29ID:???Content-type: application/x-www-form-urlencoded
を入れるとうまく動いた。
0611607
2006/12/01(金) 22:21:35ID:???Content-type: application/x-www-form-urlencoded
を入れるとうまく動いた。
0612607
2006/12/01(金) 22:22:13ID:???Content-type: application/x-www-form-urlencoded
を入れるとうまく動いた。
0614nobodyさん
2006/12/02(土) 00:33:11ID:???function entry($val){
$con = mysql_connect(localhost, root, test);
$selectdb = mysql_select_db($DBNAME, $con);
$sql = "select * from datatable";
$rst=mysql_query($sql,$con);
echo "<select name=\"datalist$val\">";
echo "<option></option>\n";
while($row=mysql_fetch_array($rst)){
echo "<option value=\"$row[name]\">$row[name]</option>\n";
}
echo "</select>";
}
表示側は <? entry(1);?>などとしています。
<select name="datalist1"><option></option></select>は表示されるのですが、
whileの中が表示されません。どこがおかしいのでしょうか?
0615nobodyさん
2006/12/02(土) 00:44:02ID:???大して読んでないが
whileの中を
echo "<option value={$row['name']}>{$row['name']}</option>\n";
でテストして味噌
0617nobodyさん
2006/12/02(土) 01:29:25ID:C/1Qwb+bzip関数を有効にするにはどのようにしたらよいでしょうか。
どなたかご教授頂けると恐縮です。
0618nobodyさん
2006/12/02(土) 01:35:51ID:???print_r($row);
するとちゃんと値出る?
0620614
2006/12/02(土) 01:42:30ID:???いえ、出ません。そしてソースを見ると以下のようなエラーが出てます。
<b>Warning</b>: mysql_fetch_array(): supplied argument is not a valid MySQL
result resource in <b>C:\Program Files\Apache Group\Apache2\htdocs</b> on line <b>10</b><br />
たぶんwhile内のmysql_fech_arrayが読み込めないっぽいです。。
0621nobodyさん
2006/12/02(土) 01:51:46ID:???0622nobodyさん
2006/12/02(土) 01:55:11ID:???・Added RFC1867 fileupload processing hook. (Stefan E.)
これ実装した拡張モジュールってありませんか?
あと「PHPの本スレ」みたいなものはないんですか?
0623nobodyさん
2006/12/02(土) 03:30:08ID:???おいおい、先にエラー出てるって言えよ・・
そのエラー内容と出てる行があらば考えるか検索できると思うよ。
でmysql_fetch_array()でエラー出てるから、$conが問題なんじゃね。
DBにコネクト出来て無いとか
ttp://www.php.net/manual/ja/function.mysql-connect.php
の例を見てコネクトをチェックしなさい。
何で俺今日はこんな面倒見がいいんだろw
0624nobodyさん
2006/12/02(土) 04:53:53ID:???一旦mysql関数で現在値データ拾ってきて、それにphpで+1して
UPDATEするしか無理でしょうか?
直接MySQLへのクエリーのみで+1することは不可能でしょうか?
0626nobodyさん
2006/12/02(土) 06:24:15ID:???同時にリクエストきたらプログラム対応じゃ面倒だろうがw
0627nobodyさん
2006/12/02(土) 06:24:50ID:???こんな感じだったっけ?
0628nobodyさん
2006/12/02(土) 07:38:24ID:???sqlのマニュアルくらい読めよ
0629nobodyさん
2006/12/02(土) 08:00:44ID:???MySQLでorderというフィールドを作成して、
順番データを入れたいと思います。
それを参考に、phpで表示させる、という流れです。
今やってる苦肉の策は
指定データ(行)のorderの値だけ1加算する、というかたちです。
これだとorderが10のデータと順番を変えようと思ったら、
10回動作させなければいけません。
orderデータに一意性を持たせて、、、
みたいなことも考えましたが、いかんせんかなり面倒な感じになりそうです。
どんなロジックでいけばいいのかわからないのですが、
何かよい方法はないでしょうか。
0630nobodyさん
2006/12/02(土) 09:23:47ID:???orderが今10のやつを3に変更しようとしたら、元々3のやつを4に、4のやつを5に…と
全部ずらしていかないといけないって話?
update table set order = order + 1 where order >= 3 and oeder < 10;
update table set order = 10 where id = '元がorder=10のレコードのID';
の2回updateで終了の気がするけど。
0632nobodyさん
2006/12/02(土) 09:47:53ID:???>ロック中に flock()でブロックを行いたくない場 合は、operation に LOCK_NB を加えます。
LOCK_NBとは、これは具体的にどういう意味ですか?
マニュアルの説明文ではどうもよくわかりません。
0633nobodyさん
2006/12/02(土) 09:48:57ID:???0634nobodyさん
2006/12/02(土) 09:56:35ID:???他のプロセスがflockしてるときにさ、
(1)LOCK_NB無しでflockしようとする時(通常)
他のプロセスがflockが終わるまで待機する。
(2)LOCK_NB有りでflockしようとする時
flockはあきらめて先に進む。
0636nobodyさん
2006/12/02(土) 10:02:40ID:???0637nobodyさん
2006/12/02(土) 10:04:34ID:???flockは成功するとTRUE、失敗するとFALSEだから
LOCK_NBありのときは返り値を見て処理を変更するとか、
結構使いどころはあるよ。
0638nobodyさん
2006/12/02(土) 10:06:43ID:???0640nobodyさん
2006/12/02(土) 10:12:35ID:???WindowsのPHP4.4.2でfopenでURIを読み込もうとすると、apacheがエラーになります。
(WindowsXPで一般保護エラーのダイアログ?が出る。ご不便をおかけして申し訳ありません。のやつ)
何かモジュールを組み込む必要がありますか?
0641nobodyさん
2006/12/02(土) 10:25:15ID:???Apacheをアップデートしてみたら?
0642nobodyさん
2006/12/02(土) 10:56:39ID:h5X/zZpVallow_url_fopen = On
になってます。
0643nobodyさん
2006/12/02(土) 10:57:19ID:h5X/zZpVありがとうございます。試してみます!
0644614
2006/12/02(土) 11:31:04ID:???だいぶレスが遅れてすみません。。$conの問題ではないです。
function内ではなくrequireで読み込むと表示されますし、
function内でもwhileの箇所を$row=mysql_fetch_array($rst);
にすると1行出力されます。
だからfunction内でwhileを使えないのか?もしくは何か設定があるのか?
っと思い、質問した次第です。リファレンスとか見まくったのですが、解決しません。。
0645nobodyさん
2006/12/02(土) 11:38:22ID:???0646nobodyさん
2006/12/02(土) 11:40:20ID:???そんなん無い。whileくらい使えて当たり前。
>>623はconnectに問題とか行ってるがqueryの可能性も高い。
まずはconnectとselect_dbとqueryのそれぞれ直後に print mysql_error(); を入れること。
そもそもconnectとselect_dbとqueryとで戻り値チェックもしてない時点で君は大バカ。
ちなみに予想は「select_dbに失敗していてその後のqueryが実行できてない」だ。
1行だけ成功したパターンってその関数の実行前にすでにconnectとselect_dbを実行してて
改めて実行しなくても動く状況にすでになってたんではないかな。
(connectは同じパラメータで再connectかけると前のconnectをそのまま使う)
当ったら10回お礼を言うように!
0647nobodyさん
2006/12/02(土) 11:41:55ID:???どうしてそういう遠回りで無意味なデバッグ方法を示唆すんの?
それともお前は普段そんな変なデバッグ方法をとってるのか?
0648629
2006/12/02(土) 11:42:19ID:???そのやり方の場合、
orderの値を全て把握していないと厳しくないでしょうか?
例えば、
a(order=100)
b(order=50)
c(order=3)
と並んでいて、
cを上に上げるためにはbのorder値と、
bをaの上に上げるためにはaのorder値と比較しなければいけないですよね?
MySQLでorderの直近の上の値をチェックできれば楽かと思いますが、
phpで実現しようと思うとかなり面倒なコーディングになるような気がするのですが・・。
0652614
2006/12/02(土) 11:52:35ID:???おっしゃる通りでした・・。
この掲示板ではわかりやすいように>>614と書いたのですが、
実際は$con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)と
変数にしていました。
これを変数ではないサーバの設定に変えたところ、問題なく表示されました。
デバッグの方法も頭から抜けていました。大変勉強になりました。
昨日からご迷惑おかけしました。ありがとうございました。
0654nobodyさん
2006/12/02(土) 12:22:46ID:h5X/zZpVapacheを2.0.59にアップデートしてみましたが、やっぱりエラーが表示されました。
2.2系にアップデートしないといけないかもしれませんね?
0655nobodyさん
2006/12/02(土) 13:35:25ID:???ごめん。過去ログ確認したら間違ってた。
それ、Apache側じゃなくWin版PHP4.4.2のバグ。4.4.3以降で修正済み。
0656nobodyさん
2006/12/02(土) 14:03:50ID:???・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
0657nobodyさん
2006/12/02(土) 14:14:39ID:???select order from table where order > 3 order by order limit 1で
一発で直近のorderの値くらい取得できると思うんですが。
0658nobodyさん
2006/12/02(土) 17:01:10ID:uxBQAy5h以下のようにして、見つかったら true なければ falese で条件判断をして
処理を行うということをしたいのですが・・・
$query=mysql_query($db_open,"SELECT * FROM abcd WHERE A='table'");
if($query==true){
}
または、
if($query==falese){
}
これって正しいのでしょうか?違っていましたら、正しい記述の
仕方を教えていただけませんか?
0659nobodyさん
2006/12/02(土) 17:03:23ID:???0660nobodyさん
2006/12/02(土) 17:04:20ID:???0662658
2006/12/02(土) 17:38:00ID:2AsRSHi/ご回答ありがとうございます。
マニュアルを見たのですが、先ほどの例の場合、どう記述するかが
掴めません。よろしければ、お教え願えないでしょうか?
0663nobodyさん
2006/12/02(土) 17:56:03ID:???0664nobodyさん
2006/12/02(土) 18:01:33ID:???クエリーだけで+1できるよ。
UPDATE テーブル名 SET `hoge`=`hoge`+1 WHERE 〜
っていうか、使い方にもよるけど、
MySQLのオートインクリメントを使えばいいと思うが。
0665nobodyさん
2006/12/02(土) 18:15:12ID:???オートインクリメントで+1できるのはinsertであって
updateしたい要望とは全然噛み合ってない気がするが。
つーか>>627
0666nobodyさん
2006/12/02(土) 18:16:43ID:???正しくない。mysql_queryの戻り値はSQL実行でエラーが出たかどうかであって
データが見つかったかどうかではない。
データの有無は取得されたデータを見ないとダメ。
0667nobodyさん
2006/12/02(土) 18:22:19ID:???正しいかどうかは動かしてみればわかるだろ。
0668nobodyさん
2006/12/02(土) 18:32:10ID:???0669nobodyさん
2006/12/02(土) 18:33:53ID:???0671nobodyさん
2006/12/02(土) 18:47:09ID:???マニュアルを見ないなら見ることを教えるほうがずっといい
ごく単純なことだと思うが
0672nobodyさん
2006/12/02(土) 18:49:28ID:???0673nobodyさん
2006/12/02(土) 18:58:02ID:???0674nobodyさん
2006/12/02(土) 19:00:22ID:???お前のほうがよっぽど馬鹿と言われるに相応しいねえ
0675nobodyさん
2006/12/02(土) 19:03:48ID:???0676nobodyさん
2006/12/02(土) 19:07:48ID:???0677nobodyさん
2006/12/02(土) 19:08:30ID:???それで納得できるのは馬鹿であるお前だけだよ
常識ないなあ
0678nobodyさん
2006/12/02(土) 19:10:14ID:???■ このスレッドは過去ログ倉庫に格納されています