くだすれPHP(超初心者用)5
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/11/22(土) 06:36:02ID:???もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。
PHP Home Page
http://www.php.net/
http://jp.php.net/
くだすれPHP(超初心者用)4
http://pc11.2ch.net/test/read.cgi/php/1213356756/
適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
0095nobodyさん
2008/12/05(金) 01:33:39ID:jMVHCYUr意図がわからんが、rangeとか?
0096nobodyさん
2008/12/05(金) 01:37:35ID:???どういう値を渡したいのだ?
0097nobodyさん
2008/12/05(金) 04:44:41ID:???とかでしょ?
0098nobodyさん
2008/12/05(金) 09:25:55ID:???0099nobodyさん
2008/12/05(金) 16:28:02ID:fefynmKZこういうファイルの途中から途中までの読み込みって出来ますか?
あるいは、やっぱり一行目から読んでいって、
目的のデータにくるまでは捨てていくしかないでしょうか?
0100nobodyさん
2008/12/05(金) 16:31:02ID:???例えばfileで配列に読み込んで
[14]〜[24]までを取り出せばいい
ファイルの中身が膨大でメモリの負担を考えるなら
また別の方法を考えるべきだが
0101nobodyさん
2008/12/05(金) 17:33:46ID:???テキストファイルのように1行の長さが不定なものには使えない。
0102nobodyさん
2008/12/05(金) 18:34:07ID:???再度開いたらログイン済になっているような機能を実装したいんですが、
参考になるサイトなど教えて貰えませんでしょうか?
クッキーを使うのかと思ったらGoogleはクッキーオフでも上記動作をしているようです。
こういう機能をなんと呼ぶのかも判らないので名前を教えて貰えるだけでも結構です。
よろしくお願いします。
0103nobodyさん
2008/12/05(金) 19:22:16ID:???うそつけw
Cookieオンにしろといわれたぞ
IPやホスト名を鯖側で記録しておいて
変化するまで有効にする手なんてのも考えられるが
一般的じゃないしセキュリティ的にも危険
0104101
2008/12/05(金) 19:38:49ID:???すいません、Firefoxでやったらエラーでました。
IEでクッキーを受信するときにダイアログを表示するように設定して、
僕のサイトで警告が出るのを確認してからGoogleにログオンしたんですけど
何故かオンになってたみたいです。
クッキー使うって事はユーザー名とか暗号化して記録すれば良いんですね。
ありがとうございました。
0105nobodyさん
2008/12/05(金) 19:53:32ID:???0106nobodyさん
2008/12/05(金) 20:20:33ID:???0107nobodyさん
2008/12/05(金) 21:13:25ID:???0108nobodyさん
2008/12/05(金) 21:45:22ID:jMVHCYUrセッションID持たせて有効期限。
0109nobodyさん
2008/12/05(金) 22:26:45ID:???クッキーを手動で削除すれば
強制ログアウトさせられるよ
0110nobodyさん
2008/12/06(土) 09:19:14ID:figaW1Vu携帯サイトのトップページで
ttp://hoge.com/
リンク@←(id=1)
リンクA←(id=2)
リンクB←(id=3)
リンクC←(id=4)
リンクD←(id=5)
と表示し、ttp://hoge.com/?id=1とパラメータをつけて飛んで来た場合
リンクA
リンクB
リンクC
リンクD
リンク@
と、そのidのリンクを一番下へ自動で並び替えるにはどう書いたら良いでしょうか?
よろしくお願いします。
0111nobodyさん
2008/12/06(土) 09:45:43ID:???$count= count($url);
for ($id=$_GET['id']; $id<$count; $id++){
if ($id >= $count) $id= 1;
$link.= $url[$id];
}
こんなイメージでできそう
0112nobodyさん
2008/12/06(土) 10:09:00ID:???uksort($url, "cmp");
print_r($url);
function cmp ($a, $b)
{
switch ($_GET['id']) {
case $a:
return 1;
case $b:
return -1;
default:
return $a - $b;
}
}
0113110
2008/12/06(土) 10:23:36ID:???今から出勤なので帰ってからやってみます。楽しみです
マジ感謝です。
0114nobodyさん
2008/12/06(土) 19:41:46ID:uHkDvuuYこういうのってphpではできない感じでしょうか?
具体的にやりたいことは、
ボタンが押される
→Javascriptの関数を呼び出し入力項目をチェック
→良ければ、次のページに渡すphpの変数をセット
→次のページに遷移
って感じです。
0115nobodyさん
2008/12/06(土) 19:44:30ID:yGRUMO6W0116nobodyさん
2008/12/06(土) 19:48:48ID:???あれ?
サーバサイドのphpではクライアントサイドのJavascriptみたいにonclickでの
関数呼び出しは出来ないってのは良いですよね?
Javascriptの関数の中でphpを記述するってことですか??
0117nobodyさん
2008/12/06(土) 20:44:44ID:???ちなみに
>具体的にやりたいことは、
>ボタンが押される
→Javascriptの関数を呼び出し入力項目をチェック
>→良ければ、次のページに渡すphpの変数をセット
>→次のページに遷移
これ読む限りではphpいらないと思うが?
0118nobodyさん
2008/12/06(土) 21:05:23ID:???なんか自分でもそうやったら出来ないだろうかとやってみたんですが、
エラーコンソールに invalid flag after regular expressionと出てうまくいかないんです。
具体的には以下のように書いていて、
チェックフラグがtrueならそのページで使ったデータを二次元配列から取り除いて、
残りを次のページに渡すデータとするみたいな感じです。
<script type="text/javascript">
function isAllChecked(){
//省略
if(!flag)return false;
<?
global $num,$data;
for($i=0;$i<$num;$i++)array_shift($data);
?>
return true;
}
</script>
//省略
<input type="submit" value="次へ" onclick="return isAllChecked()" />
0119nobodyさん
2008/12/06(土) 21:06:41ID:???0120nobodyさん
2008/12/06(土) 21:08:28ID:???書かれてるのは、onclickで変数をエンコードしてページを呼び出すだけだよな
もし、onclickでphpのコードを実行した結果をページに反映させたいなら
ajaxの仕組みを利用する。
xajaxってライブラリが実現してるのがその仕組みに近い。
シームレスに関数を呼び出す感じになるよ
0121110
2008/12/06(土) 22:06:53ID:???>>111 >>112試してみたのですがうまくできませんでした。
$url = array(
1 => "<a href=\"test1\">test1</a>",
2 => "<a href=\"test2\">test2</a>",
3 => "<a href=\"test3\">test3</a>",
4 => "<a href=\"test4\">test4</a>",
5 => "<a href=\"test5\">test5</a>",
);
if ($_GET['id'] == test1) {
$url1=$url[2];
$url2=$url[3];
$url3=$url[4];
$url4=$url[5];
$url5=$url[1];
} elseif ($_GET['id'] == test2) {
$url1=$url[1];
$url2=$url[3];
$url3=$url[4];
$url4=$url[5];
$url5=$url[2];
〜〜
以下elseifが数個ってな感じでやったのですがもうちょっとシンプルと言うか効率の良いやり方無いでしょうか?
0126nobodyさん
2008/12/07(日) 22:04:39ID:???0127nobodyさん
2008/12/08(月) 00:43:56ID:???0128nobodyさん
2008/12/08(月) 01:06:08ID:???日々拡張されたり廃止されてるから増減するし
マニュアルにのってないのもあるのでなんともいえないな
PEARは各種FWのを含めるとさらに増える
ユーザー定義関数も含めると天文学的な数値になる
(9割型コードがかぶってたりコードは違うが動作が同じのも含む)
実際によく使うのは100個もないので数なんてどうでもいいやね
0129nobodyさん
2008/12/08(月) 01:10:38ID:???全部おぼえようとしていたが、
やる前に質問してよかった。
0130nobodyさん
2008/12/08(月) 01:11:12ID:???「よく使う100個」の
リストは、どこかにある?
それから優先的に学習していきたい。
0131nobodyさん
2008/12/08(月) 01:13:49ID:???なんでPHPってカテゴリはないの?
0132nobodyさん
2008/12/08(月) 01:14:33ID:???0133nobodyさん
2008/12/08(月) 02:58:26ID:???0134nobodyさん
2008/12/08(月) 03:07:52ID:???やっているうちに覚えていくから心配しなくていいよ
とにかく本でもマニュアルでもいいから順序通りにやっていってみ
0135nobodyさん
2008/12/08(月) 03:13:30ID:???その作業が死ぬほどつまらんから
聞いているのです
「試験に出る英単語」って本知ってる?
あれは出現頻度順に並べたものなんです
0136nobodyさん
2008/12/08(月) 03:29:01ID:???0137nobodyさん
2008/12/08(月) 04:24:39ID:???0138nobodyさん
2008/12/08(月) 04:41:01ID:???似たようなリスト(別スレで見かけたのでコピペ)
ttp://www.1x1.jp/blog/2008/06/php_framework_function_count.html
しかし、英単語だって実用的に使って覚える方が楽だぞ
実用を伴わないで関数を勉強する方が余程ストイックな作業だと思うが
0139nobodyさん
2008/12/08(月) 08:32:40ID:???>>135じゃないけど
俺は暗記得意だから先に仕様書とかリファレンスに一通り目を通してから実戦のほうが合ってる
結局人それぞれじゃね?
0140nobodyさん
2008/12/08(月) 09:49:20ID:???あれは出現頻度順に並べたものなんです
試験対策ってことは、当然一通り順序どおりに英文法をマスターしたうえで読む本だよな。
英単語だけ覚えても文章の1つも作れないだろ。
プログラミングだって順序立てて学習するのを避けて関数を覚えようとしても意味がない。
0141nobodyさん
2008/12/08(月) 20:33:26ID:???0142nobodyさん
2008/12/08(月) 20:43:10ID:???何も作れないじゃん
0143nobodyさん
2008/12/08(月) 20:50:23ID:???0144nobodyさん
2008/12/08(月) 21:11:07ID:???こういう風に教えてくれよ
http://jp.youtube.com/watch?v=kzmHmYHy-P8
0145nobodyさん
2008/12/08(月) 21:14:57ID:???0146nobodyさん
2008/12/08(月) 21:18:11ID:???放置してやれ
0147nobodyさん
2008/12/09(火) 02:09:02ID:???<タグ>あうあう</タグ><タグ>あうあう</タグ>ゲロゲロ<タグ>あうあう</タグ>
みたいな文字列からタグの中身をタグも含めて配列に格納していきたいのですが、どうやったらいいのでしょうか。
0148nobodyさん
2008/12/09(火) 02:16:12ID:???0149nobodyさん
2008/12/09(火) 02:20:39ID:???正規表現で抜き出す
http://jp.php.net/manual/ja/function.preg-match-all.php
0150nobodyさん
2008/12/09(火) 02:42:47ID:???0151nobodyさん
2008/12/09(火) 02:50:19ID:???0153nobodyさん
2008/12/09(火) 04:53:11ID:???トップページと検索結果ページのレイアウトを全くの別物にしたい場合
GETに中身がなかったらトップページへ
中身があったら検索結果ページへとか言う風にif文でhtmlを丸ごと括って分岐させる感じでいいの?
なんかスマートじゃない気がするんだけど
0154nobodyさん
2008/12/09(火) 05:12:49ID:???検索単語を入れるように検索結果のページで促したり
単純にヒットしなかったと検索結果を出すのが普通
0155nobodyさん
2008/12/09(火) 13:03:23ID:???<form action="search.php">
0156nobodyさん
2008/12/09(火) 14:41:55ID:???できればエラーメッセージつけてかえすと親切だな。
0157nobodyさん
2008/12/09(火) 20:34:24ID:???普通に検索用のスクリプト作ればいいじゃない。
0158nobodyさん
2008/12/09(火) 22:03:51ID:???symfony本体無いと動かない?
上の質問が正解だとすると、レンタルサーバではほぼ使えないですよね?
symfony使えるサーバじゃないと。
0159nobodyさん
2008/12/09(火) 22:10:06ID:???フレームワークなんだからそれ通さないと動かないに決まってるだろ
PHPのフレームワークなんだからPHPで書かれてるだろ
PHPさえ使えればどの鯖でもつかえるんじゃね?
0160nobodyさん
2008/12/09(火) 22:56:48ID:???データベースに内に用事のある日付と人のIDを入れておくテーブルが有ったとします
(DATE, ID)
(11/29, K)
(12/5, F)
(12/7, F …みたいな感じ)
そこからSQL文で月を指定してまとめてデータを抜き出しておいて
画面テーブルのトップに日付と曜日の一覧を表示させておいて
人別に用事のある日付に×を書き込みたいのですけど
(5日と7日に用事があればF, , , , ,×, ,×, …みたいな感じ)
SQL文で範囲選択して取得したデータを保持しておいて
その中に条件にあったデータが有るかをチェックする事って出来ますか?
for文で画面テーブルを作成しながら$iの値を日付に合わせて増やしていき
SQL文で一度取得したデータの中に$i(日付)と同じものが有れば
×を記入さていこうかなと考えています
お分かりになるかた、もっといい方法を思いつく方
ご教授を願えたら有り難く思います
0161nobodyさん
2008/12/09(火) 23:00:33ID:???「ご教授願えますか」なら兎も角、不思議な日本語。
0162160
2008/12/09(火) 23:09:26ID:???早速ご指摘を頂き有り難う御座います
追加ですが配列を使用せずに記述をしたいと考えております
お分かりになる方、もっといい方法を思いつく方
ご教授願えますか
0163nobodyさん
2008/12/09(火) 23:15:35ID:???無理でないかと思います
大学で聞くのが一番早いと思うのでそちらをお勧めします
0164160
2008/12/09(火) 23:21:52ID:???度々のご指摘ありがとう御座います
正しくは教示の様ですね
>>160>>162に関しまして
お分かりになる方、もっといい方法を思いつく方
ご教示願えますか
0165nobodyさん
2008/12/10(水) 00:15:00ID:???SQLのクイズ出してるつもりならスレチだよ。
MySQLならgroup_concat(DATE) と group by IDを使って行を取得というのが楽
標準SQLで組もうとすると、ちょっとパズルチックになるからね。
他人が書いた答えは知ってるけど、オリジナルじゃないからググってみることをお勧めする。
個人的にはfor文で処理するより、rangeと配列、array_mapでサクッとテーブル書く方が好きだな。
ループはダサい。
でもあえて配列を使わないんなら、ORDER BY ID, DATEでクエリの結果セットを
ループしながらifとswitchでテーブル組めば普通にできる。
0166160
2008/12/10(水) 07:53:28ID:???ご返答有り難う御座います
現在インターン中なのですが
そこで課題として従業員のシフト表を作成しています
従業員テーブルから情報を引き出して
それを元に休日テーブルから情報を引き出して表を作成しようと考えています
当初は一度配列に入れてから配列一つひとつをfor文とif文で参照しようと考えていましたが
担当の方にそのアイデアを話してみた所
配列に入れなくても出来ると一蹴されて困っていました。
一度>>165様に頂いたワードを調べて参考にしたいと思います
また別の方法が有りましたら教えていただけると
有り難く思います
0167nobodyさん
2008/12/10(水) 07:54:29ID:???0168nobodyさん
2008/12/10(水) 08:13:18ID:???ちゃんと説明しない嫌な担当だな。
ところで、面白い方法(拡張しないなら冗長だけど)あるよ。
配列もforループも使わない。たぶんifも最小限になる。
RecursiveIteratorIteratorっていうのがあるから、
個人イテレーターを親に日付イテレーターを子に持つようなイテレーターを
定義して、PDOをマップする。日付イテレーターのnext()は次にSQLデータの
有無にかかわらず日付をインクリメントする。
フィルターイテレーターも同時に実装して月別フィルターとか年別フィルター
とか週別フィルターとかも実装する。
テーブルソースの作成部分はデコレーターでデータをラップして文字列化
するようなものにする。
すると、
$obj = new shiftTable(array('scope'=>'month', 'target' => 12));
echo $obj;
で表が自動出力されるようなものが作れる。
0169160
2008/12/10(水) 08:34:45ID:???グループ課題の担当している部分なのでグループ全体に
影響が出ないよう早く見当を付けたいと思い質問させていただきました
>>168
私の知識では拡張という言葉がどれ程の物をあらわしているのか分かりませんが
>>160は若干端折って記入しており、実際には×では無く
休日テーブルを書き換える為のチェックボタンが付いており
従業員が現在休みになっている日は初期画面で黒くチェックが入って表示され
画面テーブルの外部にsubmitボタンが付いています
担当の人の話では
休日テーブルから5と7という値を取得すれば配列に入れなくても
画面テーブルの5番目に表示させてから7まで空のセルをつくり
7番目でまた表示させることが出来ると言われました
それを解決しようと思い>>160の質問に至ったわけです
>>168様の方法も調べて参考にさせて頂きたいと思います
ご返答ありがとうございました
0170nobodyさん
2008/12/10(水) 08:48:49ID:???> 画面テーブルの5番目に表示させてから7まで空のセルをつくり
> 7番目でまた表示させることが出来ると言われました
なんというトーニャハーディング、できりゃいいんかい!って感じの考えだな。
SELECTで前回表示のレコードを取得しとくのか、forループで前回データを保存するのか
いずれにしても、表示ロジックをデータ処理に放りこむのか・・・すごいな。
そういうところでは、はいはいって言うこと聞いて逆らわない方がよさそうw
もし、フォーム要素なんかが絡むんなら>>168の方法で基本ロジックを作成して
デコレーターでラップするといいんだけど、習得には多少なりとも時間が
かかるかもしれないのでお勧めはしない。
0171nobodyさん
2008/12/10(水) 10:52:26ID:???<input type=”submit” name="取得する値” value=”送信” />
0172nobodyさん
2008/12/10(水) 11:00:06ID:???0173nobodyさん
2008/12/10(水) 11:01:37ID:???0175nobodyさん
2008/12/10(水) 11:29:34ID:???PDOでInsertをプリペアドステートメントで行うとき、値が空っぽの時、
NULLを挿入したいのですが、NULLじゃなく、''の空が挿入されます。
これってPDOのオプションで自動で''の時は、NULLを挿入することは出来ないのですか?
0176nobodyさん
2008/12/10(水) 11:34:32ID:???0177nobodyさん
2008/12/10(水) 12:04:52ID:???例えばこんな感じ
$id = 1;
$name = 'abc';
$tel = '03-3333-3333';
$email = '';
$sth = $dbm->prepare("INSERT INTO `test` (id, name, tel, email) VALUES (?, ?, ?, ?);");
$sth->execute(array($id, $name, $tel, $email));
この場合、$email が空になってるので、''でInsertされたと同じになって、
NULLが入りませんので、これをPDOのオプションでNULLに出来たらなと・・
0178nobodyさん
2008/12/10(水) 12:13:26ID:???0179nobodyさん
2008/12/10(水) 12:33:55ID:???にすれば、NULLが入るのは分かってるのですが、、それはめんどくさいですよね。。
0180nobodyさん
2008/12/10(水) 12:47:47ID:???もし空文字のときは必ずnullでいいならば、間に関数1つかませばいいべ。
0182nobodyさん
2008/12/10(水) 12:57:33ID:???かますことにします。
ありがとうございます。
0183nobodyさん
2008/12/10(水) 13:03:54ID:???もう一つ聞いてもいいですか?
PDOとMySQL5です。
PDOを使ってSELECTをした場合、クエリーキャッシュは使われてるのでしょうか?
(PDO::MYSQL_ATTR_USE_BUFFERED_QUERYは無効にしてあります)
0184nobodyさん
2008/12/10(水) 13:13:49ID:???0185nobodyさん
2008/12/10(水) 13:18:14ID:???>>184
PHPのネイティブ関数であれば、クエリーキャッシュは効いてるですが、PDOを使うとだめぽっい。。
PHP5.2.1にアップするしかないのかなぁ・・。
0186nobodyさん
2008/12/10(水) 14:41:30ID:???をしたいのですが、どうすれば出来るでしょうか?
PHP5.2を使ってます。詳しい方いらっしゃったらおしえてください。
0187nobodyさん
2008/12/10(水) 14:48:09ID:???PHP5.2.0ってだめなの?5.1.17ぐらいから使えるはずだけど。
まぁ、書いてるんだしそうなのかな・・・
0188nobodyさん
2008/12/10(水) 15:00:33ID:???PHP5.2.0のPDOだとクエリキャッシュが効いてないみたいですね。
PDO::MYSQL_ATTR_USE_BUFFERED_QUERYを有効にすると効きますが、副作用があって。。
0189nobodyさん
2008/12/10(水) 18:06:24ID:???0190nobodyさん
2008/12/10(水) 18:38:54ID:???なので、LIMIT 0,10 とか LIMIT {$offset}, {$limit}とやれば良いんですけど・・。
0191nobodyさん
2008/12/10(水) 19:00:30ID:???メールを受信した後、それをHTMLとして表示させたいんです。
エンコード状態のマルチパートなメール(ソース?)があるとして、
それをHTMLとして出力するライブラリみたいなのとかありますか?
問題は画像の部分だと思っています。(どう実現するかイメージも沸きません)
具体的な使い方は調べますので、あるかどうかと、
名前とかヒント教えてもらえるとありがたいです。
ちなみに、レンタルサーバ借りて(Web/Mail/php/DB)
iPhoneから使えるWEBメールシステムを自分の為に作ってます
0192nobodyさん
2008/12/10(水) 19:05:12ID:???メールサーバが立ってるなら、.forward等でphpプログラムに渡すと簡単。
他所のメールサーバーでも、POPやIMAP用の関数でアクセスすることも可能。
解釈部分はPEARが実績があると思う。
■ このスレッドは過去ログ倉庫に格納されています