• ベストアンサー
  • すぐに回答を!

PHPとHTMLを混在させる方法

phpで、MySqlに登録している顧客データを編集するフォームを作っています。 HTMLの中にPHPのif文を埋め込む方法がわからないので、質問します。 select.php で顧客データのID番号を入力して form.php に指定したID番号の顧客データを表示するところをやっているのですが、 チェックボックスを使う項目があります。 「登録データが1だったら、チェックボックスをオンにする」 というところの記述の仕方がわかりません。 スクリプトの構造上、どうしてもフォーム全体を 変数:$body に入れて書かなければなりません。 変数に入れずに、htmlにif文のところだけを埋め込む方法ならわかるのですが。 form.phpに書いているその部分のコードは下記です。これだと、if文のコードがそのままhtmlソースに出てきてしまいます。 form.phpより抜粋-------------------------------------------- $body="<form action='conf.php' method='post' enctype='multipart/form-data'> <table><tr> <td ><input type='checkbox' name='view_flag' value='1'> <?php if($col[view_flag]=='1') { echo 'checked' ;}; ?> />表示する</td> </tr></table> ...以下省略"; ----------------------------------------------------------------- 変数の中に入れてできる方法がわかる方いたら、教えて下さい。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数162
  • ありがとう数1

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

  • ベストアンサー
  • 回答No.1
  • xKENx
  • ベストアンサー率65% (21/32)

出力を可変にしたい'checked'を変数に入れる方法はどうでしょうか。 ダブルクォートで囲まれた文字列内では、変数は値に展開されます。 変更例: if ($col[view_flag]=='1') { $view_flag_checked = 'checked'; } else { $view_flag_checked = ''; } $body="<form action='conf.php' method='post' enctype='multipart/form-data'> <table><tr> <td ><input type='checkbox' name='view_flag' value='1' ${view_flag_checked} ?> />表示する</td> </tr></table>

共感・感謝の気持ちを伝えよう!

質問者からのお礼

できました。ありがとうございました!!

関連するQ&A

  • 新着情報のような記事投稿をつくろうとしているのですが、POSTの受け渡し?やMySQLへのデータ登録がうまくいきません。

    やりたいこと 1、form.phpからview.phpへフォームでPOSTデータを送り、 2、view.phpでは、MySQLへの接続と、受け取ったPOSTデータを変数へ格納して、データベースへ登録する前に、プレビュー画面で確認する。 4、登録ボタンを押したら、「登録しました。」というメッセージを表示し、データベースへ登録する。 受け取ったPOSTデータをプレビュー画面にすることはできたのですが、その後の、「4」の部分が作れません。どうかアドバイスお願いいたします。 view.php ////////////////////////////////////////////////// $host = "localhost"; $conn = mysql_connect($host, "root", "root"); mysql_select_db("my_db", $conn); $date = $_POST['date']; $title = $_POST['title']; $text = $_POST['text']; $form = <<<EOM <form action="view.html" method="post"> <table> <tr> <td日付td><td>$date</td> </tr> <tr> <td>タイトル</td><td>$title</td> </tr> <tr> <td>本文</td><td>$text</td> </tr> <tr> <td><input type="submit" name="check" value="登録" /> <input type="button" name="back" value="戻る" /></td> </tr> </table></form> EOM; //ここにいろいろと書いて試してみました ----------------------------------------------- //試したこと1 $sql = "INSERT INTO topic_table(date, title, text,)VALUES('$date', '$title', '$text')"; mysql_query($sql, $conn) or die($form_a="登録できませんでした"); ($form_a="登録しました。"); ↑これだとview.phpを開いただけでデータベース登録されてしまいました。 ----------------------------------------------- 試したこと2 if($_POST['check'] == "登録"){ $sql = "INSERT INTO topic_table(date, title, text,)VALUES('$date', '$title', '$text')"; mysql_query($sql, $conn) or die($form_a="登録できませんでした"); ($form_a="登録しました。"); } ↑登録ボタンを押して、データベースに登録する、というのをif文で作ってみましたが失敗しました。(POSTデータではなくただの空白しかデータベースには登録されませんでした。)

    • ベストアンサー
    • PHP
  • PHPの構文

    名前と年齢をフォームページから入力して 名前・年齢、そして成人・未成年の表示をするPHPのサンプルがあります。 初学者で無駄な部分が多く複雑になってしまったのですが ここをもっとこうしたほうが良いなど もっとシンプルで分かりやすい構文にできるのでしょうか? よろしくお願いいたします。 in.php ----------------------------------------------- <html> <body> <form action="out.php" method="post"> <table><tr><td>名前入力: <input type="text" name="name"></td></tr> <tr><td>年齢入力: <input type="text" name="age"></td></tr> </table> <input type="submit" value="ボタン"> </form> </body> </html> ----------------------------------------------- out.php ----------------------------------------------- <html> <body> <?php $name = htmlspecialchars($_POST["name"], ENT_QUOTES); $agen = mb_convert_kana($_POST["age"], "a"); $age = htmlspecialchars($agen, ENT_QUOTES); If($name == ""){ if($age == ""){ echo "名前、年齢の入力がありません。"; }else{ echo "名前を入力してください。"; } }else{ if($age == ""){ echo "年齢を入力してください。"; }else{ echo "あなたの名前は{$name}、年齢は{$age}です。"; if($age<20){ echo "あなたは未成年です。"; }else{ echo "あなたは成人です。"; } } } echo "<p><a href='in.php'>フォームに戻る</a>"; ?> </body> </html> -----------------------------------------------

    • ベストアンサー
    • PHP
  • PHPからのメールがうまく作動しない。。。

    php初心者です。宜しくお願いします。 問い合わせフォームを作成したく、以下のHTMLとPHPファイルを作成しましたが、「mail.php」の時点で作動せず、メールもおくられません。色々調べて「.htaccess」での設定に関係あると書いていますが、よくわかりません・・・ずっとわからず悩んでます。教えていただけないでしょうか。宜しくお願い致します。 「mail.html」 <html> <head> <title>メール送信フォーム</title> </head> <h2>メール送信フォーム</h2> <form method="POST"action="kakunin.php"> <table border="0"> <tr> <td>お名前</td> <td><input type="text" name="name" size="20"></td> </tr> <tr> <td>メールアドレス</td> <td><input type="text" name="from" size="20"></td> </tr> <tr> <td>メールタイトル</td> <td><input type="text" name="title" size="20"></td> </tr> <tr> <td>メッセージ</td> <td><textarea rows="5" name="naiyou" cols="40"></textarea></td> </tr> <tr> <td colspan="2"><input type="submit" value="内容を確認"></td> </tr> </table> </form> </body> </html> 「kakunin.php」 <html> <head> <title>メール送信フォーム</title> </head> <body> <h2>メール送信内容確認画面</h2> <?php //フォームの値を取得します。 if ($_SERVER["REQUEST_METHOD"] == "POST") { foreach($_POST as $k => $v){ //「magic_quotes_gpc=on」のときはエスケープ解除 if(get_magic_quotes_gpc()) { $v = stripslashes($v); } $v = htmlspecialchars($v); $$k = $v; } } else { exit(); } //値をチェックします。 $ErrFlg = 0; if($name == ""){ echo"<p>お名前を入力してください。"; $ErrFlg = 1; } if($from == ""){ echo"<p>メールアドレスを入力してください。"; $ErrFlg = 1; } if($title == ""){ echo"<p>メールタイトルを入力してください。"; $ErrFlg = 1; } if($naiyou == ""){ echo"<p>メッセージを入力してください。"; $ErrFlg = 1; } if($ErrFlg){ exit(); } ?> <h2>内容を確認して送信ボタンをクリックしてください。</h2> <form method="POST" action="mail.php"> <table border="0"> <tr> <td width="100">お名前</td> <td width="300"><?php echo $name?></td> </tr> <tr> <td width="100">メールアドレス</td> <td width="300"><?php echo $from?></td> </tr> <tr> <td width="100">メールタイトル</td> <td width="300"><?php echo $title?></td> </tr> <tr> <td width="100">メッセージ</td> <td width="300"><?php echo $naiyou?></td> </tr> <tr> <td colspan="2"><input type="submit" value="送信"></td> </tr> </table> <input type="hidden" name="name" value="<?php echo $name?>"> <input type="hidden" name="from" value="<?php echo $from?>"> <input type="hidden" name="title" value="<?php echo $title?>"> <input type="hidden" name="naiyou" value="<?php echo $naiyou?>"> </from> </body> </html> 「mail.php」 <HTML> <HEAD> <title>メール送信フォーム</title> </HEAD> <BODY> <?php //メール送信先を指定 $to == "web@beworks-web.com"; //フォームの値を取得 if($_SERVER["REQUEST_METHOD"] == "POST") { foreach($_POST as $k => $v){ //「magic_quotes_gpc=on」のときはエスケープ解除 if(get_magic_quotes_gpc()){ $v = stripslashes($v); } $v = htmlspecialchars($v); $sk = $v; } } else { exit(); } //メール本文を組み立て $naiyou = "お名前:$name\n メールアドレス:$from\n タイトル:$title\n 内容:$naiyou\n"; if($name != "" and $from != "" and $title != "" and $naiyou != ""){ if(mb_send_mail($to,$title,$naiyou,"From:$from")) { echo "メールを送信しました"; } else { echo "メール失敗です"; } } ?> </BODY> </HTML>

    • 締切済み
    • PHP
  • テーブルの中のフォームについて

    テーブルの中にフォームを入れて使いたいのですが、次のようにフォームを入れると、勝手に改行されてしまいます。 <table> <tr> <td><form>.....</form></td> </tr> </table> または <form> <table> <tr> <td>.....</td> </tr> </table> </form> これが嫌で、次のようにしているのですが、何か問題や他に良い方法があるでしょうか? <table> <form> <tr> <td>.....</td> </tr> </form> </table> ちなみに、Dreamweaverのバリデータでは警告が出ます。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • phpについて質問です。

    php初心者です。 以下のようなコードを書きました。テストの点数を配列に用意し最大値を表示したいのですがうまくいきません。 どなたかご教授お願いします。 <html> <body> <?php $score = array(20, 21, 59, 100, 78); $max = 0; ?> <table border = "2"> <tr bgcolor = aqua> <th>番号</th> <th>点数</th> </tr> <?php for($i=0; $i<count($score); $i++){ if($max < $socre[$i]) $max = $score[$i]; print"<tr>"; print"<td>{$i}</td><td>{$score[$i]}</td>\n"; print"</tr>\n"; } print"</table>\n"; print"</br>\n"; ?> <?php print"最高点は{$max}です。\n"; ?> </body> </html> foreachをつかえばうまくいきました。 for文ではいけないのでしょうか。 最大値が0と表示されるのでどうやらif文の条件分岐がうまくいってないようなのですが..... 初心者なので勘違いをしているところがあると思います。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • フォームで確認画面を表示させるにはどうすればいいのでしょうか?

    質問をご覧下さりありがとうございます。 <form action="18add.php" method="POST" name="form1"> <table> <tr> <th>番号(半角数字)</th> <td><input type="text" name="number" value=""></td> </tr> <tr> <th>名前</th> <td><input type="text" name="name" value=""></td> </tr> <tr> <td><input type="hidden" name="mode" value="add"></td> <td><input type="submit" name="submit" value="追加"></td> </tr> </table> </form> htmlでこんなフォームを作り、phpで $table_body = ""; if( isset( $_POST['mode'] ) ){ $mode = $_POST['mode']; $number = $_POST['number']; $name =$_POST['name']; } else{ $mode = ""; $number = ""; $name = ""; } if( $mode == "add" ){ $table_body .= "<tr>"; $table_body .= "<td>"; $table_body .= $number; $table_body .= "</td>"; $table_body .= "<td>"; $table_body .= mb_convert_encoding( $name, "SJIS", "EUC-JP" ); $table_body .= "</td>"; $table_body .= "</tr>"; } で一度入力された情報を確認する画面を作りたいのですが うまくいきません。 初心者なのでわかりやすく説明をつけてくださると大変助かります。

    • 締切済み
    • PHP
  • PHPでMySQLにデーターを追加するところで壁に当たってしまいました

    PHPでMySQLにデーターを追加するところで壁に当たってしまいました。 PHP5.3&MYSQL5.1 1.フォームへ入力 2.確認画面 3.MySQLへデーター追加 1.form <html> <head><title></title></head> <body> <form method="post" action="conf.php"> <table> <tr><th>番号</th><td><input type="text" name="id" /></td></tr> <tr><th>タイトル</th><td><input type="text" name="title" /></td></tr> <tr><th>テキスト</th><td><textarea name="cont" cols="40" rows="5" /></textarea></tr> <tr><th>日付け</th><td><input type="text" name="update" size="10" /></td></tr> </table> <input type="submit" value="送信" /><input type="reset" value="リセット" /> </form> </body> </html> 2.確認画面 <html> <head><title></title></head> <body> <table> <tr><th>番号</th><td><?php echo htmlspecialchars($_POST["id"]) ?></td></tr> <tr><th>タイトル</th><td><?php echo htmlspecialchars($_POST["title"]) ?></td></tr> <tr><th>テキスト</th><td><?php echo htmlspecialchars($_POST["cont"]) ?></td></tr> <tr><th>日付け</th><td><?php echo htmlspecialchars($_POST["update"]) ?></td></tr> </table> <form method="post" action="upld.php"> <input type="hidden" name="did" value="<?php echo htmlspecialchars($_POST["id"]) ?>" /> <input type="hidden" name="title" value="<?php echo htmlspecialchars($_POST["title"]) ?>" /> <input type="hidden" name="cont" value="<?php echo htmlspecialchars($_POST["cont"]) ?>" /> <input type="hidden" name="update" value="<?php echo htmlspecialchars($_POST["update"]) ?>" /> <input type="submit" value="登録" /> </form> </body> </html> 3.MySQLへデーター追加 <?php $Con = mysql_connect("localhost","root",""); if ($Con == false) {dir ("MySQLの接続に失敗。");} if (!mysql_select_db("phpdata",$Con)) {dir ("データーベース接続に失敗。");} $sql = "insert into daimoku(id,title,cont,update) values('".$_POST["id"]."','".$_POST["title"]."','".$_POST["cont"]."','".$_POST["update"]."')";//SQL文の作成 $res = mysql_query($sql) or die(mysql_error());//クエリの実行 mysql_close($Con);//切断 ?> <html> <head> <title></title> </head> <body> <p>ご登録ありがとうございました。</p> <a href="01.php">戻る</a> </body> 以上のコードでデーターの追加が出来ません。 どなたか教えていただけないでしょうか?

    • ベストアンサー
    • PHP
  • Dreamweaver+PHPの効率化、生成について

    初めまして、どうぞ宜しく御願いします 只今、PHP学習と並行して先日購入したDreamweaverMX2004を使いHTML&PHPの効率よく生成する事を独学して学んでいます。 そこで以下のようなプログラムを作ったときにDreamweaverのライブデータの表示機能について質問があります。 *------php1------* <?php $red = "赤"; $html = <<<__HTML__ <html><body> <table width="50" height="50"> <tr><td bgcolor="#FF0000">$red</td></tr> </table> </body></html> __HTML__; echo $html; ?> *----------------* *------php2------* <?php $red = "赤"; ?> <html><body> <table width="50" height="50"> <tr><td bgcolor="#FF0000"> <?php echo $red; ?> </td></tr> </table> </body></html> *----------------* PHPページを作る時『PHP1』のように変数にHTMLを入れてからechoして表示しているのですが、ライブデータの表示機能を使うとtableタグのwidthとheightの大きさは表示されていますが背景やHTMLの編集がデザインでできなくなってしまい、悩んでいます。 DreamweaverでPHPを作成する時の書き方は『PHP2』のように埋め込めて書かないと上手く表示してくれないのでしょうか?もし『PHP1』の書き方で考えられる対処法のしかたや、もっといい方法がございましたら是非お教えください。 又、皆さんがどのようにPHPの生成しているのかとても興味があります、もし宜しければ『こんな方法がある』『この機能が便利』などございましたらアドバイス頂きたいです、どうぞ宜しく御願い致します。 長文で解り難い文章でスミマセン、最後まで読んで頂いて有難うございます。

  • PHPの問題を解いているのですが…

    昨日からずーと悩んでいるのですがfor文で *実際はテーブルを使ってます 値1 44 値2 55 値3 66 値4 77 件数 4件 平均 60.5 と出したいのですが下のプログラムでは出ませんなぜでしょうか? <HTML> <HEAD> <TITLE>for文例問題1</TITLE> </HEAD> <BODY> <table border> <?php $ary1 = array(44,55,66,77); for($i=0;$i<4;$i++) { $a = 44+55+66+77/4; <tr><th>値 $i</th>    <td>44</td></tr> <tr><th>値 $i</th>    <td>55</td></tr> <tr><th>値 $i</th>    <td>66</td></tr> <tr><th>値 $i</th>    <td>77</td></tr> <tr><th>件名</th> <td> $i件</td></tr> <tr><th>平均</th> <td> $a件</td></tr> </table> } ?> </BODY> </HTML> ご存知の方どうか助言お願いします

    • ベストアンサー
    • PHP
  • POSTデータをフォームに残す方法

    同一フォーム内PHPへ、フォームをポストした際、 フォーム入力チェックを行い誤りがあれば、 元のフォームに入力したデータを残したいのですがどのようにすればよいでしょうか? 結果によって分岐せずに、フォームに必ず値が残ると言う方法でもかまいません。 //ここから <form method="post" action =""> <table> <tr> <td><input name="title" size="20"></td> <td><input type="submit" name="send" value=" 登録 "></td> </tr> </table> </form> <?php if(len_check($_POST['title'])>8){ echo "文字数オーバーです。"; //フォームに値を戻す処理。 }else{ echo "入力した文字={$_POST['title']}"; //フォームの値は破棄。 } function len_check($s){ return strlen(bin2hex($s)) / 2; } ?>

    • ベストアンサー
    • PHP