PHPで簡単なフォームを作りました。
1入力項目はFirst name, Middle name, Last name, Phoneの4つです。 2First nameに数字123が入力されたら、” 123 is not a valid name.”と出力したい。
本当なら、Name(String項目)に123と数字を入力したら 「"123 is not a valid name"」と出るはず。
###該当のソースコード
---------------checkblank_2.php ----------------------- <?php /* Program name: checkBlankOnly_2.php * Description: Program displays the blank form and checks * all the form fields for blank fields. */ foreach($_POST as $field => $value) echo $value; echo $field; echo $name_patt; if(!empty($value)) echo $value; echo $field; echo $name_patt; //name $name_patt = "/^[A-Za-z' -]{1,50}$/"; $phone_patt = "/^[0-9)(xX -]{7,20}$/"; $radio_patt = "/(new|changed)/"; if(preg_match("/name/i",$field)) if(!preg_match($name_patt,$value)) echo $name_patt; $error_array[] = "$value is not a valid name"; //phone if(preg_match("/phone/i",$field)) if(!preg_match($phone_patt,$value)) $error_array[] = "$value is not a valid phone number"; // endif phone format check if(preg_match("/status/i",$field)) if(!preg_match($radio_patt,$value)) $error_array[] = "$value is not a valid status"; $clean_data[$field] = strip_tags(trim($value)); if(@sizeof($error_array) > 0) { $message = "<p style='color: red; margin-bottom: 0; font-weight: bold'> You didn't fill in one or more required fields. You must enter: <ul style='color: red; margin-top: 0; list-style: none' >"; /* display list of missing information */ foreach($error_array as $value) $message .= "<li>$value</li>"; $message .= "</ul>"; echo $message; extract($clean_data); include("form_test3.inc"); exit(); } else echo "Data is all okay"; include("form_test3.inc"); ?>
----------------------form_test3.inc-------------------- <?php /* Program name: form_test3.inc * Description: Defines a form that collects a user's * name and phone number. */ //Initialization $first_name = "";//string initialization $middle_name = "";//string initialization $last_name = "";//string initialization $phone = "";//integer string initialization $labels = array( "first_name" => "First Name", "middle_name" => "Middle Name", "last_name" => "Last Name", "phone" => "Phone"); $radios = array( "New", "Changed"); $submit = "Submit Phone Number"; ?> <html> <head> <style type='text/css'> <!-- form { margin: 1.5em 0 0 0; padding: 0; } .field {padding-bottom: 1em;} label { font-weight: bold; float: left; width: 20%; margin-right: 1em; text-align: right; } .submit { margin-left: 35%; } --> </style> </head> <body> <h3>Please enter your phone number below</h3> <input type='hidden' name='submitted' value='yes'> <?php /* loop that displays the form */ if(isset($_POST['submitted']) and $_POST['submitted'] == "yes") echo "<form action='$_SERVER[PHP_SELF]' method='POST'>"; echo "<form action='checkblank_2.php' method='post'>"; foreach($labels as $field => $label) { echo "<div class='field'><label for='$field'>$label</label> <input id='$field' name='$field' type='text' value='".@$$field."' size='50%' maxlength='65' /></div>\n"; } echo "<div class='field'> <input type='radio' name='status' checked='checked' value='new' style='margin-left: 25%'/>$radios[0] <input type='radio' name='status' value='changed' style='margin-left: 1em' />$radios[1]</div>"; echo "<div class='submit'> <input type='submit' name='phoneButton' value='$submit'></div>"; ?> </form> </body> </html>
---------------------display_form.php----------------- <!doctype html> <html> <head> <meta charset="utf-8"> <title>Repair Order</title> </head> <body> <?php ini_set("display_errors","1"); error_reporting(E_ALL); echo "<html> <head><title>SQL Query Sender</title></head> <body>"; $host="***********.com"; $user="***********"; $password="**********"; $dbname = "***********_***Exercise"; $table = "************"; include("form_test3.inc"); ?> </body> </html>
###試したこと
出力されるエラーメッセージがちょっとおかしいので、echoでパラメータにどんなデータが入ってきてるのか見る為、First nameに1234、Middle nameに123と入力し、あとはブランクでSubmitすると、
「1234123newSubmit Phone NumberphoneButtonSubmit Phone NumberphoneButton」
と出力された。
###補足情報(言語/FW/ツール等のバージョンなど)
Dreamweaver, XAMPP, PHP
質問文のコードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
checkblank_2.phpの6行目あたりのforeachの直前にある波括弧は必要なのでしょうか?転記ミスであれば、正しい情報へ修正していただけると嬉しいのですが。
kei344さん、ご指摘ありがとうございます。初めての投稿でわかりませんでした。囲んで、わかりやすくなりました。
s8_chuさん、学校の教科書をそのままコピーしてるので、なぜ波括弧があるのか自分でもあまり良くわかってないんです。消しても大丈夫なのでしょうか。
s8_chuさん、波括弧は絶対に必要なものではないんですね。<参照:http://www.furimuke.com/2013/08/php.html>ちょっと消してみます。ありがとうございます。
回答1件
あなたの回答
tips
プレビュー