初心者です。

PHPでCSVファイルを読み込んで表示させようとしています。フォームに件数を入力して、その件数のデータを表示させたいのですが、データ数よりも多い数値を指定するとエラーになるのを回避するために、行数を予め取得したいのですが、やり方がわかりません。教えていただけないでしょうか?
また、フォームに入力した文字が数字かどうかを判断するにはどうしたらいいのでしょうか?

初歩的な質問で申し訳ありませんが、よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/10/14 13:59:27
  • 終了:2006/10/14 22:18:12

回答(2件)

id:ito-yu No.1

ito-yu回答回数323ベストアンサー獲得回数142006/10/14 14:20:41

ポイント35pt

数字かどうかチェックしてエラーにしたい場合は、$num に入っているとして

if(!is_int($num)){
  //エラー処理
}

行数をあらかじめ取得するよりも、CSVが終端に達したらループを抜ける、みたいな方が良いと思います。

for($i = 0; $i < $num; $i ++){
  if(feof($fp)){
    break;
  }
  $row = fgetcsv($fp, 4096);
  //処理
}

http://jp.php.net/feof

id:inkyo

ありがとうございます!

forを使って作っていたので、早速試して成功しました。助かりました。

2006/10/14 22:13:15
id:vector_xenon No.2

vector回答回数113ベストアンサー獲得回数42006/10/14 14:51:22

ポイント35pt

行数をあらかじめ取得するには

$aFileData = file(ファイルパス);

$iRowCount = count($aFileData);

で、取得できます。


数字かどうかを判別するには

小数点も数字とするのであれば、

is_numeric()を使います。

http://q.hatena.ne.jp/answer


マイナスなどの符号は文字としてみるのであれば

if (preg_match('/^[0-9]+$/', 入力された文字) === 0) {

// 数字だけ

} else {

// 数字以外の文字がある

}

とすればよいかと

http://au2.php.net/manual/ja/function.preg-match.php

id:inkyo

ありがとうございます!

○○以下を入力してください、といったエラーメッセージを出したかったので、早速試して成功しました。

preg_match も使ってみたいと思います。

助かりました。

2006/10/14 22:15:11

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません