首页 > 解决方案 > 使用 PHP 处理 HTML 表单数据的建议 - 可能还有 Python?

问题描述

我正在使用 PHP 制作一个非常简单的 HTML 表单。我想要执行的表格:

  1. 给用户的电子邮件输入(完成)
  2. 导出到 SQL 数据库(我已经设置了数据库)
  3. 在页面上显示输入并可选择将结果下载为 .csv 和 .pdf

另一个问题,最佳实践是什么:

  1. 将 .php 文件上传到 FTP 服务器(或)
  2. 在 HTML 文件中编写 php 脚本?

最后,用 Python 编写 php 脚本会更容易吗?

这是php代码:

    <?php
$date = $_POST['date'];
$client = $_POST['client'];
$session = $_POST['session'];
$session_type = $_POST['session_type'];
$progress = $_POST['progress'];
$previous_session = $_POST['previous_session'];
$verbal = $_POST['verbal'];
$body_language = $_POST['body_language'];
$mood = $_POST['mood'];
$objective = $_POST['objective'];
$assessment = $_POST['assessment'];
$goals = $_POST['goals'];
$quotes = $_POST['quotes'];
$summary = $_POST['summary'];

$formcontent="Client name: $client \n
Date: $date \n
Meeting: $session \n
Session type: $session_type \n
Progress: $progress \n
Previous session: $previous_session \n
Verbal: $verbal \n
Body language: $body_language \n
Mood: $mood \n
Objective: $objective \n
Assessment: $assessment \n
Goals: $goals \n
Client quotes: $quotes \n
Summary of session: $summary";
$recipient = "maryknauth@mac.com";
$subject = "Case notes for $client on $date";
$mailheader = "From: mySportPsych Admin \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Thank You, the case notes submitted have been emailed to $recipient and are also listed below:\n
Client name: $client\n
Date: $date\n
Meeting: $meeting\n
Session type: $session_type\n
Progress: $progress\n
Previous session: $previous_session\n
Verbal: $verbal\n
Body language: $body_language\n
Mood: $mood\n
Objective: $objective\n
Assessment: $assessment\n
Goals: $goals\n
Client quotes: $quotes\n
Summary of session: $summary";?>

这是 HTML 表单:

        <form action="case_notes.php" method="post">
     <h4 class="text-form-section">Overview</h4>
        <hr class="style-hr">
     <!-- Date -->  
    <label for="date" class="label">Date</label>
        <br>
    <input name="date" type="date" class="input-text" id="date">
        <br>
<!-- Client --> 
    <label for="client" class="label">Client</label>
        <br>
    <input name="client" type="text" class="input-text" id="client">
        <br>
<!-- Session -->
<!-- Is this supposed to be a number? -->
    <label for="session" class="label">Session</label>
        <br>
    <input name="session" type="text" class="input-text" id="session">
        <br>
<!-- Type of Session -->
    <label for="session_type" class="label">Session Type</label>
        <br>
        <select name="session_type" id="session_type">
            <option value="null"></option>
            <option value="free">Free Consultation</option>
            <option value="initial">Initial Consultation</option>
            <option value="regular">Regular Consultation</option>
            <option value="termination">Termination</option>
            <option value="other">Other</option>
        </select>   
        <br>

<!-- Progress -->
    <label for="progress" class="label">Progress</label>
        <br>
        <select name="progress" id="progress">
            <option value="null"></option>
            <option value="very_good">Very Good</option>
            <option value="good">Good</option>
            <option value="none">No Progress</option>
            <option value="regression">Regression</option>
        </select>   

      <br>
        <br>
<!-- Previous session review -->    
    <label for="previous_session" class="label">Previous session review</label>
        <br>
    <input name="previous_session" type="textarea" class="input-text" id="previous_session" rows="5" cols="30">
        <br>
 <!-- Subject Review -->
    <div class="subject review">    
    <h4 class="text-form-section">Subject</h4>
        <hr class="style-hr">
    <label for="verbal" class="label">Verbal</label>
        <br>
    <input name="verbal" type="textarea" class="input-text" id="verbal" rows="5" cols="30">
        <br>
    <label for="body_language" class="label">Body Language</label>
        <br>
    <input name="body_language" type="textarea" class="input-text" id="body_language" rows="5" cols="30">
        <br>
    <label for="mood" class="label">Mood</label>
        <br>
    <input name="mood" type="textarea" class="input-text" id="mood" rows="5" cols="30">
    </div>
    <h4 class="text-form-section">Session Review</h4>
        <hr class="style-hr">
    <label for="objective" class="label">Objective</label>
        <br>
    <input name="objective" type="textarea" class="input-text" id="objective" rows="5" cols="30">   
        <br>

    <label for="assessment" class="label">Assessment</label>
        <br>
    <input name="assessment" type="textarea" class="input-text" id="assessment" rows="5" cols="30">
        <br>

    <label for="goals" class="label">Goals</label>
        <br>
    <input name="goals" type="textarea" class="input-text" id="goals" rows="5" cols="30">
        <br>

    <label for="quotes" class="label">Client Quotes</label>
        <br>
    <input name="quotes" type="textarea" class="input-text" id="quotes" rows="5" cols="30">
        <br>

    <label for="summary" class="label">Summary</label>
        <br>
    <input name="summary" type="textarea" class="input-text" id="summary" rows="5" cols="30">
        <br>
        <br>

    <input type="submit" class="button">

</form> 

标签: phpmysqlformsvalidationexport

解决方案


  1. 我无法<input> field for Email在您的表格中看到任何内容。要向用户发送电子邮件,您应该通过表单从用户那里收到电子邮件地址。正确的?recipient此外,您在函数中使用了您的电子邮件地址mail()。在表单中添加电子邮件字段后,不要忘记在分配到mail().

  2. 我假设您需要将表单数据插入数据库。为此,您应该使用 PHP 创建一个数据库连接,并使用 SQL 查询将其插入到数据库表中。

  3. 在页面上显示数据很简单,我可以将其与您的其他问题联系起来Write the PHP script in the HTML file?。您不能在 HTML 文件中运行 PHP 脚本,但反之亦然。您可以在 PHP 脚本中编写 HTML!因此,您可以将上述两个文件合并到一个 PHP 文件中,或者您可以将表单拆分为 HTML 文件,并在 PHP 文件中处理请求,并将表单数据输出到表中(在插入数据库、邮件等之后)。

用 Python 编写 PHP 脚本会更容易吗

不,您不能在 python 文件中编写 PHP,或者您的意思是是否应该用 Python 编写。这完全取决于你。我会说 PHP 更容易开始,但更难掌握。所以做正确的基础,清楚地理解概念。此外,清楚地了解相关技术(HTTP、Mail)及其工作原理。

最后,慢慢来,缓慢而稳定地积累知识。

以下链接将帮助您了解:

PHP MySQL 简介

PHP MySQL 插入

PHP 表单处理


推荐阅读