【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
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
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:???0681nobodyさん
2006/12/02(土) 19:13:54ID:???0682nobodyさん
2006/12/02(土) 19:18:38ID:???0683nobodyさん
2006/12/02(土) 19:26:11ID:???だいたいくだ質のパートスレとしか書いてないのに誰に伝わると思ったんだろ。
0684nobodyさん
2006/12/02(土) 19:27:35ID:???0685nobodyさん
2006/12/02(土) 19:38:51ID:???0686nobodyさん
2006/12/02(土) 19:42:01ID:???(( (0^〜^∩ (^▽^ ∩ (‘ д ‘ ∩ ))
⊂ 中退 丿 ⊂中卒 丿 ⊂専門卒丿 ♪
+ ( ( ( ( ( ( ( ( ( ∧_∧ +
ノハヽヽ (_(_) (_(_) (_(_) /ハ)ヽヽ +
( ´__ `) ♪ ♪ (´ー ` ●)
( あなたつ 差別をなくして明るい社会 ⊂修士終了 )
) ) ) 同じ人間同士仲良くしましょう ( ( (
(_(__) ♪ (__)_)
ノノノハヽヽ ∂/ハ)ヽ ノノノハヽ ♪
川^ v ^ 从 (〜^◇^) 川 ゚ ___ ^ ノ||
( 高専卒 つ、( 大卒 つ、(博士終了つ、 +
) )ヽ_ノ ) )ヽ_ノ ) )ヽ_ノ +
(__) (__) (__)
0687nobodyさん
2006/12/02(土) 19:42:04ID:???0688nobodyさん
2006/12/02(土) 19:59:16ID:???君のような事を言う人間を何人も見てきた。
さぁ、現状を見たまえ。
そして、その主張が全くの無駄だという事に気付け。
精神衛生上、二度とこのスレに近寄らない事を強く推奨する。
0689nobodyさん
2006/12/02(土) 20:03:26ID:???去年も同じフレームやってただろお前w
馬鹿にはそう見えるのかも知れんが、マニュアル読ませず手取り足取り教えるだけのスレか?
判例が上に山ほどあるぞバーカ
0690nobodyさん
2006/12/02(土) 20:09:08ID:???とくに問題を感じたことはないんだけど?
0691nobodyさん
2006/12/02(土) 20:14:58ID:???0692nobodyさん
2006/12/02(土) 20:22:46ID:???そんで、動画が見られそうだから動画見ようとしたら、音声しか出ないもんで、
なんかダウンロードしなきゃいけないんかと思いつつ、動画の下の方の英語見てたら、
Click hereだったかな?そこを押したら動画が見れると思ってそこをクリックした。
そしたら、とりあえず動画は見られたわけだが、翌日、ネットやってるとアダルトサイトのポップアップみたいなんが出てきた。
放っておいたら勝手に出てきやがる・・。。。
いくらスキャンしても解決しない。。
これはどうすればいいのだろうか。。orz
クレジットカードが心配だ。。まぢで教えてくれ。たのむ。
参考までに、そのアダルトサイトのURL載せとく。
ttp://kampamba.banchitos.com/index.html
このエロサイトの画像何でもイイからクリックして、
そんでまた画像あるからそこの画像をクリックしたら動画が見られる。
頼む!本当に助けてくれ。。。
0693nobodyさん
2006/12/02(土) 20:23:23ID:???0694nobodyさん
2006/12/02(土) 20:27:31ID:???0695nobodyさん
2006/12/02(土) 20:28:04ID:???0696nobodyさん
2006/12/02(土) 20:28:31ID:???いくら消しても、時間がたつと出てくるのだが。。
これは家族のパソコンだからマヂヤバイんだが。。
0698nobodyさん
2006/12/02(土) 20:35:43ID:???一回それでやってみるぽ。
0700nobodyさん
2006/12/02(土) 20:38:51ID:4l/VpbTLforとwhile
eregとpreg_match
どちらを使うようにすればいいのでしょう?
0701nobodyさん
2006/12/02(土) 20:41:25ID:???いまエロトロイでそれどころじゃない!
0704nobodyさん
2006/12/02(土) 20:51:57ID:???個人的な趣向を交えて言えば、
・printとecho
通常はechoだけど、printは値を返すらしいので、たとえば
kansu() or print("kansu失敗");
とかできるみたいだ。一度もやりたいと思ったことないけど。
・forとwhile
何かを順次処理するときはできるかぎりfor。それ以外はwhile。
あとは、while ($row = DBからfetch系())のようなイディオム次第。
・eregとpreg_match
pregのほうが強力なので、pregを常用。
ついつい長々回答してしまったorz
0705700
2006/12/02(土) 20:53:47ID:4l/VpbTLありがとうございます。
ふだんはforを使ってるので、whileの文法を忘れてしまう事が…
入門書にはeregの事が書いてあって、pregが一切なし。 人のソース見るとeregではなくpregを使ってる方が多いような気がしたので、どうなのかと思っていました。
0707nobodyさん
2006/12/02(土) 20:56:49ID:???0708nobodyさん
2006/12/02(土) 21:10:30ID:???なんていうか$i++とか$j--とか$iter->next()みたいな、「次のステップに行くための処理」が別個に必要なときは、できるかぎりforを使いたいかな。
whileのブロックの終わりのほうに$i++等を書くのは、極力避けたい。
0709nobodyさん
2006/12/02(土) 21:14:16ID:???pregはPerlの独自拡張で複雑だから、入門書は基本的なPOSIX仕様のeregにしたのかもね
pregでマルチバイトを処理するには、文字列をutf-8にしてuオプションつけなきゃいかんことあるし
ていうかエロトロイに礼なんか言うなw
0710nobodyさん
2006/12/02(土) 21:19:30ID:dk8eu7iU>700氏ではありませんが…。
「printとecho」は何となく。「eregとpreg_match」は UTF-8 で処理をする癖が付いているので大体解りました。
ですが、「forとwhile」の順次処理の部分が今ひとつ掴めません。
while でも for でも書けるロジック。つまり、
for ($i=0; $i < $max; $i++){
...
}
のようなアルゴリズムを順次処理と呼称しているのでしょうか?
Google検索にて、順次処理とは「順番に処理をすること」ではないか、と解釈しました。(自信なし)
つまり、while ($row = DBからfetch系()) は順次処理とは呼べず、上記のようなロジックは順次処理である。
この理解であっているでしょうか?
■ このスレッドは過去ログ倉庫に格納されています