トップページ⇒php
1001コメント330KB

くだすれPHP(超初心者用)3

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/10/25(木) 16:04:31ID:???
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。

PHP Home Page
http://www.php.net/
http://jp.php.net/

---前スレのテンプレここまで---

前スレ: くだすれPHP(超初心者用)2
http://pc11.2ch.net/test/read.cgi/php/1164617202/

適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 57
http://pc11.2ch.net/test/read.cgi/php/1193062236/
△▲ WebProg 初心者の質問 Part16 ▼▽
http://pc11.2ch.net/test/read.cgi/php/1187729623/

完走したら、雑談スレで待機でどうでしょう
【総合】 Webprog板質問雑談スレッド 1
http://pc11.2ch.net/test/read.cgi/php/1131016915/
0652名無しさん@アイコンいっぱい。2008/04/12(土) 19:25:23ID:QH24pWr1
アフィリエイターはなぜ3ヶ月でやめるのか?
http://kakitarou.com/url/files/accel.html
06536502008/04/12(土) 19:47:17ID:???
>>651
やってみましたがmb_send_mailの前に
mb_language("Japanese");を入れているのですが、mb_languageですでにコケてます・・・
0654nobodyさん2008/04/13(日) 08:42:00ID:???
mbstringが入ってないってこと?
それならmailで、日本語は自分でエンコードする。
0655nobodyさん2008/04/14(月) 18:50:19ID:zmu1J1y2
画像掲示板スクリプトを改造していて、PHPマニュアル等を調べてもズバリな回答にたどり
つけなかったため質問させてください (使っている PHPのバージョンは 5.2.5 です)

画像ファイルのデータサイズを取得、3桁区切りさせたくて以下のように書いて成功しました

掲示板PHPスクリプト内で ― (α)
$sizeorg = filesize($img)
$size = number_format($sizeorg)

HTMLテンプレート側に
{$size}

ですが、(α)の書き方をもう少しスマートに、雰囲気的には
$size = number_format(filesize($img))
のようにまとめたく、参考になりそうな情報を教えていただければありがたいのですが
どうぞよろしくお願いいたします
0656nobodyさん2008/04/14(月) 19:44:26ID:???
$size = number_format(filesize($img)) でいいんじゃ?
0657nobodyさん2008/04/14(月) 19:45:30ID:???
テンプレートってSmarty?

俺の場合number_formatを修飾子にしちゃってる(結構常識?)
$smarty->register_modifier("number_format","number_format");

で
{$sizeorg|number_format}
が俺的にはスマート
表示の問題をテンプレートで完結できるからね
0658nobodyさん2008/04/14(月) 19:46:42ID:???
修飾子にしなくても普通にPHP関数として呼び出せばいいんじゃ?
06596552008/04/14(月) 22:17:10ID:xlgR9yha
>>656
そのようにやってみたのですがエラーを吐いてしまいまして先の質問のように書いたのですが、
もう一度試しましたらエラーなく出力させることができました
# mistipo でもしていたのでしょうか…orz

>>657
自分の場合のテンプレートは画像掲示板のために用意されている HTML になります
何はともあれ、教えていただいた方法も面白そうですので勉強のため試してみたいと思います

>>658の方も含めて早々にご回答いただきまして、みなさんありがとうございました!
06606552008/04/14(月) 22:19:17ID:???
あぁ…
×mistipo ってなんなんだ…
○typo : タイプミス

最後まで失礼しました…○...| ̄|_
0661nobodyさん2008/04/18(金) 14:50:28ID:???
pear が古いのでUPしようとしたが・・・

pear upgrade -f -o http://pear.php.net/get/PEAR-1.3.6.tgz
downloading PEAR-1.3.6.tgz ...
Starting to download PEAR-1.3.6.tgz (106,880 bytes)
.........done: 106,880 bytes
HTTP error, got response: HTTP/1.1 410 Gone
Didn't receive 200 OK from remote server. (HTTP/1.1 410 Gone)

なぜ??変なレスポンスヘッダかえってくる??
0662nobodyさん2008/04/18(金) 14:55:40ID:???
あー 本家みてなかった・・・

本家どおりの手順でいけますた・・
pear upgrade --force http://pear.php.net/get/Archive_Tar http://pear.php.net/get/XML_Parser http://pear.php.net/get/Console_Getopt-1.2.2
pear upgrade --force http://pear.php.net/get/PEAR-1.3.3 (_IF_ your existing version is older than 1.3.3)
pear upgrade --force http://pear.php.net/get/PEAR-1.4.3.tar
pear upgrade PEAR
0663nobodyさん2008/04/19(土) 10:31:27ID:???
セッション変数ってクライアント側の環境やブラウザに依存するのでしょうか?
0664nobodyさん2008/04/19(土) 10:38:34ID:???
しませんよ
0665nobodyさん2008/04/19(土) 17:43:29ID:???
XSLを扱いたいのですが、
Fatal error: Class 'XSLTProcessor' not found in 場所
と出力されてしまいます。(クラスが見つからないということですよね。

これはどう足掻いてもXSLは使えないということなのでしょうか。
もし解決策があれば教えてください。

PHPのバージョンは5.2.3、phpinfo()のConfigure Commandの中で「xsl」を含むものは、
'--with-xslt-sablot'と'--enable-xslt'です。
それ以外にxslを含むところはありませんでした。

よろしくお願いします。
0666nobodyさん2008/04/19(土) 19:36:06ID:???
http://jp.php.net/manual/ja/xsl.installation.php
>PHP 5には、デフォルトでXSLエクステンションが含まれており、 configureに引数--with-xsl[=DIR] を追加することにより有効にすることができます。
>DIR は libxslt をインストールしたディレクトリです。
?
06676652008/04/19(土) 20:22:57ID:???
>>666
ありがとうございます、それについて詳しく調べていたら、
「configureに引数--with-xsl[=DIR] を追加すること」
は管理者でないとできないようなことが分かったので、メールしてみることにします。

ありがとうございました。
0668nobodyさん2008/04/20(日) 00:58:45ID:eoYRqpAs
http://pc11.2ch.net/test/read.cgi/hp/1205922529/198
より移動してきました(向こうでの質問は打ちきっています)。

[やりたいこと]
UTF-8のローマ数字「�D」をeucJP-winに変換したい。

[やったこと]
mb_convert_encodingを使い、EUC-JPのエンコードにてHTMLタグと一緒にprintする、具体的には:
print "<td>".htmlspecialchars(mb_convert_encoding("�D", "eucJP-win", "UTF-8") )."</td>";
を行う

[現状]
該当部分の出力が「場・/td>」となり、意図した表示になりません。

[その他]
http://pc11.2ch.net/test/read.cgi/hp/1205922529/197
によれば、

>EUCでの�Dは0xFCF5。
>が、
>mb_convert_encoding("�D", "eucJP-win", "UTF-8");
>を通すと0xF3F7が返ってくる。

ということで、このままのやり方ではでは埓が開きそうもありません。
なにかいい方法はありますでしょうか。
0669nobodyさん2008/04/20(日) 02:34:41ID:???
やりたいことできてるやん!

一部だけ文字コードを変えるってことは変換したvは文字化けした状態で表示される。
文字化けした文字によっては次の文字の一部を一つの文字とみなされ、「場・/td>」みたいなことになる。

意図した表示って、どんな結果を求めているのかを具体的に書けって。
0670nobodyさん2008/04/20(日) 02:57:03ID:???
いとおかしい表示かな?
0671nobodyさん2008/04/20(日) 02:59:53ID:???
UTF-8 な '�D' を eucJP-win に mb_convert_encoding() して
print "<td>\xFC\xF5</td>" と等価な状態にしたいんだけど
そうならないのでどうしたもんですかね、という質問なんでしょう。

確かに 0xFCF5 にならんね。
0672nobodyさん2008/04/20(日) 11:24:19ID:???
>>671
いや、そんな質問じゃないでしょう。
そんな表示を期待してるとしたらちょっと頭おかしいんじゃないですか?
文字化けって言葉を聞いたことくらいあるでしょうし。
06731872008/04/20(日) 11:41:36ID:aetxNfgk
>669
「�D」と表示したいのに「場・/td>」となる、ということです。

>671
そうなんです。あれから再びネットでも調べているんですが、
どうにもわかりません。

>672
すみませんが、お返事の内容がよく分かりません。
06741872008/04/20(日) 12:01:37ID:???
187です。
先ほど、こちらに移動する前のスレッドに、移動後に書き込まれていた方法を
試したところ、意図した結果で表示することができました。
(具体的には、PHP側でeucJP-winに変換せず、UTF-8のままレスポンスし、
 デコードはブラウザーに任せる)

なので、今回の質問は、これにて終了させていただきます。
お答えいただいた皆様、ありがとうございました。
0675nobodyさん2008/04/20(日) 12:10:35ID:nhn/o6zf
SQLite+PHPに関する質問です。
以下のようなスクリプトを作り、dbAccessでSQLiteと接続し、
dbCloseで切断するようにしたのですが、「sqlite_close() expects parameter 1 to be resource, n・・・」
というエラーがでてうまく切断できません。
どのような原因かわかりますでしょうか?
dbAccess内にsqlite_close()を入れた場合はエラーは吐きませんでした。

function dbAccess() {
$con = sqlite_open("DB/database");
}
function dbClose() {
global $con;
sqlite_close($con);
}
0676nobodyさん2008/04/20(日) 12:28:21ID:???
function dbAccess() {
global $con;
$con = sqlite_open("DB/database");
}
0677nobodyさん2008/04/20(日) 12:29:03ID:???
>>675
どのような原因って、エラーくらいちゃんと読もうな。

あと検索ってことも知ってるか?
そのエラー文をそのままググったらええのに。
0678nobodyさん2008/04/20(日) 12:37:14ID:???
>>677
検索はしましたがそれでも理解できなかったもので。すみません。
0679nobodyさん2008/04/20(日) 12:39:54ID:???
>>676
dbAccessとdbCloseの両方でglobal指定をしなければいけなかったのですね。
ありがとうございました。
0680nobodyさん2008/04/20(日) 13:03:57ID:sof1Taef
文章の中から正規表現を使って文字列を置換したいんですが、
あてはまるものすべてを置換するんじゃなく、一番初めにマッチしたものだけを置換したいんです。
どういう関数を使えばいいのでしょうか?
0681nobodyさん2008/04/20(日) 13:10:28ID:???
http://jp.php.net/manual/ja/function.preg-replace.php
limitに1を渡す。
0682nobodyさん2008/04/20(日) 13:11:42ID:???
>>681
ありがとうございました!
0683nobodyさん2008/04/20(日) 14:30:32ID:???
>>672
それぞれの文字コード中に存在しない文字に変換しようというなら妙な話だけど、
�Dなどの小文字のローマ数字は、EUC(JIS X 0213)でも存在している。
nkfやブラウザでは問題無く相互変換出来るしね。
それらを前提として、phpでは変換出来ないの?というのが質問の主旨だろ。
回答としては、現状はmbstringでは未対応のようなので、
手動でやるかnkfなどを使って変換。

文字化け=当然発生するものだから仕方無いと思考停止するのは良くないね。
0684nobodyさん2008/04/20(日) 14:40:03ID:???
>>683
文字化けについてよくわかってないのも良くないね
06856712008/04/20(日) 17:12:35ID:???
質問者さんの悩み事は「変換しない」で解決したようですが。

<?php
// ソースは UTF-8 で記述
header('Content-Type: text/plain; charset=EUC-JP');
echo "<td>\xFC\xF5</td>\n";
echo '<td>' . mb_convert_encoding('�D', 'eucJP-win', 'UTF-8') . "</td>\n";
?>

同じ表示が2行続くことを期待するのは別におかしくないと思いますよ。
0686nobodyさん2008/04/20(日) 19:45:50ID:QNOTdt2p
age
06876632008/04/21(月) 10:29:11ID:???
>>664
ありがとうございます。
最近、PHPを学習して会社のサイトをPHP化しているのですが、気が付くと
セッション変数に頼りすぎてて心配になってました。
0688nobodyさん2008/04/21(月) 23:07:39ID:e+YqWj3Y
win9x、php5、apache2です。
phpに、Cの同じファイルからしか呼び出せなくなる
static関数の機能はあるでしょうか。
あるなら、どのように記述したらいいのでしょうか。
0689nobodyさん2008/04/21(月) 23:19:09ID:???
ないよ。
クラスのメソッドってことならあるけど、関数はグローバルになってしまう。
関数内で制御したらそれっぽくできなくもない。
0690nobodyさん2008/04/22(火) 00:15:18ID:1qEh3co+
セッションをGETじゃなくて、POSTできます?
クッキーなしで、アドレス部分に表示もしないで
セッション回したいのです。
0691nobodyさん2008/04/22(火) 03:31:03ID:???
GETと同じようにやれば可
06926882008/04/22(火) 10:12:20ID:???
>>689
わかりました。ありがとうございました。
0693nobodyさん2008/04/23(水) 01:27:04ID:???
こちらで質問していいのかどうかわかりませんが、PHPのオープンソースで管理画面が携帯対応のblogってありますか?
0694nobodyさん2008/04/23(水) 05:50:16ID:???
$com = auto_link($com);を
ttp://が含まれた場合オートリンクする形に変えたいのですが
どのようにすればいいでしょうか?
0695nobodyさん2008/04/23(水) 07:10:56ID:???
auto_link関数なんて知らん
0696nobodyさん2008/04/23(水) 09:11:55ID:???
$proto = ereg_replace("(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)","<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",$proto);

すいません、その定義関数の中身はこちらです。
0697nobodyさん2008/04/23(水) 09:48:03ID:???
https?
↓
h?ttps?
0698nobodyさん2008/04/23(水) 09:49:48ID:???
厚かましいお願いなのですがその意味を教えていただけないでしょうか?
検索してもいまいち核心がでてこないといいますか・・・・・・・
これphpのコマンドですよね?
0699nobodyさん2008/04/23(水) 10:00:50ID:???
$proto = ereg_replace("(h?ttps?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)","<a href=\"h\\1\\2\" target=\"_blank\">h\\1\\2</a>",$proto);
教えていただいたやり方とh付け足す方法でやりたい事は出来ております。
0700nobodyさん2008/04/23(水) 10:57:40ID:???
php特有じゃない
「正規表現」で調べてみ
0701nobodyさん2008/04/23(水) 13:20:17ID:???
ttp → http になって喜ぶのはいいけど

http → hhttp
ftp → hftp
news → 略

これが「やりたい事」なのか冷静に考えてみよう。
0702nobodyさん2008/04/23(水) 14:27:12ID:???
>>700
ありがとうございます、調べてみます。

>>701
そうだった・・・・全種類にh付くんですよねこのままじゃ。
この形式による動作の分類は正規表現を学べは問題なくできることなんでしょうか?
0703nobodyさん2008/04/23(水) 14:44:21ID:???
(h?ttps?|ftp|news)→(h?ttps?|)

もしかしてこれでおけでしょうか?
他のリンクをしないとすると。
0704nobodyさん2008/04/23(水) 15:02:27ID:???
ftp も news も gopher も archie もリンクなしでよければ
(h?ttps?|ftp|news) → h?(ttps?) // h? をカッコから出す
にすればいいと思うよ。

PHP や正規表現と無関係な話になるけど、ttp でアドレスを貼った人は
勝手に http で貼ったのと同じ結果に書き換えられたらどう思うんだろうね。
0705nobodyさん2008/04/23(水) 15:03:56ID:???
h1文字をつけるケースは1通りなんだから、
URLとして有効だったらあとは ttp:// だけで直接比較すればいいだろう
0706nobodyさん2008/04/23(水) 15:18:54ID:???
>>704 >>705
やはりそうでしたか、本当に助かりました。
うちの掲示板は広告に対する禁止ワードの効果がほとんどなかったので
httpを禁止ワードにしてリンクはttpで書き込んでもらうようにしたら1件も広告つかなくなりました。
なので今まで基本コピペで飛んで貰うような状況だったのですが
今回自動リンク出来たら訪問者も楽だろうと言う事で質問してみました。

訪問者がリンク張りたくないものに関してはまた規約に赤で方法を明記したいと思います。
0707nobodyさん2008/04/23(水) 17:35:33ID:???
正規表現で折り畳むのと、ベタで(http|https|ttp|ftp|news)
と並べるのとどっちがいいんだろ。
0708nobodyさん2008/04/23(水) 19:40:21ID:???
|で並べる時点で正規表現じゃないかと・・・
ベタというならswitch($var) case 'http':とか。
0709nobodyさん2008/04/24(木) 23:09:38ID:???
<a href=http://<;? $ip=gethostbynamel("google.com"); print_r($ip); ?>><? $ip=gethostbynamel("google.com"); print_r($ip); ?></a>
これをforeeachにするにはどうすればいいんでしょうか。。。
0710nobodyさん2008/04/25(金) 00:03:45ID:???
は?何言ってんだお前
0711nobodyさん2008/04/25(金) 08:42:31ID:???
こういうことか?

$array_address=(
'google.com',
'yahoo.com'
);
foreach($array_address as $address){
$ip=gethostbynamel($address);
echo "<a href=http://{$ip}>{$ip}</a>";
}
0712nobodyさん2008/04/25(金) 08:56:07ID:???
配列使わずforeeeeeachとはこれいかに
0713nobodyさん2008/04/25(金) 10:37:24ID:???
>>711
こういうことじゃね?

$ip = gethostbynamel($address);
$string = '<a href="http://'. $ip .'">'. $ip .'</a>';
$chars = preg_split('//', $string, -1, PREG_SPLIT_NO_EMPTY);
foreach($chars as $char) {
    $result[] = $char;
}
echo implode('', $result);
0714nobodyさん2008/04/25(金) 12:02:35ID:???
switch文内にif条件式を入れられるでしょうか?
0715nobodyさん2008/04/25(金) 12:11:17ID:???
可能だよ
0716nobodyさん2008/04/25(金) 12:15:21ID:???
>>714
ttp://blog.zuzara.com/2006/06/14/85/
0717nobodyさん2008/04/25(金) 12:18:38ID:???
>>715-716
ありがとうございます!
0718nobodyさん2008/04/25(金) 12:29:05ID:???
質問です
$time=10:00;

この$timeを午前か午後か(am,pm)判別する関数はありますでしょうか?
0719nobodyさん2008/04/25(金) 12:37:19ID:???
>>718
その$timeは午後になると、$time=22:00;となるのかい?

0720nobodyさん2008/04/25(金) 12:38:17ID:???
そうです
0721nobodyさん2008/04/25(金) 12:46:38ID:???
>>718
<?php
$time = '10:00';

echo ampm($time);

function ampm($ntime){
if($ntime >= '12:00'){
return 'PM';
}else{
return 'AM';
}
}
?>
0722nobodyさん2008/04/25(金) 13:32:14ID:???
>>721
ありがとうございます!
この$ntimeは文字列でしょうか?整数でしょうか?
0723nobodyさん2008/04/25(金) 14:10:28ID:???
>>722
'12:00'とコロンが含まれている時点で、整数ではありえないよね。
0724nobodyさん2008/04/25(金) 14:41:01ID:???
自作関数なしなら
echo date('A', strtotime('10:00'));
0725nobodyさん2008/04/26(土) 00:22:55ID:???
警告、エラー表示レベルを上げる方法はないでしょうか。

defineしていない定数が使われた場合、
配列の値が入っていないインデックスを参照した場合に、
教えてくれるようにしたいです。

ググってerror_reportingはE_ALLのみにしたんですが、
それではダメでした。
0726nobodyさん2008/04/26(土) 03:39:59ID:???
E_ALL | E_STRICT
0727nobodyさん2008/04/26(土) 14:02:37ID:???
>>712
ttp://search.net-newbie.com/php/function.gethostbynamel.html
>array gethostbynamel ( string hostname )
>hostnameで指定したインターネットホストを 検索して得られた IP アドレスのリストを返します。 もし hostname が解決できなかった場合は FALSE を返します。

このl(ist)ってのは配列ではないんですかね。。

>>710
>>1
自分でもよくわからないんです^^;

>>711
ありがとうございます!
なるほどforeachはこう使うんですね!

>>713
ありがとうございます!
preg
implode
がわからないので調べてきます!
0728nobodyさん2008/04/26(土) 14:36:37ID:???
l(ist)って何だよ(list)すらねーよボケ
ここは質問スレだが分からないことを開き直る勘違い野郎ならお断りだ。
0729nobodyさん2008/04/26(土) 16:51:09ID:???
>>726
できました。ありがとうございます。
0730nobodyさん2008/04/26(土) 17:09:26ID:???
>>727
> string gethostbyname ( string hostname )
> array gethostbynamel ( string hostname )

関数名の l は list の略だから戻ってくるのは配列っすよね、じゃなくて
array (または FALSE) を返しますよと書かれてるから、戻り値が配列。

こんな感じにしたいのかな。

<?php
$hosts = array('yahoo.com', 'google.com', 'example.com');
echo "<dl>\n";
foreach ($hosts as $host) {
  $ip_list = gethostbynamel($host);
  echo "<dt>$host</dt>\n";
  if ($ip_list) {
    foreach ($ip_list as $ip) {
      echo "<dd><a href=\"http://$ip/\">$ip</a></dd>\n";
    }
  } else {
    echo "<dd>unresolved.</dd>\n";
  }
}
echo "</dl>\n";
?>
0731nobodyさん2008/04/26(土) 17:35:07ID:???
>>728
すみません><

>>730
ああようやく理解することができました><
どうもありがとうございます。
foreachで配列の中身をすべてぶちまける
ということがやりたかったんです。
$ip0 = $ip_list[0];
$ip1 = $ip_list[1];
みたいなことなんですね、asって。
お世話になりました><
0732nobodyさん2008/04/26(土) 18:19:33ID:???
>>731
純粋な質問なんだが,マニュアルのforeachのページ見ないのは何故だったの?存在しらなかった?難しくて理解できなかった?
0733nobodyさん2008/04/26(土) 18:47:40ID:???
返ってきた中身を知りたいだけなら、print_rとかvar_dumpとか
0734nobodyさん2008/04/27(日) 05:14:11ID:???
>>721
これで大小判定できるんだな
PHPスゴス


と思ったら:以下が切り捨てられてるだけか
PHPコワス
0735nobodyさん2008/04/27(日) 05:40:25ID:???
そんくらい時と場合によって使い分けろ
0736nobodyさん2008/04/27(日) 06:13:37ID:???
>>734
$time = '9:00';
とかで試せばわかると思うけど何も切り捨てられてないよ。
というか、文字列。
0737nobodyさん2008/04/27(日) 19:33:14ID:???
カウンタで質問なのですが
http://loglog.jp/~php/tt/tt4.php
のサイトに書かれている
>次に書き込むのですが、fgetsで読み込んだ時にポインタが動いてファイルの最後に行っているので、ポインタを先頭に引き戻してから、書き込みます。
>ポインタを戻すのはfseek() 書き込みはfputs()です。追記:rewind($fp)の方がいいかも...
>
>fseek($fp, 0);
>fputs($fp, $count);

のポインタを先頭に戻すという意味がわかりません。
ためしに削ってみると、カウンターが凄い勢いで増えていくので重要な機能なのは分かるのですが・・・
0738nobodyさん2008/04/27(日) 21:18:36ID:???
テキストエディタで言うと、キャレットをファイルの先頭に
0739nobodyさん2008/04/27(日) 21:19:26ID:???
開いたファイルからデータを操作するポイントのこと。
レコードの針とかCDの走査点みたいのを想像すればいい。

凄い勢いで増えていくってのは、1→12→123→1234みたいな感じ?カオスだなw
0740nobodyさん2008/04/27(日) 22:15:43ID:???
ファイルまるごと読み込んで、足して上書きして、終わりって訳ではないんですね
ポインタですか
勉強になりました。ありがとうございました
>>739
そうなんです。
カオスです
0741nobodyさん2008/04/28(月) 05:14:49ID:???
1→12→1213→12131214→....だぜきっと
増え方見てりゃなんとなく分かりそうなもんだけどな
0742nobodyさん2008/04/28(月) 10:28:05ID:???
>>725
配列の値が入っていないインデクスを参照するのって違反なんですか?
0743nobodyさん2008/04/28(月) 16:19:13ID:???
>>742
致命的ではないが好ましくはない
0744nobodyさん2008/04/28(月) 16:46:43ID:???
そうなんですか。

「ID、値段」の並んだデータファイルから

$ar[$id] = $price;

でどんどん取り込んでいって、

if ($ar[$data] == "") {
 echo "$dataは存在しません。\n";
 どうのこうの
}

って常用してる… 
0745nobodyさん2008/04/28(月) 17:04:27ID:???
質問です。
csvファイルの5行目から20行目までを取得するにはどうすればよいのでしょうか?

$test = fopen("hoge.csv","r");
for($i=5;$i<20;$i++){
$row = $test[$i];
}

この方法ではうまくいかないです・・・
0746nobodyさん2008/04/28(月) 17:20:40ID:???
たとえファイルハンドルが配列として扱えるとしても、それでは最終行しか
残らないのでは?
0747nobodyさん2008/04/28(月) 17:42:10ID:???
>>745
こっち使うとか。
http://www.php.net/manual/ja/function.file.php

fopen() は例で言えば $test とファイルを結びつけて、これから読み書きしたり
ファイルポインタを進めたり戻したりする操作を可能にする「準備」の担当さん。
0748nobodyさん2008/04/28(月) 17:56:15ID:???
>>746-747
ご返答ありがとうございます

$test = file("hoge.csv");
for($i=5;$i<20;$i++){
$row = $test[$i];
}
これではうまく行きませんでした
for文で行数を指定するやり方は間違っているのでしょうか?
0749nobodyさん2008/04/28(月) 18:04:09ID:???
>>748
>>746の意味をよく考えて、せめて
$row .= $test[$i];
にしてみるとか、もう少し考えてもいいと思うんですよ。
$row を各行=要素な配列として扱いたいのならまた別になるけど。
0750nobodyさん2008/04/30(水) 11:54:01ID:???
CSVファイルを更新しようとしてます。
フォームから入力された月が一致するものを"可能"から"予約済み"に
上書きするスクリプトです。

$file = fopen("test.csv","r");
$file_bak = fopen("test.csv","w");

while ($data = fgetcsv($file,1024,",")) {
if($data[0]==$mon){
$data[1]="予約済み";
$rowc = implode(",", $data);
fputs ($file_bak, $rowc . "\n");
}
}
fclose($file_bak);
fclose($file);

フォームから入力するとデータがまっさら(0バイト)になってしまいます。
0751nobodyさん2008/04/30(水) 11:59:58ID:???
そのコードのどこに、フォームから入力したという部分が入ってるの?
■ このスレッドは過去ログ倉庫に格納されています