以下のコードを実行すると
Notice: Undefined variable: input in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap07\7-14.php on line 24
Hello, tatu
となります。
実行結果を「Hello, tatu」としたいのですが
コード10行目 process_form($input);をどのように変更するといいのでしょうか。
if(isset($input)){ process_form($input); }とするとなにも表示されなくなります。
よろしくお願いいたします。
php
1<?php 2// リクエストメソッドに応じて適切な処理を行うロジック 3if( $_SERVER['REQUEST_METHOD'] == 'POST'){ 4 if(isset($form_errors,$input )) { 5 list($form_errors,$input) = validate_form(); 6 } 7 if(isset($form_errors)){ 8 show_form($form_errors); 9 }else{ 10 process_form($input); 11 } 12}else{ 13 show_form(); 14} 15 16// フォームのサミット時に何かを行う 17function process_form(){ 18 19 print "Hello, " . $_POST['my_name']; 20 21} 22 23// フォームを表示する 24function show_form($errors = ''){ 25 26 // エラーが返されたらそのエラーを出力する 27 if($errors){ 28 print 'Please correct these errors: <ul><li>'; 29 print implode('</li><li>', $errors); 30 print '</li></ul>'; 31 } 32 33 print<<<_HTML_ 34 35<form method="post" action=""> 36 Your name: <input type="text" name="my_name"> 37 <br> 38 <input type="submit" value="Say Hello"> 39</form> 40_HTML_; 41} 42 43// フォームデータをチェックする 44function validate_form(){ 45 46 // エラーメッセージを空の配列で初期化する 47 $errors = array(); 48 49 // 名前が短かすぎる場合にはエラーメッセージを追加する 50 if(strlen($_POST['my_name']) < 3){ 51 52 $errors[] = "Your name must be at least 3 letters long."; 53 54 } 55 56 // エラーメッセージの配列(場合によっては空の配列)を返す。 57 return $errors; 58} 59 60?>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/05/03 15:16