0

我创建了一个照片竞赛,当用户在照片中看到自己时,他们点击(我在这张照片中)标注。

这会弹出一个表格供他们填写。我从表格中收集数据并将其保存到数据库中没有问题。

我的问题是我需要能够参考他们所在的照片。

首先,我需要将照片名称/ID 从第一页传输到第二个弹出的竞赛报名表页面,然后我需要能够将两者都保存到数据库中。

有什么建议么?我尝试使用会话变量将照片名称/ID 从第一页调用到第二页。

任何帮助将不胜感激。


更新代码:

第 1 页:照片库示例。尝试隐藏表单字段来调用数据,但显然它不会从这些隐藏字段中调用照片信息。

<li>
<a class="thumb" name="007" id="007" href="images/9133440_DSC_0087.jpg" title="Title #6"><img src="images/9133440_DSC_0087_thumb.jpg" alt="Title #6" /></a>
</li>
</ul>
</div>

<div id="inphoto">

<a href="#" onclick="wopen('compentry.php?imageid=<?php echo $imageID; ?>', 'popup', 448, 590); return false;"><img src="assets/inphotobutton.jpg"></a>

</div>

第 2 页:带有表格的竞赛报名页面。

<div id="form">

<form name="epcomp" id="epcomp" method="GET" action="form.php" >

<p class="name"><label>Full Name:</label><br/> <input type="text" name="name" id="name" value="Your Name" onblur="if(this.value == '') { this.value='Your Name'}" onfocus="if (this.value == 'Your Name') {this.value=''}" maxlength="30" required/></p>

<p class="email"><label>Your Email:</label><br/> <input type="email" name="email" id="email" value="Your email" onblur="if(this.value == '') { this.value='Your email'}" onfocus="if (this.value == 'Your email') {this.value=''}" maxlength="60" required /> </p>

<p class="entry"><label>Your favourite festival moment: <span style="font-size:10px;">(Max 50 words)</label> <br/> 

<p><textarea cols="40" rows="5" name="entry" id="entry" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" maxlength="50" required>Enter you answer here...</textarea></p>

<p class="button"><input class="button" type="submit" value="Enter Competition" name="formSubmit"/></p>

<?php echo '<input type="hidden" name="photoId" value="' . $_GET['imageID'] . '">' ?> 

</form>

第 3 页:我的表单数据页。

$imageID = $_GET['imageID'];
$varName = $_GET['name'];
$varEmail = $_GET['email'];
$varEntry = $_GET['entry'];

$query = "insert into comp_entry (imageID, name, email, entry) values ('$imageID' , '$varName' , '$varEmail' , ' $varEntry')";

$qresult = mysql_query($query);
4

1 回答 1

0

input标签中没有值。

<form method="POST" action="compentry.php" onClick="wopen('compentry.php', 'popup', 448, 590); return false;">

<input type="hidden" name="photoName">
<input type="hidden" name="photoID">
<input type="image" src="assets/inphotobutton.jpg" name="submit" value="" class="submit" alt="Submit">
</form>

您可以:

  1. 插入一个获取值<form method="POST" action="compentry.php?imageid=<?php echo ...; ?>"并以第二种形式检索它
  2. <input type="hidden" name="photoId" value="...">使用(您忘记了value标签)插入一个帖子变量。

在您的示例中使用 POST 是不可能的,因为您没有提交按钮。而不是<input type="image"你需要input type="submit". 但是提交不会打开另一个窗口,因此您需要以其他方式传递变量。

因此,我将保留第一个选项,<form>但是不需要,所以使代码如下:

<a href="#" onclick="wopen('compentry.php?imageid=<?php
  echo $imageID; // here goes PHP code
?>', 'popup', 448, 590); return false;">Click to open form</a>

在比赛表格中,您可以使用$_GET['imageid'].

编辑

你需要决定如何实现你的目标。如果您使用form,您可以通过 get 或 post 方法传递参数。但是,您也可以使用将变量放入 URL 的 get 方法传递变量。

因为第二种方法更简单,我告诉你删除整个标签并通过在标签事件form中调用这个站点来传递你的图像ID ,但你可以选择你喜欢的任何标签(我建议从你的第一条评论中使用它)。aonclickdiv

当我在此行中打开页面时,此调用正在完成onclick="wopen('compentry.php?imageid=***', 'popup', 448, 590);,您需要在其中***插入图像 ID。我提出了 PHPecho函数,这就是它通常的做法。

您的第一页不需要更多。单击该元素将弹出并向 compentry.php 发送请求,并通过 get 方法传递 imageid 变量。如果您制作一个表单,方法 get,action compentry.php,隐藏input字段“imageid”值,情况也是如此。您可以看到调用 URL compentry.php?imageid=比所有这些form东西要简单得多。

就是这样——当您准备好后,您必须对弹出页面进行编码。这是您的第二条评论。此图像 ID 将由 检索$_GET["imageid"]。所以如果这也是一个有很多字段的表单,这里推荐使用post方法(不是get)。

所以这条线

<input type="hidden" name="photoId" value="photoID">

应该看起来(在 PHP 中)类似于

echo '<input type="hidden" name="photoId" value="' . $_GET['imageid'] .'">

您需要将您从第 1 页获得的图像 ID 放到第$_GET["imageid"]2 页的 HTML 中,以便您可以将其进一步发送到最后一页。

概括

  1. 照片库使用<div onclick="wopen('compentry.php?imageid=***', 'popup', 448, 590);">. 标记 的代码***由 PHP 插入并包含图像 ID。
  2. 用户点击这个 div,JavaScript 工作,打开新的弹出窗口,浏览器说:请把这个页面的内容发给我compentry.php?imageid=***
  3. 服务器打开您的 compentry.php,绘制一个<form action="form.php" method="post">(或者如果您愿意,可以获取)
  4. 它在需要的地方绘制 HTML <input type="hidden" name="imageid" value="####">,在该地方服务器(实际上是 PHP)将从图片库接收到echo的内容中的内容。$_GET['imageid']
  5. 用户单击提交按钮并提交表单。在他输入的变量中,有一个隐藏imageid的,名称相同(可能有不同,没问题),但与照片库中的值相同。
  6. 文件 form.php 接收所有变量作为新变量。
于 2013-05-20T12:12:57.120 回答