2013-11-22 31 views
1

我正在做一個向數據庫Mysql添加信息的項目。這裏是我們必須製作3個會議的表格,並且通過STEPS提供註冊和用戶註冊,並且這個會話保留記錄,如果我在步驟2,我可以在步驟1或步驟3中回滾和編輯某些內容這應該在會議中完成。我已經做出了一些事情,並且我希望得到你的幫助,告訴我我該如何繼續。我現在將發佈我的代碼。帶有會話的PHP HTML多步驟頁面

我知道代碼是Lame,但我現在正在學習。謝謝! 這是我註冊的第一步。我怎麼能繼續?

<?php 
session_start(); 
// $_SESSION 
$fname = ''; 
if (isset($_SESSION['user_fname']) && !empty($_SESSION['user_fname'])) { 
    $fname = $_SESSION['user_fname']; 
} 
$connection = mysql_connect("localhost","root",""); 
if (!$connection) { 
     die('Mysql Could not been established ' . mysql_error()); 
    } 
    else{ 
     $db_name = "phplab_course_project"; 
     mysql_select_db($db_name, $connection); 
     if(isset($_POST['submit'])){ 
      if($_POST['user_fname']!="" && $_POST['user_mname']!="" && $_POST['user_lname']!="" && $_POST['user_login']!="" && $_POST['user_email']!="" && $_POST['user_phone']!=""){ 
       $sql = "insert into users(user_fname, user_mname, user_lname, user_login, user_email, user_phone) 
       values('".$_POST['user_fname']."', '".$_POST['user_mname']."', '".$_POST['user_lname']."', '".$_POST['user_login']."', '".$_POST['user_email']."', '".$_POST['user_phone']."');"; 
       mysql_query($sql, $connection); 
       printf("The data is inserted id %d\n", mysql_insert_id()); 
      } 
     } 
    } 
?> 
<html> 
    <body> 
     <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
      <table> 
       <tr> 
       Лични данни<br> 
        <br><td>Firstname*</td> 
        <td> 
         <input type="text" name="user_fname" value="<?php echo $fname;?>" required /> 
        </td> 
        <td></td> 
       </tr> 
       <tr> 
        <td>Surname </td> 
        <td><input type="text" name="user_mname" /></td> 
        <td></td> 
       </tr> 
       <tr> 
        <td>Lastname* </td> 
        <td><input type="text" name="user_lname" required /></td> 
        <td></td> 
       </tr> 
       <tr> 
        <td>Username (login)* </td> 
        <td><input type="text" name="user_login" required /></td> 
        <td></td> 
       </tr> 
       <tr> 
        <td>Mail* </td> 
        <td><input type="text" name="user_email" required /></td> 
        <td></td> 
       </tr> 
       <tr> 
        <td>Phone </td> 
        <td><input type="text" name="user_phone" /></td> 
        <td></td> 
       </tr> 
       <tr> 
        <td></td> 
        <td><input type="submit" name='submit' value="Save"/></td> 
        <td></td> 
       </tr> 
      </table>   

     </form> 
    </body> 
</html> 
+1

你能使用JavaScript嗎?這將允許您輕鬆地完成3個步驟,無需在PHP會話中的頁面之間傳遞步驟信息,但這不是很好的解決方案。 – deb0rian

+0

是的你是對的。但在學校,他們希望通過會議和錯誤的方式來完成。不管怎麼說,還是要謝謝你。:) –

+0

你的學校也應該教你,表格不適合佈局。參見:http://stackoverflow.com/questions/17158611/twitter-bootstrap-two-column-layout-forform –

回答

1

這裏有一些提示:

  • 使一個單獨的函數或類的方法分別處理每個階段。有一些跟蹤哪些階段數據正在發送給您的方式 - 例如,您可以在每個表單中使用值爲stage1stage2stage3的隱藏輸入。這樣您就可以將輸入發送到相應的函數或類方法。

  • 商店僅在對話中,僅有階段之間的信息,並在數據庫中插入所有階段都是完整的,各個領域具有有效值

  • 插圖上的兩個後:

    Form1中 - > php腳本1 - >在會話中保存值 - >重定向到窗體2 - > php腳本2 - >保存到會話 - >重定向到窗體3 - > php腳本3 - >保存到會話 - >保存到數據庫並顯示成功消息

  • 把支票上的所有字段,如果它們存在的會話是這樣的:

    <input type="text" name="item" <?php if (isset($_SESSION['item']) echo 'value="' . htmlspecialchars($_SESSION['item'], ENT_QUOTES) . '"'; ?>/>

如果你回去(點擊瀏覽器後退按鈕),字段值默認保存,但如果您可以通過鏈接或重定向返回,使用此代碼,PHP將處理不會丟失值。

  • 您可以使用標誌在PHP中的哪個階段已經完成,看(即,如果沒有完成一個階段,你可以重定向他們回來。

  • 如果你曾經做過網上購物,你可以借用他們處理訂單處理方式的一些想法(用戶名/電子郵件 - >地址 - >信用卡信息 - >結帳)。你也可以去Magento online demo store,訂購一些東西,看看究竟是做了什麼,儘管它是用JavaScript實現的(這是一個演示,訂單沒有處理)

希望這些有助於。

乾杯。