ユーザー入力フォームからデータベースにユーザー情報を追加しようとしています。フォームからのデータが認識されており、すべての入力の変数に対して印刷ステートメントをテストすると、情報が表示されます。ただし、挿入ステートメントを通過すると、最初の列データ (姓) が欠落し、他のすべてのデータが間違った列にプッシュされます。
姓は名の列に、名は連絡先の種類に、連絡先の種類は連絡先情報に、連絡先情報は市区町村に、コメントはどこにも表示されず、追加された日付は正しいです。
最も関連性の高いローカル コードを追加しましたが、一般的な機能が必要な場合は追加することもできます。下部にテーブル構造もあります。
ありがとう!
<html>
<head>
<title>Submitted Guestbook Info</title>
<link rel="stylesheet" type="text/css" href="css/king.css" />
</head>
<body>
<img src="images/KingLogo.jpg"><br>
<div id="guestlist">
<?php
include "king_common_functions.php";
//*******************************************************
//Variables for Guestbook Submissions
//*******************************************************
//*******************************************************
//Call Functions
//*******************************************************
setUserInfo();
?>
<?php
function setUserInfo()
{
//******************************************************
//Validate Input Fields, Define Variables
//******************************************************
$mycontact_type = $_POST['mycontact'];
$mycity = $_POST['city'];
if (isset($_POST['mylastname']))
{
$mylastname = trim($_POST['mylastname']);
} else {
$mylastname ='';
}
if (isset($_POST['myfirstname']))
{
$myfirstname = trim($_POST['myfirstname']);
} else {
$myfirstname ='';
}
if (isset($_POST['mycontactinfo']))
{
$mycontactinfo = trim($_POST['mycontactinfo']);
} else {
$mycontactinfo ='';
}
if (isset($_POST['comments']))
{
$mycomments = trim($_POST['comments']);
} else {
$mycomments ='';
}
$rtnmsg = doGuestValidation($myfirstname, $mylastname, $mycontactinfo, $mycity);
if ($rtnmsg == '')
{
$rtncode = insertData($db, $mylastname, $myfirstname, $mycontact_type, $mycontactinfo, $mycity, $mycomments);
} else {
$rtncode = '';
print $rtnmsg;
print '<br />Go <a href ="assignment_6_guest_calc.php">BACK</a> and try again!';
}
}
function insertData($mylastname, $myfirstname, $mycontact_type, $mycontactinfo, $mycity, $mycomments)
{
$mydate = date("Y-m-d");
$db = connectDatabase();
$statement = "insert into u1585_guestbook (lastname, firstname, contact_type, contact_info, city, comments, date_added)
values ('".$mylastname."', '".$myfirstname."', '".$mycontact_type."', '".$mycontactinfo."', '".$mycity."', '".$mycomments."', '".$mydate."')";
$result = mysql_query($statement);
print "TEST: $mylastname"
if ($result)
{
print "<h4>Thank You! A representative will contact you soon.</h4>";
print "Information Submitted for: ".$myfirstname." ".$mylastname;
print "<br/><br/>Your name ".$mycontact_type. " is " .$mycontact_info;
print "<br/>and you are interested in living in ".$mycity;
print "<br/><br/>Our representative will review your comments below:";
print "<br/><br/><textarea name='comments' rows='7' cols='60' disabled='disabled' class='textdisabled'>";
print $mycomments;
print "</textarea>";
} else {
$errno = mysql_errno($db);
if ($errno == '1062') {
echo "<br>User is already in Guestbook: <br />".$mylastname.", ".$myfirstname;
} else {
echo("<h4>MySQL No: ".mysql_errno($result)."</h4>");
echo("<h4>MySQL Error: ".mysql_error($result)."</h4>");
echo("<h4>SQL: ".$statement."</h4>");
echo("<h4>MySQL Affected Rows: ".mysql_affected_rows($result)."</h4>");
}
return 'NotAdded';
}
}
?>
</div>
</body>
</html>
テーブル構造:
CREATE TABLE u1585_Guestbook (
guest_id int(11) NOT NULL AUTO_INCREMENT,
lastname varchar(40) NOT NULL,
firstname varchar(30) NOT NULL,
contact_type varchar(30) NOT NULL,
contact_info varchar(40) NOT NULL,
city varchar(40) NOT NULL,
comments varchar(200) NOT NULL,
date_added date NOT NULL,
PRIMARY KEY (guest_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;