在stockoverflow上的Hello社区!
我正在开发一个用于在MySQL数据库中的表中收集简单数据的表单 我在php语言方面相当新,这意味着我很可能误解或忘记了什么。
我的php表单代码存在问题。它在我的MySQL数据库中两次添加相同的行。有人知道代码有什么问题吗?
add_shortcode('map_location_report','map_location_report_form');
function map_location_report_form()
{
global $wpdb;
$this_page = $_SERVER['REQUEST_URI'];
$page = $_POST['page'];
if ( $page == NULL )
{
echo '<form method="post" action="' . $this_page .'">
<div class="formfield-report" id="formfield-report-firstname">
<label for="first_name" id="first_name">Navn: </label>
<input type="text" name="first_name" id="first_name" />
</div>
<div class="formfield-report" id="formfield-report-lastname">
<label for="last_name" id="last_name">Efternavn: </label>
<input type="text" name="last_name" id="last_name" />
</div>
<div class="formfield-report" id="formfield-report-locationtype">
<label for="report_type " id="report_type ">Rapport type: </label>
<select name="report_type " />
<option value="sigtmelding" selected>Sigtmelding</option>
<option value="fangstrapport">Fangstrapport</option>
<option value="jagtomraade">Jagtområde</option>
</select>
</div>
<div class="formfield-report" id="formfield-report-latitude">
<label for="location_latitude" id="location_latitude">Breddegrad: </label>
<input type="text" name="location_latitude" id="location_latitude" />
</div>
<div class="formfield-report" id="formfield-report-longitude">
<label for="location_longitude" id="location_longitude">Længdegrad: </label>
<input type="text" name="location_longitude" id="location_longitude" />
</div>
<input type="hidden" value="1" name="page" />
<div id="formfield-report-button">
<input class="btn btn-default submit-form-button" type="Submit" />
</div>
</form>';
}
elseif ( $page == 1 )
{
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$report_type = $_POST['report_type '];
$location_latitude = $_POST['location_latitude'];
$location_longitude = $_POST['location_longitude'];
$page_one_table = 'maplocationreports';
$page_one_inputs = array
(
'first_name' => $first_name,
'last_name' => $last_name,
'report_type ' => $report_type ,
'location_latitude' => $location_latitude,
'location_longitude' => $location_longitude,
'page' => $page
);
$insert_page_one = $wpdb->insert($page_one_table, $page_one_inputs);
echo '<h3>Mange tak for dit bidrag!</h3>';
echo '<p>Der er sat stor pris på at du har taget dig tid til at registrere et punkt på kortet!</p>';
}
};
CREATE TABLEmaplocationreports (
id INT( 7 ) NOT NULL AUTO_INCREMENT,
first_name VARCHAR( 50 ) NOT NULL,
last_name VARCHAR( 50 ) NOT NULL,
report_type VARCHAR( 20 ) NOT NULL,
location_latitude VARCHAR( 12 ) NOT NULL,
location_longitude VARCHAR( 12 ) NOT NULL,
page INT( 1 ) NOT NULL,
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ( id )
)
如果您发现任何错误,请告诉我。我非常感激!
提前致谢!
答案 0 :(得分:1)
您需要移动代码以处理短代码之外的表单。短代码应用于控制屏幕上显示的内容。通过分离这两个责任,您的问题应该得到解决。仅因为内容仅显示一次并不意味着您的短代码仅使用一次。其他代码可以与之交互。
让我们举例说,我想为页面生成元描述标签。我可能会将你的帖子内容减少到一定的长度,但在我这样做之前,我想要确保所有的短代码都已经运行并转换成他们的输出。通过这样做,当您只期望它发生一次时,您的短代码会在DB中插入一行。