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

データベースが文字化けしてしまいます

過去の相談を見ながらいろいろとやりましたがもうお手上げ状態です。 だれか助けてください。 PHPパーフェクト(技術評論社)を見ながらPHPの勉強をしている初心者です。 下記のようなPHPコードを書いてデータベースに保存しようとしているんですが、 phpmyadminで確認するとどうしても「文字化け」してしまいます。 <?php $link = mysql_connect("localhost", "■", "■"); if(!$link){ die("データベースに接続できません:".mysql_error()); } mysql_select_db("oneline_bbs", $link); $errors = array(); if($_SERVER['REQUEST_METHOD']==="POST"){ $name = null; if(!isset($_POST["name"])||!strlen($_POST["name"])){ $errors['name'] = "名前を入力してください"; }else if(strlen($_POST["name"]) > 40){ $errors['name'] = "名前は40文字以内で入力してください"; }else{ $name = $_POST["name"]; } $comment = null; if(!isset($_POST["comment"])||!strlen($_POST["comment"])){ $errors["comment"] = "ひとことを入力してください"; }else if(strlen($_POST["comment"]) > 200){ $errors["comment"] = "ひとことは200文字以内で入力してください"; }else{ $comment = $_POST["comment"]; } if(count($errors) === 0){ $sql = "INSERT INTO `post` (`name`,`comment`,`created_at`) VALUES ('" .mysql_real_escape_string($name) . "','" .mysql_real_escape_string($comment) . "','" .date('y-m-d H:i:s') . "')"; mysql_query($sql, $link); } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp" /> <title>ひとことけいじばん</title> </head> <body> <form action="bbs.php" method="post"> 名前:<input type="text" name="name" /><br /> ひとこと:<input type="text" name="comment" size="60" /><br /> <input type="submit" name="submit" value="送信" /> </form> </body> </html> データベースは CREATE DATABASE 'oneline_bbs' DEFAULT CHARACTER SET utf8; ・・・ と入力して作りました。 過去の相談事例からphp.iniなどもいじって見ましたが、 どうにもなりません。 XAMPP 1.7.3 windowsXP DreamweaverCS5.5 ブラウザChormeを使用しています。 だれか詳しい方よろしくお願いします。

noname#244246

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

  • 回答数2
  • 閲覧数260
  • ありがとう数0

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

  • ベストアンサー
  • 回答No.1

<meta http-equiv="Content-Type" content="text/html; charset=euc-jp" /> ブラウザのコード系はeuc-jp CREATE DATABASE 'oneline_bbs' DEFAULT CHARACTER SET utf8; データベースのコード系はutf8 データベースと接続するミドルウェアが自動でコード変換してくれないから文字化けしているのでは? <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> で試してみたら? (meta文では、ユニコードを指定したければutf8じゃなくUTF-8だったと思う。・・・同じコード系です)

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

関連するQ&A

  • PHPのサンプルコードが意図した通りに動かない。

    かれこれ6時間眺めてますが何が駄目なのかがわかりません。 どこが悪いのか教えていただけると助かります。 このbbs.phpは 二つのインプット要素をもつHTMLフォームを含むPHPファイルで、 名前とひとことコメントを入力してsubmitすれば フォームの下部にそのコメントを 名前、コメント、日付の書式で一行づつ表示する 。。。はずだったんですが Parse error: syntax error, unexpected T_STRING in /Applications/XAMPP/xamppfiles/htdocs/online_bbs/bbs.php on line 48 らしく該当する行を眺めてみても何がいけないのかさっぱりです。 コード内にもエラーが出たら出力するコードがあるのですが どうやらこれはインタープリタ自体が吐くエラーのようで このエラーの表示時にはフォーム要素は一切表示されません。 なにがいけないのか教えてください ほとほと困り果てています <?php $link = mysql_connect(`localhost`,`root`,`takataka`); if(!$link) { die(`Can not connect database`. mysql_error()); } mysql_select_db(`online_bbs`,$link); $errors = array(); if($_SERVER[`REQUEST_MTHOD`]===`POST`) { $name = null; if(!isset($_POST[`name`]) || !strlen($_POST[`name`])) { $errors[`name`] = `input your name `; }else if(strlen($_POST[`name`]) > 40) { $errors[`name`] = `名前は四十文字以内で入力してください`; }else { $name = $_POST[`name`]; } $comment = null; if(!isset($_POST[`comment`]) || !strlen($_POST[`comment`])) { $errors[`comment`] = `Input your comment please `; }else if(strlen($_POST[`comment`]) > 200) { $errors[`comment`] = `コメントは200文字以内で入力してください`; }else { $comment = $_POST[`comment`]; } if(count($errors) === 0) { $sql = "INSERT INTO `post` (`name`,`comment`,`created_at`) VALUES (`" . mysql_real_escape_string($name) . "`,`" . mysql_real_escape_string($comment) . "`,`" . date(`Y-m-d H:i:s`) . "`); mysql_query($sql,$link); mysql_close($link); header(`Location: http://localhost/online_bbs/bbs.php`); } } ?> <html> <head>    <titlle>ひとこと掲示板</title> </head> <body> <h1>ひとこと掲示板掲示板</h1> <form action="bbs.php" method="post"> //ここが48行目になります <?php if (count($errors) > 0): ?> <ul class="error_list"> <?php foreach ($errors as $error): ?> <li> <?php echo htmlspecialchars($error,ENT_QUOTES,`UTF-8`) ?> </li> <?php endforeach; ?> </ul> <?php endif; ?> 名前:<input type="text" name="name"/><br/> ひとこと;<input type="text" name="comment" size="60"/><br/> <input type="submit" name="submit" value="送信"/> </form> <?php $sql = "SELECT * FROM `post` ORDER BY `created_at` DESC"; $result = mysql_query($sql,$link); ?> <p><?php echo $result; ?></p> <?php if($result !== false && mysql_num_rows($result)): ?> <ul> <?php while($post = mysql_fetch_assoc($result)): ?> <li> <?php echo htmlspecialchars($post[`name`],ENT_QUOTES,`UTF-8`); ?> <?php echo htmlspecialchars($post[`comment`],ENT_QUOTES,`UTF-8`); ?> - <?php echo htmlspecialchars($post[`created_at`],ENT_QUOTES,`UTF-8`); ?> </li> <p>test</p> <?php endwhile; ?> </ul> <?php endif; ?> <?php mysql_free_result($result); mysql_close($link); ?> </body> </html>

    • ベストアンサー
    • PHP
  • phpのエラーについて

    phpでメールフォームを作っています。 メールフォーム(1)、(2)、(3)と3つ作っています。 (2)で確認して記入内容に間違いがなれけば送信して(3)を表示。 間違っていたら(1)に戻るというものです。 確認するページ(2)の記述でParse error: syntax error, unexpected T_STRING in……とエラーが出ます。 その問題の行は、セッションを開始したすぐ下の行の die('不正アクセスの疑いがあります。'); という部分です。 この行と、それより以前・以後を何度も確認しましたがエラーの原因となるものが発見できません…… PHP初心者なのでもうお手上げです>< どなたかご教授よろしくお願いします!!! レンタルサーバーはヘテムルでphpは5.2.8です。 <?php function checkInput($var){ if(is_array($var)){ return array_map('checkInput', $var); } else { if(get_magic_quotes_gpc()){ $var = stripslashes($var); } if(preg_match('/\0/', $var)){ die('不正な入力です。'); } if(!mb_check_encoding($var, 'UTF-8')){ die('不正な入力です。'); } return $var; } } session_start(); $_POST = checkInput($_POST); if(isset($_POST['ticket']) && isset($_SESSION['ticket'])){ $ticket = $_POST['ticket']; if(!in_array($ticket, $_SESSION['ticket'])){ die('不正アクセスの疑いがあります。'); //この行がエラーとなります。 } }else{ die('不正アクセスの疑いがあります。'); } $name = isset($_POST['name']) ? $_POST['name'] : NULL ; $email = isset($_POST['email']) ? $_POST['email'] : NULL ; $name = isset($_POST['comment']) ? $_POST['comment'] : NULL ; $error = array(); if(trim($name) == ''){ $error[] = 'お名前は必須項目です。'; } else if(mb_strlen($name) > 100){ $error[] = 'お名前は100文字以内でお願いします。'; } if(trim($email) == ''){ $error[] = 'メールアドレスは必須項目です。'; } else { $pattern = '/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/iD'; if(!preg_match($pattern, $email)){ $error[] = 'メールアドレスの形式が正しくありません'; } } if(trim($comment) == ''){ $error[] = 'コメントは必須項目です。'; } else if(mb_strlen($comment) > 500){ $error[] = 'コメントは500文字以内でお願いします。'; } $_SESSION['name'] = $name; $_SESSION['email'] = $email; $_SESSION['comment'] = $comment; $_SESSION['error'] = $error; if(count($error) > 0) { $dirname = dirname($_SERVER['SCRIPT_NAME']); $dirname = dirname == DIRECTORY_SEPARATOR ? '' : $dirname; $uri = 'http://' .$_SERVER['SERVER_NAME'] . $dirname . '/○○.php'; header('HTTP/1.1 303 See Other'); header('Location: ' . $uri); } else { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>確認フォーム</title> </head> <body> <div id="form"> <p>以下の内容でよろしければ送信ボタンを押してください。</p> <dl> <dt>お名前:</dt> <dd><?php echo h($name);?></dd> </dl> <dl> <dt>メールアドレス:</dt> <dd><?php echo h($email);?></dd> </dl> <dl> <dt>コメント:</dt> <dd><?php echo nl2br(h($comment));?></dd> </dl> <form action="thank.php" method="post"> <input type="hidden" name="ticket" value="<?php echo h($ticket);?>" /> <input type="submit" name="submit" value="送信する" /> </form> </div> </body> </html> <?php } function h($string) { return htmlspecialchars($string, ENT_QUOTES); } ?>

    • ベストアンサー
    • PHP
  • MySQLに日本語を登録すると文字化けする

    お世話になります。 PHPを使用して日本語文字を登録しようとすると文字化けします。 どこをどのようにすれば文字化けはなおるのでしょうか? ソースは以下で書いています。 よろしくお願いします。 <?php function blank($value){ if(isset($value)){ if(is_array($value)){ return count($value)==0; }else{ return $value==""; } } return true; } if(blank($_POST["phonenumber"])||blank($_POST["password"])||blank($_POST["name"])||blank($_POST["mail"])){ ?> <p>名前、E-mail、携帯番号またはパスワードを入力してください</p> <p><a href="input.html">戻る</a></p> <?php }else{ $name= $_POST["name"]; $mail= $_POST["mail"]; $phonenumber = $_POST["phonenumber"]; $password= $_POST["password"]; $link=mysql_connect("localhost","id","password"); if(!$link){ die("データベースに接続できません"); } $db=mysql_select_db("id"); if(!$db){ die("データベースを選択できません"); } $sql=<<<SQL insert into password(phonenumber,password,name,mail)value("{$phonenumber}","{$password}","{$name}","{$mail}") SQL; $result=mysql_query($sql,$link); if(!$result){ die("同じ携帯番号で登録済です。"); }else{ print("正常に登録が終了しました"); } } ?>

    • ベストアンサー
    • PHP

その他の回答 (1)

  • 回答No.2

Webページはどうしてもeuc-jpじゃないとダメなのでしょうか? No.1様の回答のように、UTF-8で統一するのが最もスマートかと思いますが...生成するWebページはどうしてもeuc-jpでなければ、ということであればmysql_connectの後にmysql_set_charset("ujis", $link)でいかがでしょう? ※mysql_set_charsetはPHP5.2.3以上でないと使えません。 ※mysqlで"SET NAMES"や"SET CLIENT_ENCODING"を行う方法はセキュリティの問題があるため推奨されていません。

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

関連するQ&A

  • 「同一phpページ内に一言掲示板」の作り方。

    PHP勉強中の初心者です。 bbs.phpに投稿フォームと投稿内容を表示するページ、bbs2.phpにはエラー処理&投稿完了メッセージと、別々に作る方法は下記で一応出来たのですが、これらを一つの.phpに纏めるにはどうすればいいのでしょうか? bbs2.phpの方に逐一入っている、 exit('名前・コメントが両方未入力です。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); とかのエラーメッセージの表示は、全てformタグの前後辺りに移して、です。 試行錯誤してみましたが、変なエラーばっかり出てしまいます。 うまい方法がありましたら、変数・関数の追加や削除は自由です。 どうかご教授の方、よろしくお願いします。 【bbs.txt(例)】 <strong>名前:</strong>テスト2&thinsp;<font size="2">さん</font>&emsp;<strong>コメント:</strong>こんばんは&emsp;<strong>時間:</strong>09月19日 20時02分 <strong>名前:</strong>テスト1&thinsp;<font size="2">さん</font>&emsp;<strong>コメント:</strong>こんにちは&emsp;<strong>時間:</strong>09月19日 13時48分 【bbs.php】 <html> <head> <meta http-equiv="Content-Type" content="text/html" charset="utf-8" /> <title>一言</title> </head> <body> <form action="bbs2.php" method="post"> 名前:<input size="15" type="text" name="name" value="">&emsp;コメント:<input size="30" type="text" name="comment">&emsp;<input type="submit" value="送信">&nbsp;<input type="reset"> </form> <hr> <?php $lines = file('bbs.txt'); foreach ($lines as $l) { print "</p>" . $l . "</p>\n"; } ?> <hr> 【bbs2.php】 <?php if (mb_strlen($_POST['name']) === 0 && mb_strlen($_POST['comment']) === 0) { exit('名前・コメントが両方未入力です。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } else if (isset($_POST['name']) !== TRUE || mb_strlen($_POST['name']) === 0) { exit('名前を入力してください。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } else if (isset($_POST['comment']) !== TRUE || mb_strlen($_POST['comment']) === 0) { exit('コメントを入力してください。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } else if (mb_strlen($_POST['name']) > 20 && mb_strlen($_POST['comment']) > 100) { exit('名前(20文字以内)とコメント(100文字以内)が両方文字数制限を超えています。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } else if (mb_strlen($_POST['name']) > 20) { exit('名前は20文字以内で入力してください。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } else if (mb_strlen($_POST['comment']) > 100) { exit('コメントは100文字以内で入力してください。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } else if (preg_match('/http/', $_POST['comment']) > '0' ) { exit('スパム対策により、URL付きのコメントは投稿できません。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } $name = htmlspecialchars($_POST['name']).'&thinsp;<font size="2">さん</font>'; $comment = htmlspecialchars($_POST['comment']); $now = date('m月d日 H時i分'); $post_data = "<strong>名前:</strong>$name&emsp;<strong>コメント:</strong>$comment&emsp;<strong>時間:</strong>$now\n"; $read_data = file_get_contents('bbs.txt'); file_put_contents('bbs.txt',$post_data . $read_data); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html" charset="utf-8" /> <title>一言</title> </head> <body> <p>コメントを投稿しました。</p> <p><a href="bbs.php">一覧へ戻る</a></p> </body> </html>

    • ベストアンサー
    • PHP
  • なぜ文字化けしないのでしょうか?

    Windows Me(shift_jis)とFedoraCore4(utf-8)のPCのブラウザに以下のFedoraCoreのPCに配置してあるgomi.php(utf-8で記載)を表示させて 入力欄に「お元気ですか。」と日本語を入れてもその応答が文字化けしません FC4はutf-8なのでshift_jisのWindows Meでは文字化けするはずですがしませんがどうしてでしょうか? gomi.php -------------------------------------------------------- <?php $in=isset($_POST['in'])?$_POST['in']:'bad'; echo '<?xml version="1.0" encoding="utf-8"?>'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8"/> <title>test</title> </head><body> <p><?= $in ?></p> <form method="post" action="<?= $_SERVER['PHP_SELF'] ?>"> <input type="text" name="in"/> <input type="submit" value="送信"/> </form> </body></html>

    • ベストアンサー
    • PHP
  • PHP データベース データ更新

    データベース更新について お世話になっております。 データベースの更新ができず困っております。 ご教授いただければと思います。 PHPは初心者です。 コードは下記の用になっております。 form.php <?php ・ ・ ・ $member = $_GET[name]; ・ ・ ・ $query_member = sprintf("SELECT * FROM `member` WHERE ID='$member'"); $result_member = mysql_query($query_member, $link); if ($result_member) { $row = mysql_fetch_array($result_member); if ($row) { $m_id = $row['id']; $m_first_name = $row['first_name']; $m_last_name = $row['last_name']; $m_first_kana = $row['first_kana']; $m_last_kana = $row['last_kana']; $m_b_year = $row['b_year']; $m_b_month = $row['b_month']; $m_b_day = $row['b_day']; } } ?> <html> <body> <form action="complete.php?<?php print $m_id; ?>" method="POST"> <input type="text" name="<?php print $m_first_name; ?>" value="<?php print $m_first_name; ?>" /> <input type="text" name="<?php print $m_last_name; ?>" value="<?php print $m_last_name; ?>" /> <input type="text" name="<?php print $m_first_kana; ?>" value="<?php print $m_first_kana; ?>" /> <input type="text" name="<?php print $m_last_kana; ?>" value="<?php print $m_last_kana; ?>" /> <input type="text" name="<?php print $m_b_year; ?>" value="<?php print $m_b_year; ?>"> 年 <input type="text" name="<?php print $m_b_month; ?>" value="<?php print $m_b_month; ?>"> 月 <input type="text" name="<?php print $m_b_day; ?>" value="<?php print $m_b_day; ?>"> 日 <input type="submit" name="regist" value="編集"> </form> complete.php <?php ・ ・ ・ $m_id = $_GET[name]; ・ ・ ・ $first_name = mysql_real_escape_string($_POST['m_first_name']); $last_name = mysql_real_escape_string($_POST['m_last_name']); $first_kana = mysql_real_escape_string($_POST['m_first_kana']); $last_kana = mysql_real_escape_string($_POST['m_last_kana']); $year = mysql_real_escape_string($_POST['m_b_year']); $month = mysql_real_escape_string($_POST['m_b_month']); $day = mysql_real_escape_string($_POST['m_b_day']); $query_edit = sprintf("UPDATA `member` SET `first_name`='$first_name', `last_name`='$last_name' WHERE id='$m_id'"); $result_edit = mysql_query($query_edit, $link) or die(mysql_error()); if ($result_edit) { $msg = '編集しました。'; } else { $msg = '編集に失敗しました。'; } ?> <html> <body> <?php print $msg; ?> </body> </html> となっております。 $member = $_GET[name];はhttp://oshiete1.goo.ne.jp/qa5783266.htmlにてご教授いただいたので使用しています。 $result_edit = mysql_query($query_edit, $link) or die(mysql_error());でエラーが出力されたところデータの受け渡しができていませんでした。 どこを直せば良いのかわからず困っております。 お分かりの方がいらっしゃいましたらご教授お願いいたします。

    • ベストアンサー
    • PHP
  • if の入れ子で期待した結果が得られません

    初心者です教えて下さい。 if の中の if が null なのに not null になってしまいます なぜでしょうか? よろしくお願いします。 http://psychesine.my-sv.net/phpTest.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title></title> </head> <body> <form method="post" action="phpTest.php"> <p> Email<input type="radio" name="type" value="email"> UserName<input type="radio" name="type" value="userName"> </p> <table> <table> <tr><td>Email</td><td><input type="text" name="email" value="<?php print(htmlspecialchars($_POST['email'])); ?>" /></td></tr> <tr><td>UserName</td><td><input type="text" name="userName" value="<?php print(htmlspecialchars($_POST['userName'])); ?>" /></td></tr> </table> <input type="submit" value="検索" /> </form> <?php if ( 0 == strcmp( $_POST['type'], 'email' ) ) { if ( is_null($_POST['email']) ) { echo 'email is null'; } else { echo 'email is not null'; } } if ( 0 == strcmp( $_POST['type'], 'userName' ) ) { if ( is_null($_POST['userName']) ) { echo 'userName is null'; } else { echo 'userName is not null'; } } ?> </body> </html>

    • ベストアンサー
    • PHP
  • 基本的なmysqlのDB操作につきまして

    PHPの初心者です。あまり上達せず、困っていました。 よろしくお願いします。 用件は、POSTからもらったデータをMysqlへ追加する操作です。 とある参考書に書いてあるように、 しても、エラーで追加されません。 ちなみに、$commentの箇所を省いて、nameとpasswordだけにすると ちゃんと追加されます。これが不思議なんです。 DBへのアカウントやパスは間違っていません。 PHPのバージョンは5です。 // データの文字コードを変換する関数 function cnv_dbstring{ XXXXXX変換するコードXXXXX } if (count($_POST) > 0) { $name = $_POST["name"]; $password = $_POST["password"]; $comment = $_POST["comment"]; // データが送信されたときはデータを追加する if (strlen($name) and strlen($password) and strlen($comment)){ // データを追加する $sql = "INSERT INTO xx_xxxx_usr(name, password, comment) VALUES( '".cnv_sqlstr(cnv_dbstring($name, $db_enc))."', '".cnv_sqlstr(cnv_dbstring($password, $db_enc))."', ".cnv_sqlstr(cnv_dbstring($comment, $db_enc)).") ;"; mysql_query($sql, $conn) or die("データ追加エラー"); ←このエラーが出ます。 echo "<p>追加されたデータのID:".mysql_insert_id($conn); } }

    • ベストアンサー
    • PHP
  • 現在PHPにてsessionを使用したフォームを作成しております。

    現在PHPにてsessionを使用したフォームを作成しております。 現在、PHPは初心者で勉強中ですが悩んでいるため、ご質問させていただきます。 ソースは下記の通りです。 /* contact.php ----------------------*/ <html> <body> <form action="confirm.php" method="POST" > コメント:<br /> <?php echo $_SESSION['error_comment']; ?> <textarea name="comment"><?php echo $_SESSION['comment']; ?></textarea> <input type="hidden" name="contact" value="<?php $contact; ?>" /> <input type="submit" name="submit" value="確認" /> </form> </body> </html> /* confirm.php ----------------------*/ <?php session_start(); $comment = htmlspecialchars($_POST['comment']); if (isset($_POST["contact"])) { if (empty($comment)) { $_SESSION['error_comment'] = "コメントを入力してください!"; } if (!count($contact)) { $_SESSION["comment"] = $comment; header("Location: contact.php"); exit; } } else { $msg = '編集しました。'; } <html> <body> <?php echo $msg; ?> </body> </html> としております。 上記の内容でテストをするとcomment欄に入力されないと「コメントを入力してください!」と表示されますが、入力(テストと入力)をして確認をすると onfirm.phpのページは表示されずcontact.phpのcomment欄にテストと表示されたままです。 入力された場合はconfirm.phpを表示されせるにはどうしたらよろしいのでしょうか? お分かりの方がいらっしゃいましたら、ご教授お願いします。

    • ベストアンサー
    • PHP
  • $error配列がUndefined indexに

    簡単な入力フォームを初心者用の本に沿って作成しているのですが、 入力フォームのチェックで$error配列を使う部分で、 nameがblankかどうか確認する部分で、なぜかnameがNotice: Undefined indexとなってしまいます。 お詳しい方、下記のコードを見て何か原因をお分かりになりますでしょうか? <?php session_start(); if(!empty($_POST)){ if($_POST['name']==''){ $error['name']='blank'; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Upload</title> </head> <body> <form action="" method="post" enctype="multipart/form-data"> <p>次のフォームに必要事項をご記入下さい。</p> <dl> <dt>ニックネーム<span class="required">必須</span></dt> <dd><input type="text" name="name" size="35" maxlength="255" value="<?php echo htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8'); ?>" /> <?php if ($error['name'] == 'blank'): ?> <p class="error">* ニックネームを入力してください</p> <?php endif; ?> </dd> </dl> </form> </body> </html>

    • 締切済み
    • PHP
  • PHP 問い合わせフォームの文字化け

    はじめまして。 会員648です。 Websiteを作成し、問い合わせフォームで 入力をHTML、チェック・確認画面、送信をPHPで 作成しました。 初心者なので、サイトでの作成事例をまねております。また文字化けは UTF&#65293;8を書けば良い ということも サイトにあったので、とりあえずそうしました。 しかし 他のHTMLは正常に表示しますが、HTMLの入力画面、PHPチェック画面 すべて  文字化けします。 入力画面は <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <form method="post" action="check.php"> ですが 文字化け表示となります。 内容確認画面は check.php で <?php // フォームデータが空の場合は処理終了 if (empty($_POST)) { echo "処理終了"; exit; } // セッションの開始 session_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> で始まります。 詳しくPHPを知りませんので、どこが問題なのか 教えていただけませんでしょうか。 なお、テスト環境は 自分のPCで Xampp をインストールして、htdocs 配下に すべての HTML, CSS, image,php を 置いております。 なにとぞ よろしくお願いいたします。

    • 締切済み
    • PHP
  • フォームへ値の渡し方について

    こんばんわ。 PHPの勉強をしています。 入力されたIDを元にDBから氏名をクエリし、テキストボックスへ表示させようとしていますが、テキストボックスの指定の仕方が分からず、行き詰っています。 各テキストフォームは<?php?>の中に記述しています。 初心者のため簡単にできることなのかもしれませんが、ご教授願います。 <form method="POST" action="hyouji.php"> ID: <?php if($_POST["ID"]){ $id = $_POST["ID"]; echo "<input type=text name=ID onChange = submit() value = '$id'>"; ECHO "YES"; }else{ echo "<input type=text name=ID onChange = submit()>"; ECHO "NO"; } ?> Name: <?php echo "<input size=28 type=text name=Name ><br>"?> /*上記、テキストボックスに値を入力*/ <input type=submit name=bottun1 value=入力> </form> <?PHP $host = 'localhost'; $user = 'root'; $pass = 'root'; $db = 'DB'; if($_POST["ID"]){ $id = $_POST["ID"]; $link=mysql_connect($host,$user,$pass) or die("接続エラー"); mysql_query("SET NAMES sjis") or die("can not SET NAMES sjis"); mysql_select_db($db,$link) or die("接続エラー"); $sql="SELECT * FROM test WHERE id = '$id'"; $res=mysql_query($sql,$link) or die("データ抽出エラー"); $rows = mysql_fetch_array($res,MYSQL_ASSOC); echo "<tr>"; echo "<td>".$rows["user_id"]."</td>"; echo "<td>".$rows["customer"]."</td>"; echo "</tr>"; mysql_close($link); }else{ echo "表示データはなし"; } ?> 以上、長文になりましたがよろしくお願いします。

    • ベストアンサー
    • PHP
  • 現在PHPの勉強をしています。初心者のためご教授いただければと思います

    現在PHPの勉強をしています。初心者のためご教授いただければと思います。 メールフォームを作成しており、エラーチェックで困っています。 簡単に流れを説明しますとフォーム画面で入力をしてもらったら確認画面へと移行します。 ここでエラーがあった場合、confirm.phpにてエラーチェックをし、form.phpに戻り、エラーがなければ確認画面にて入力した、項目が表示されるようにしたいと思っています。 ソースは下記のとおりになります。 form.php ---------------------- */ <html> <body> <form action="confirm.php" method="post"> 名前:<input type="text" name="name" value="" /<?php echo $errmsg['name'] ;?><br> 内容:<textarea name="comment" rows="5" cols="40"></textarea><?php echo $errmsg['comment'] ;?><br> <input type="hidden" name="contact" value="form" /> <input type="submit" name="submit" value="確認" /> </form> </body> </html> confirm.php ---------------------- */ <?php $name = $_POST['name']; $comment = $_POST['comment']; if(isset ($_POST['contact'])) { $errmsg = array(); if(empty($name)){ $errmsg['name'] = '未入力'; } if(empty($comment)){ $errmsg['comment'] = '未入力'; } if (count($errmsg) != 0) { header("Location: index.php"); exit; } } ?> <html> <body> 名前:<?php echo $name; ?><br /> 内容:<?php echo $comment; ?><br /> </body> </html> としております。 if (count($errmsg) != 0) { header("Location: form.php"); exit; 上記のようにするとエラーチェックの表示がされません。 require(form.php);にするとform.phpが表示されるのですがURLを見るとconfirm.phpの状態になっております。 header("Location: form.php");を使用してのエラーチェックをしたいのですが、どのように記述したらよろしいのでしょうか? 上記の内容でどなたかご教授いただけないでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • PHP