预订活动页面

时间:2018-05-27 11:11:11

标签: oracle plsql oracle-apex

我需要设置一个用户注册活动的表单,但在执行此操作时,它会自动从数据库表中收集用户的数据,同时从事件表中获取信息并将其插入另一个表

2 个答案:

答案 0 :(得分:0)

您目前主要用于实现此目的的是什么?你在用PHP吗?如果是PHP,

如果您在要填写表单的任何用户上都有用户ID,那么您可以使用该用户ID从您需要的任何表中获取信息,并检索用户的信息。然后将它们放入PHP变量中供以后使用。知道哪个用户是哪个的唯一方法是使用会话。此会话可以是他们的用户ID,我将在此示例中介绍,只是因为它简单易用。

表格数据的处理可以通过带有post方法和提交按钮的经典表单标签来完成。您告诉表单应该发布到哪个页面。 它也可以由AJAX处理。

然后将这些帖子放入PHP变量中,或直接使用它们,但我个人更喜欢将它们放入变量中以便澄清。使用post变量直接在查询中看起来有点混乱,以及它涉及的安全风险。

它看起来像这样:

<?php
/*
Firstly we need our session (this should be set upon logging by using $_SESSION['userId'].
As mentioned before, I am using a user id as our session variable in this example.
*/

/*
Carry over the session. 
Use session_start() before anything else in a file to get the session of a user.
*/
session_start();

//Put session into a php variable

//mysql_ syntax:
$userId = mysql_real_escape_string($_SESSION['userId']);

mysqli_ syntax, with $conn being your database connection variable:
$userId = mysqli_real_escape_string($conn, $_SESSION['userId']);

mysqli_ syntax, with $conn being your database connection variable: 
$userId = mysqli_real_escape_string($conn, $_SESSION['userId'])
?>

现在剩下的就是构建我们的表单并发送数据。由于我个人更愿意处理另一个文件中的数据,而不是包含表单的文件,我们将告诉表单发布到另一个文件。该文件将包含我们的表单数据以及我们的用户数据。获取用户数据的方法是使用会话变量,该变量很容易就是用户ID(对每个用户都是唯一的)。我们可以通过使用带有用户id变量的隐藏输入字段将其与我们表单中的其他内容一起发布(仅作为示例)。

<!-- 
What we do here is make a form that that tells which page it is going to go to
on submit
-->
<form action="/another_page.php" method="POST">
   <!-- Our hidden input field, carrying the user id -->
   <input type="hidden" name="userId" value="<?php echo $userId; ?>" />

   What brand is your current car?:<br />
   <input type="text" name="carBrand" placeholder="Brand of your car" />

   Tell us a little about yourself:
   <textarea rows="4" cols="50" name="summary"></textarea>

   Rate your experience, 1-5:
   <select name="rating">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
      <option value="5">5</option>
   </select>
   <br /><br />

   <button type="submit" name="submitButton">Submit form!</button>
</form>

现在我们转到另一个文件来处理我们的数据,我们稍后会根据您的请求将其放入第二个表格。

<?php
//This is our POST variables from our form:
$userId = $_POST['userId'];
$car_brand = $_POST['carBrand'];
$summary = $_POST['summary'];
$rating = $_POST['rating'];

//Now to our SQL, to get there data of our user:

//Put SQL command into a variable
$sql = "SELECT * FROM name_of_user_table WHERE userId='$userId'";

//Put query into a variable with mysql_ syntax:
$result_set = mysql_query($sql);

//Put query into a variable with mysqli_ syntax:
//$conn still being your connection variable
$result_set = mysqli_query($conn, $sql);

//The rows in your table in mysql_ syntax:
$row = mysql_fetch_array($result_set);

//The rows in your table in mysqli_ syntax:
$row = mysqli_fetch_array($conn, $result_set);

/*
Now we can start using our data from the database, and store them into variables. 
The variables depends on your fields names in the database.
We basically have the data stored into an array,
where we need to tell the array exactly which index we'd like to use
(in this case which field we'd like to store into a variable).
*/

//Examples:
$variable1 = $row['name_of_field'];
$variable2 = $row['name_of_another_field'];
[...]
?>

现在剩下的就是使用变量将所有内容放入第二个表中。希望这会有所帮助:)

在将SQL命令发送到数据库之前使用预准备语句,或者至少清理输入以防止SQL注入也非常重要。

答案 1 :(得分:0)

马丁写了一个非常全面的答案;我不是说这是错的(我怎么可能?我不会说PHP);但是,由于OP将其标记为 Oracle Application Express (不是 PHP ),它可能不是最合适的。

无论如何:这看起来像一个简单的任务:如果通过按下按钮来完成对事件的注册(为什么不是?),你将创建一个完成剩余工作的过程。将其写入适当的流程属性,或创建一个收集数据和存储过程的存储过程。将其插入其他地方 - 在Apex流程中 - 调用该程序。