【PHP】下らねぇ質問はここに書き込みやがれ 69
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/05/27(火) 18:04:33ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 68
http://pc11.2ch.net/test/read.cgi/php/1209822736/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0392nobodyさん
2008/06/08(日) 21:37:20ID:???今両親がネットで中古販売を始めるということで
ダヴィンチ・カートという市販のソフトを使っていろいろ作っているのですが
その中の転送先フォルダという項目が分からないせいか、
404エラーでショッピングカートのページが表示されず困っています。
調べてみると
http://www.netdeoshigoto.com/cart/support/troubleshoot/trouble_nso.html#answer_shop_2
のような手順を踏めと書いてあるのですが、
いろいろ試してみてもバージョンが違うのか、はたまたわたしが滅茶苦茶なことをしているのか、
一向に表示できず、参っています。
どなたかもし知っている人がいたら教えてもらえてください・・・orz
0393nobodyさん
2008/06/08(日) 21:44:58ID:???失礼しました。
0397nobodyさん
2008/06/08(日) 22:11:53ID:???0398nobodyさん
2008/06/09(月) 00:17:25ID:???今のところ同じ物だろ?
ソースいじるのに相談乗るぐらいで
mysqlは真顔で「商用だと使用できない」とか嘘つくやつがいるから困る。
今後はGPL版と有料版を分けるらしいから他のDBが伸びてくるだろうね。
0399382
2008/06/09(月) 08:37:18ID:???$timestamp = mktime(0, 0, 0, $a, $b, $c);
$timestampより日付情報(Ymd)を抜き取る方法を教えて下さい。
どうかよろしくお願いします。
0400nobodyさん
2008/06/09(月) 08:50:49ID:???はじめまして、じゃないだろw
date()関数に$timestampを入れてみ。
先ずはマニュアル見てみようか。
0403nobodyさん
2008/06/09(月) 11:07:18ID:???<?php
$conn = mysql_connect("localhost", "usr", "passwd");
mysql_select_db("kisop", $conn);
$res = mysql_query("SHOW TABLES",$conn);
if($res){
print ("データ獲得に成功しました。");
}
mysql_free_result($res);
?>
でやってみると
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in 〜
と表示されてしまいます。
また、mysql_free_result($res); の部分を削除すると今度は何も表示されません。
一応、本を見ながらやっていてコマンドプロンプトではDBに接続できてます。
お願いします。
0404nobodyさん
2008/06/09(月) 11:17:41ID:???どこでエラー吐いてるかわかるべ?
0405nobodyさん
2008/06/09(月) 11:28:40ID:???mysql_error()
0406nobodyさん
2008/06/09(月) 12:10:03ID:???× SHOW TABLES
○ SHOW TABLES;
こういう低次元なお話じゃないの?w
0409nobodyさん
2008/06/09(月) 12:24:29ID:???ユーザー名とパスワードが本当は変数だとか、
そういう答えですよ。
0410nobodyさん
2008/06/09(月) 12:31:54ID:???0411403
2008/06/09(月) 13:47:05ID:???一度アインストールして最初から設定したらきちんと表示されました。
0412263
2008/06/09(月) 15:30:03ID:???遅レスですが>>266を参考にさせてもらい
/^\d+$|^n?$/
で自分なりに期待する動きはできました。
ありがとうございました。
間違っていたら指摘していただけると助かります。
0413nobodyさん
2008/06/09(月) 15:37:46ID:???だと空文字列でも引っ掛かる。
/^n$/
↑ nのみの場合は、これ。
つか、PHP関係ないじゃん。
正規表現スレ行けよ。
0415nobodyさん
2008/06/10(火) 00:25:50ID:???0416nobodyさん
2008/06/10(火) 00:46:12ID:???ポリモーフィズムとの違いを説明できるか?
質問のレベルで回答のレベルも決まるんだから、もっと意識して書いて欲しい。
答えはできる。以上。
0417nobodyさん
2008/06/10(火) 01:02:30ID:yqKKYTz7$res = mysql_query($sql,$conn);
while($row = mysql_fetch_array($res)){
echo $row["id"];
}
こういうPHPからMySQLにアクセスして、テーブル一覧を表示しています。
同じデータをもう一度実行する場合、whileの後に
$res = mysql_query($sql,$conn);
として、もう一度SQLコマンドを実行しなければ行けません。
1度、SQLを実行して$resで取得したクエリを
何度もwhileで出力する事は出来ないのでしょうか?
0418nobodyさん
2008/06/10(火) 01:12:35ID:???出力する内容がそんなに長くないなら、一回配列に書き出しちゃえば?
$sql="SELECT * FROM test";
$res = mysql_query($sql,$conn);
$rows = array();
while($row = mysql_fetch_array($res)){
$rows[] = $row;
}
//出力時には出力したいタイミングで
foreach($rows as $row){
echo $row["id"];
}
とか。
0419415
2008/06/10(火) 01:27:16ID:???ありがとうございます。
ぶっきらぼうな聞き方でしたね。すいません。
PHPでも全然問題無くできるとは思ってたんですが、
RubyがやたらDuck Typingを強調しているので、何か知らないすごい機能が
あるんじゃないかと思って、一応こっちで聞いてみました。
そうなると、使いどころによってはインターフェイスだって使えるPHPって
なかなかいいなと思いました。
0421nobodyさん
2008/06/10(火) 01:51:04ID:???mysql_query();で、リソース型で保存された変数にアクセスしてるだけで
SQL文を実行してるわけではないと思ってたけど。
0422421
2008/06/10(火) 02:05:19ID:???正直、よく分からん……。
MySQL関数を使ったときのログを、SQL文で保存するような方法ってないかなぁ?
内部の仕組み知りたい。
0423nobodyさん
2008/06/10(火) 21:38:23ID:sCtgQ3vrローカルにコピーしたいのですが、
これを、
$htmldata = file_get_contents($URL);
$htmldataを元にローカルにファイルを作って書き込み処理
のようにしますと、物凄くメモリーが食います。
ファイルをダウンロードしながら、逐次ローカルにファイルを作るようなことはできないでしょうか?
アドバイス宜しくお願いします。
0424nobodyさん
2008/06/10(火) 21:52:08ID:???0425nobodyさん
2008/06/10(火) 21:52:32ID:???0426nobodyさん
2008/06/10(火) 21:55:33ID:???使えなきゃsocket開いて自前で全部書けばできるんじゃない?
0427nobodyさん
2008/06/10(火) 23:31:43ID:???ず っ と 待 っ て ま す 。
0428nobodyさん
2008/06/10(火) 23:50:06ID:???0429nobodyさん
2008/06/10(火) 23:52:16ID:???http://pc11.2ch.net/test/read.cgi/blog/1188704566/
検索くらいしようぜ・・
0430nobodyさん
2008/06/10(火) 23:57:26ID:???なんでこのスレに来るのか激しく疑問だ
0431nobodyさん
2008/06/11(水) 00:09:42ID:???んでこのスレをこの板の総合質問スレと思ったとか?
0432nobodyさん
2008/06/11(水) 01:28:09ID:???墨付き括弧内はただの修飾として読み飛ばされやすい
0433nobodyさん
2008/06/11(水) 02:44:31ID:???メイン処理部分でメンバ変数のアクセサ作るのが定石なのかな?
デザインパターンもっと勉強しておくんだったな。
0434nobodyさん
2008/06/11(水) 02:49:26ID:???0435nobodyさん
2008/06/11(水) 04:51:30ID:???後々の管理がどうたらこうたらほざく痴呆のために、>>434が言うようにまとめておけばよい。
0436nobodyさん
2008/06/11(水) 06:49:49ID:???0438nobodyさん
2008/06/11(水) 11:03:07ID:???0439nobodyさん
2008/06/11(水) 12:15:45ID:FwH5w6fUマニュアルを見る限りinsertやupdateの際に
beginを宣言していないようなのですが、明示的に宣言しなくても
関数が勝手にやってくれているのでしょうか?
0441nobodyさん
2008/06/11(水) 12:37:07ID:FwH5w6fUありがとうございます
0442nobodyさん
2008/06/11(水) 12:51:14ID:???mysql_query('COMMIT;');
0443nobodyさん
2008/06/11(水) 15:20:36ID:dkaR05Is表示するにはどうすればいいのでしょうか?
やはり、str_replaceなどでの置き換えでしょうか?
0444nobodyさん
2008/06/11(水) 15:24:28ID:???0445nobodyさん
2008/06/11(水) 18:50:21ID:???スクリプトの実行前なのか、実行中なのか。
実行中ならどの時点なのか知りたいです。
0446445
2008/06/11(水) 18:51:05ID:zOqFVLX/0447nobodyさん
2008/06/11(水) 19:16:57ID:???0449nobodyさん
2008/06/11(水) 19:21:50ID:???0450nobodyさん
2008/06/11(水) 19:42:57ID:xqxU9BrJ入力結果が反映されて値に入っているフォームも同時に返したいんだが、
これをいちいちプログラムで書かずに実行するライブラリとかありませんかね?
イメージ:
<form method="post" action="/">
<input type="text" name="foo" value="" />
</form>
で「こんにちは」と検索したら、
<form method="post" action="/">
<input type="text" name="foo" value="こんにちは" />
</form>
検索結果と共に↑をそのまま出力してくれる感じ。
いちいち手書きで値を入力したプログラム書くのが
なんだかバカバカしくなって……。
0451nobodyさん
2008/06/11(水) 19:45:12ID:???0452nobodyさん
2008/06/11(水) 19:51:29ID:???なんかサイズが大きいとエラーもはかずにスクリプトがとまっちまう。
0453nobodyさん
2008/06/11(水) 19:51:55ID:???何か問題が?
ちなみに、今はフォームを書き出す関数を作り、
引数なしだったら、デフォルト書き出し。
引数付きだったら、値付き書き出し、
という処理で対処してますが、
なんだか美しくないです。
0454nobodyさん
2008/06/11(水) 19:55:09ID:???別にpostでもいいけど
0457nobodyさん
2008/06/11(水) 21:41:12ID:???<form method="post" action="/">
<input type="text" name="foo" value="<?php echo get_post('foo') ?>" />
</form>
function get_post($name){
return (isset($_POST[$name]))? $_POST[$name] : "";
}
とかやっておけば、POST送信後でも送信前でも、問題なく動くと思うけど、こういうのじゃダメ?
0458450
2008/06/11(水) 22:26:42ID:???これをもう少し効率化した関数を作っているのですが、
結局、フォームの内容が変われば、
それに合わせて関数を書き換える必要があります。
$_REQUEST( or $_POST or $_GET )に作られる配列のキーと、
そのformの持つname属性は必ず一致するはずです。
上記を前提に、
どんなフォームでも送信前は通常と送信後は値を代入した、
汎用的なライブラリが存在しないかな?と思い、質問しました。
ないようなら、作ろうかと。
0459nobodyさん
2008/06/11(水) 23:02:11ID:FV2F4cCvforeach($_POST as $k => $v)
}
0460nobodyさん
2008/06/11(水) 23:02:47ID:FV2F4cCvforeach($_POST as $k => $v)
}
0462nobodyさん
2008/06/11(水) 23:19:21ID:???そうすると、form内容部分を全部PHPコードで出力するようなことになりそうだけど。(echoとかして)
ソレをやっちゃうとデザイン組むのが面倒くさそうだね。
使ったこと無いけど、PEAR::HTML_QuickFormとかはどうなんだろうね。
テンプレートを作らないでフォーム生成するってなら、QuickFormでもなんか出来そうじゃない?
0463450
2008/06/11(水) 23:25:43ID:???ifがないです。
そもそも、>>459だと、クエリが存在しないデフォルト表示は、どうするんでしょう?
そして、クエリのキーと一致するフォーム内要素の(特に)typeをどう判別するのでしょう?
とても傲慢な書き方になってしまいますが、
そういうことが聞きたいのではありません。
>>462
とりあえず、本命と思われるQuickFormのライブラリ群を眺めましたが、
該当する機能が見つかりませんでしたので、質問してみました。
結局、従来のQuickFormで作っても、
手書きと同じようにフォームの要素ごとに場合分けしないといけないのです。
もういっそ、QuickFormの拡張ライブラリの形で作ってみようと思います。
CPANモジュールしか作ったことがないので、PEARのルールがよく分かりませんが、
個人的に使う分には問題ないだろうとw
0464nobodyさん
2008/06/11(水) 23:39:41ID:???とっとと作ってくれ
コード見りゃ理解できるかもしれないからなw
0465nobodyさん
2008/06/11(水) 23:59:08ID:???まぁ、フォーム一個作るのに、Attributeの指定を一つ一つに施したりだとか、
プロパティ値で内容いじるぐらいだったら、
上であげた形で、普通にHTMLのコードに関数差し込んだ方が、楽じゃない?
結局最初にフォーム作ってフォームデザインするときにはHTMLかいて調子整えたりするわけだし。
0466450
2008/06/12(木) 03:44:55ID:???ソース汚いのは突発で書いたから我慢して。
$form = <<<_EOF_
<form method="post" action="/">
<input type="text" name="name" value="" />
<input type="text" name="name2" value="" />
<input type="text" name="name3" />
</form>
_EOF_;
$obj = simplexml_load_string( $form );
$array = get_object_vars( $obj );
if( !empty( $_REQUEST ) ) {
foreach( $_REQUEST as $q_key => $q_value ) {
foreach( $array as $key => $value ) {
if( $key <> '@attributes' ) {
if( is_array( $array[$key] ) ) {
for( $i = 0; $i < count( $array[$key] ); $i++ ) {
if( $q_key == $array[$key][$i][name] ) {
isset( $array[$key][$i][value] ) ?
$array[$key][$i][value] = $q_value :
$array[$key][$i]->addAttribute( 'value', $q_value );
}}}}}}}
$result = $obj->asXML();
$result = str_replace( '<?xml version="1.0"?>', '', $result );
print $result;
0467nobodyさん
2008/06/12(木) 07:20:39ID:???Parse error: syntax error, unexpected T_AS in form.php on line 14
0468nobodyさん
2008/06/12(木) 07:34:42ID:???0469nobodyさん
2008/06/12(木) 09:53:55ID:???0470nobodyさん
2008/06/12(木) 11:10:16ID:???400件程度ならXMLの方がいいですよね?
いいアドバイスよろしくお願い致します。
0473nobodyさん
2008/06/12(木) 18:24:19ID:LQ12XrxFforeach($_POST as $k => $v)
}
これじゃだめなん?
if($_SERVER["REQUEST_METHOD"=="POST"){
foreach($_POST as $k => $v)
}
これなら通るのかな?
0474nobodyさん
2008/06/12(木) 19:35:58ID:???それ答えになってないと思うぞw
>>450
多分ないと思う
そもそも全く同じフォームをエラーとかで戻すとき以外に
そんな事する必要あるのってあんまりないんじゃ?
0475nobodyさん
2008/06/12(木) 19:54:41ID:???デフォルト値の引数あるでしょ。
俺はめんどいから普通に書くけど。
0476nobodyさん
2008/06/12(木) 21:26:36ID:/br5Qw5C0477nobodyさん
2008/06/12(木) 21:30:12ID:???0478nobodyさん
2008/06/12(木) 22:29:47ID:???クエリの結果を全部変数で受け取ってから、プログラム内でページング処理する?
それとも、SQLのLIMIT使って、ページ移動毎にクエリ飛ばす?
ケースバイケースなのは分かってるけど、
自分のプログラムがどっちのケースに向いてるのか
判断の基準が分からない。
検索結果数で目安とかってあるんですかね?
0479nobodyさん
2008/06/12(木) 22:36:09ID:???0480nobodyさん
2008/06/13(金) 00:15:22ID:???それだと、PHP4の案件はいってきちゃったときとか、結局面倒くさいんじゃないの。
最近はそんな案件ないのかな?
>>478
普通に後者でしょ。
配列とかやたらメモリ食うし。
0482nobodyさん
2008/06/13(金) 00:48:04ID:iGfhCZYk動作的にはsession_regenerate_idと同じだと思うのですが、
今回の場合、セッションIDを自分で指定したいのです。
session_id()で指定する場合は、session_start()の前に指定しなければならないので、
「読み込んだ後の変更」にはなりません。
実際、読み込んだ後にsession_idで指定しても、
発行されるクッキーは旧IDが入っています。
いい方法があれば教えてください。
0483nobodyさん
2008/06/13(金) 01:30:58ID:VBSX1FXWHTTPのBODY部分のサイズを取得する方法ってありますか?
バージョンは、php5です。宣しくお願いします。
0484nobodyさん
2008/06/13(金) 01:55:11ID:???面白そうだからやってみた。
<?php
require_once('./settings.php');
session_start();
print_r($_SESSION);
if(isset($_SESSION['hoge'])){
$old = $_SESSION['hoge'];
}else{
$old = 'atai';
}
session_destroy();
$a = rand();
session_id($a);
session_start();
$_SESSION['hoge'] = $old.'_atai';
?>
<a href="./session.php">hoge</a>
こんな感じでどう?
0485nobodyさん
2008/06/13(金) 01:59:37ID:???2.セッションの中身を変数に書き出し
3.とりあえずセッションの中身を破棄
4.session_idで自分で値指定(例では面倒なのでrandしてみた)
5.session_start
6.値の格納
requireしてるsettings.phpは、ini_set('session.use_trans_sid', 1)して、GETクエリにセッション渡して動作みてるのに使っただけ。
一応動いてるように見えるけど、どうでしょうね。
0486nobodyさん
2008/06/13(金) 02:06:41ID:???POSTメソッドで送られてきたHTTPのBODYって、$_POST変数に格納された値のこと?
だったら、$_POSTに格納されてる値をstrlenとればバイト数でるんじゃない?
0488nobodyさん
2008/06/13(金) 02:13:10ID:???■ このスレッドは過去ログ倉庫に格納されています