duangan1945 2015-12-11 10:01
浏览 38
已采纳

PHP表单提交信息两次

I have a perfectly working PHP form and until the other day it only submitted the results once to the database. I have not changed the code and suddenly it is submitting all results twice for an unknown reason. I've google it and can't find the issue. Here is my code:

<?php
$jinput = JFactory::getApplication()->input;
if(isset($_POST['submit'])) {
    $db = JFactory::getDbo();
    $query = $db->getQuery(true);
    $user = JFactory::getUser();
    $userID = $user->get( 'id' );
    $date = date("Y/m/d");
    $description = $jinput->get('description', null , null);
    $subsection = $jinput->get('subsection', null , null);
    $urgency = $jinput->get('urgency', null , null);
    $status = "Waiting Attention";
    $columns = array('userid', 'rdate', 'description', 'area', 'subsection', 'urgency', 'status');
    $values = array($userID, $db->quote($date), $db->quote($description), $db->quote($selected), $db->quote($subsection), $db->quote($urgency), $db->quote($status));
    $query
        ->insert($db->quoteName('#__website_issues'))
        ->columns($db->quoteName($columns))
        ->values(implode(',', $values));
    $db->setQuery($query);
    $db->execute();
    echo "<h4>Thank You! Issue Successfully Reported!";
}
echo "<table style='text-align:center;text-align:center;margin-left:41%;'>";
echo "<tr><td><h4>Report Website Issue</h4></td></tr>";
echo "<tr><td><form method='post'><select name='area'  onchange='this.form.submit()'>
<option value=''>Select Website Area</option>
<option value='General'>General</option>
<option value='Emails'>Emails</option>
<option value='Education'>Education</option>
<option value='Reviews'>Reviews</option>
<option value='Store'>Store</option>
<option value='Toolkit'>Toolkit</option>
<option value='Membership'>Membership</option>
<option value='Other'>Other</option>
</select></form>
</td></tr>";
echo "<form method='post'>";
$selected = $jinput->get('area', null, null);
echo "<tr><td><h5><center>Current Area Selected: $selected</center></tr></td></h5>";
if($selected == 'General') {
    echo "<tr><td><input type='text' name='subsection' placeholder='Subsection'></td></tr> ";
}
else if($selected == 'Emails') {
    echo "<tr><td><select name='subsection'>
    <option value=''>Select Email System</option>
    <option value='Contact Error'>Contact Emails</option>
    <option value='Notification'>Notifications</option>
    <option value='Newsletter'>Newsletter</option>
    <option value='Store'>Store Emails</option>
    </select></td></tr>";
}
else if($selected == 'Education') {
    echo "<tr><td><select name='subsection'>
    <option value=''>Select Subsection</option>
    <option value='Lighting'>Lighting</option>
    <option value='Sound'>Sound</option>
    <option value='Rigging'>Rigging</option>
    <option value='Stage Management'>Stage Management</option>
    <option value='Console Training'>Console Training</option>
    <option value='Video'>Video</option>
    <option value='Media & Projection'>Media & Projection</option>
    <option value='Church'>Church</option>
    </select></td></tr>";
}
else if($selected == 'Reviews') {
    echo "<tr><td><input type='text' name='subsection' placeholder='Specific Review'></td></tr> ";
}
else if($selected == 'Store') {
    echo "<tr><td><input type='text' name='subsection' placeholder='Store Area'></td></tr> ";
}
else if($selected == 'Toolkit') {
    echo "<tr><td><input type='text' name='subsection' placeholder='Specific Tool'></td></tr> ";
}
else if($selected == 'Membership') {
    echo "<tr><td><select name='subsection'>
    <option value=''>Select Membership Plan</option>
    <option value='Member'>Member</option>
    <option value='Student'>Student</option>
    <option value='Educator'>Educator</option>
    </select></td></tr>";
}
else if($selected == 'Other') {
    echo "<tr><td><input type='text' name='subsection' placeholder='Subsection'></td></tr> ";
}
echo "<tr><td><select name='urgency'>
<option value=''>Select Urgency</option>
<option value='Minor'>Minor</option>
<option value='Serious'>Serious</option>
<option value='Urgent'>Urgent</option>
</select></td></tr>";
echo "<tr><td><textarea rows='6' cols='50' name='description' placeholder='Please Describe The Issue'></textarea></td></tr>";
// Submit
echo "<tr><td><input type='submit' class='btnsubmit' name='submit' value='Submit Issue'>";
echo "</form></table><hr>";
?>
</body>

Thanks in advance!

  • 写回答

1条回答 默认 最新

  • donglun1918 2015-12-11 10:10
    关注

    Maybe you should redirect the user after inserting data, this way a page refresh would avoid inserting data again :

    <?php
    ...
    $db->setQuery($query);
    $db->execute();
    header('Location: '.$_SERVER['PHP_SELF']);
    exit();
    

    An other point is that you could disable form submission after first submission in js.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度