こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPでの重複チェック

htmlから$data1~$data17までの項目をPHPで取得し
CSV出力、PDF表示、管理者へメール送信しております。

※質問内容が4000文字以内なので、
PDF出力、全角、半角チェック等は削除しております。


このプログラムに重複チェックを追加したいと考えています。
$data16の希望アカウントの重複チェックを行なうには
どのような方法があるのでしょうか?


どなたか、ご教示頂けないでしょうか?


以上、宜しくお願いいたします。


-----ここからプログラムの始まりです-----

<?php

//#環境設定################################
$errflg = 0;
$coment_length = 100; //最大コメント文字数
$ng_data = ""; //コメント禁止ワード(正規表現で記載可能)
$file_name = "./data/test_data.csv"; //出力CSVファイル名
date_default_timezone_set('Asia/Tokyo');
$subject = "TEST"; //件名
$to = "aaa@aaa.com"; //管理人メールアドレス(宛先)

mb_language("Japanese");
mb_internal_encoding ("SJIS");

//#########################################


//HTML内容出力
//echo "<html>";
//echo "<head>";
//echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">";
//echo "<title>TEST</title>";
//echo "</head>";
//echo "<body>";
//echo "<CENTER><FONT size=\"+2\"><B>TEST</B></FONT></CENTER><BR>";

//##############################################
// ■ 入力チェック
//##############################################



//##############################################
// ■ 投稿内容格納
//##############################################
if($_SERVER["REQUEST_METHOD"]=="POST"){
$data1 = $_POST['sen1'];
$data2 = $_POST['sen2'];
$data3 = $_POST['sen3'];
$data4 = $_POST['sen4'];
$data5 = $_POST['sen5'];
$data6 = $_POST['sen6'];
$data7 = $_POST['sen7'];
$data8 = $_POST['sen8'];
$data9 = $_POST['sen9'];
$data10 = $_POST['sen10'];
$data11 = $_POST['sen11'];
$data12 = $_POST['sen12'];
$data13 = $_POST['sen13'];
$data14 = $_POST['sen14'];
$data15 = $_POST['sen15'];
$data16 = $_POST['sen16'];
$data17 = $_POST['sen17'];
}else{
echo "申請に失敗しました。";
$errflg = "1";
}


//##############################################
// ■ 投稿者の環境状況取得
//##############################################

//(1)リンク元(投票ページ取得)
if( $_SERVER["HTTP_REFERER"] ){
$link = $_SERVER["HTTP_REFERER"];
} else{ //リンク元が取得出来ない
$link = "";
}

//(2)投票IPアドレス
$host = $_SERVER["REMOTE_ADDR"];

//(3)ブラウザ情報取得
$agent = $_SERVER["HTTP_USER_AGENT"];
//****************************

//#############################################
// ■アンケートファイル出力処理
//#############################################
if($errflg == 0){
//*評価情報****************************
$body .= "\"" . $data1 ."\"" .","; //名前(性)
$body .= "\"" . $data2 ."\"" .","; //名前(名)
$body .= "\"" . $data3 ."\"" .","; //名前(セイ)
$body .= "\"" . $data4 ."\"" .","; //名前(メイ)
$body .= "\"" . $data5 ."\"" .","; //性別
$body .= "\"" . $data6 ."\"" .","; //生年月日(年)
$body .= "\"" . $data7 ."\"" .","; //生年月日(月)
$body .= "\"" . $data8 ."\"" .","; //生年月日(日)
$body .= "\"" . $data9 ."\"" .","; //〒1
$body .= "\"" . $data10 ."\"" .","; //〒2
$body .= "\"" . $data11 ."\"" .","; //都道府県
$body .= "\"" . $data12 ."\"" .","; //市町村
$body .= "\"" . $data13 ."\"" .","; //町名番地等
$body .= "\"" . $data14 ."\"" .","; //電話番号
$body .= "\"" . $data15 ."\"" .","; //メールアドレス
$body .= "\"" . $data16 ."\"" .","; //希望アカウント
$body .= "\"" . $data17 ."\"" .","; //所属
//*投稿者情報****************************
$body .= date("Y/m/d") ."\"" ."\n"; //日付

//*ファイル出力****************************
$fhn = fopen($file_name,"a");
if ($fhn){
if (flock($fhn, LOCK_EX)){
if (fwrite($fhn, $body) === FALSE){
print("申請に失敗しました。");
}else{
//print("申請が完了いたしました。<br />");

require('/php/includes/fpdf/mbfpdf.php');

$pdf->Output();
}

flock($fhn, LOCK_UN);

if(mb_send_mail($to,$subject,$body)){
//echo "メール送信成功しました。";
}else{
//echo "メール送信失敗しました。";
}
}else{
print("申請に失敗しました。");
}
}

}



//echo "</body>";
//echo "</html>";




?>

投稿日時 - 2012-01-11 14:13:28

QNo.7238217

すぐに回答ほしいです

質問者が選んだベストアンサー

DBは使っていないのでしょうか。
最初は若干面倒かもしれませんが、MySQLとかに一度保存しておけば
データ管理自体もできますし、こういった要件もSQLで簡単に解決しますよ。

投稿日時 - 2012-01-11 17:59:29

補足

Mysqlで解決しました。
ありがとうございました。

投稿日時 - 2012-01-20 11:01:19

お礼

DBの環境がなく、CSVに出力しています.....

投稿日時 - 2012-01-12 09:28:47

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

CSV(データ)ファイルを読み込んでチェックするしかないですよね。ファイルベースであれば(fgetsで読んでstr_getcsvするか、最初からfgetcsvで読み込むかは別にして)全件チェックするしかないでしょう。

もちろん「希望アカウント」をファイル名にしてtouchで作成しておけば、ファイルの有無でもチェックは出来ます(当然、アカウント名の妥当性チェックは行うという前提です)。

投稿日時 - 2012-01-11 15:13:29

お礼

fgets、str_getcsvを調べてみたのですが、使い方がわかりませんでした。参考になるURL、もしくは例があれば教えて頂けないでしょうか?

投稿日時 - 2012-01-11 16:42:43

あなたにオススメの質問