1

当单击将进行 mySQL 查询的 php 文件时,我想让图片发送与该图像相关的特定值。

例如,假设我有一个动物图片的 HTML 页面,当单击特定的动物图片(比如猫的图片)时,它会将其作为要分配给变量的值发送,然后将其放入 MySQL 查询中将从包含猫、狗、马等的动物数据库中提取不同品种的猫。

因此,在 HTML 页面中,animals.html,我正在使用以下代码创建图像:

//animals.html
<form action="animalQuery.php" method="get"> <input type="image" src="Cat.jpg" name="cats" width="350" height="225">
<form action="animalQuery.php" method="get"> <input type="image" src="Dog.jpg" name="dogs" width="350" height="225">

单击 Cat.jpg 图像时,我想将值“cats”发送给 $animal 变量,这样它基本上使下面的 $stmt 等同于“select * from Animals whereberries = 'cats';”,即一个工作查询。

//animalQuery.php
$animal=$_GET["cats"]; 
$stmt="select * from Animals where breeds =  $animal;";

如果我用“cats”或“dogs”的值硬编码 $stmt 来代替变量 $animal,它就可以工作,所以我知道 Query 有效。我只是无法弄清楚单击时如何让图像将我想要的特定值发送到该变量 $animal。一旦我弄清楚这一点,我应该能够弄清楚如何在单击多个图像之一时将单个变量 $animal 设置为某个值,以便一个变量适用于所有图像。

4

4 回答 4

2

为什么要为如此简单的事情提供完整的表格?

<a href="animalQuery.php?animal=cat"><img src="..." /></a>
<a href="animalQuery.php?animal=dog"><img src="..." /></a>
于 2012-12-04T20:19:57.233 回答
0

在表单中,为按钮指定相同的名称,并捕获 PHP 中的值。你可以这样做:

<form action="animalQuery.php" method="get"> 
 <input type="image" src="Cat.jpg" name="animal" value="Cat" width="350" height="225">
 <input type="image" src="Dog.jpg" name="animal" value="Dog" width="350" height="225">
</form>


<?php 
//Set the possible values
$animals = array( "Cat", "Dog");
//Check if the form is submitted and set the value if the value exists
$animal = isset( $_GET['animal']) && 
          in_array( $_GET['animal'], $animals)? $_GET['animal'] : "Not chosen";
于 2012-12-04T20:14:12.230 回答
0

解决您的问题的另一种方法可能是用链接替换您的输入。例如:

<a href="animalQuery.php?animal=cats"><img src="Cat.jpg" width="350" height="225" /></a>
<a href="animalQuery.php?animal=dogs"><img src="Dog.jpg" width="350" height="225" /></a>

然后,您可以更新 animalQuery.php 以像这样工作:

$animal=$_GET['animal'];

您可以在此页面上看到一个示例:

https://stackoverflow.com/tags

您会看到每个标签都是一个链接,而不是输入字段:

<a href="/questions/tagged/c%23" class="post-tag" title="show questions tagged 'c#'" rel="tag">c#</a>
...
<a href="/questions/tagged/java" class="post-tag" title="show questions tagged 'java'" rel="tag">java</a>
...
<a href="/questions/tagged/php" class="post-tag" title="show questions tagged 'php'" rel="tag">php</a>

最后,您应该查看 MySQLi 或 PDO 库以编写 SQL。如果有人要访问此页面:animalQuery.php?animal=cats UNION SELECT * FROM information_schema.tables,那么他们可能会入侵您的网站。

于 2012-12-04T20:20:17.050 回答
0

不久前我遇到了类似的问题,它的出现是因为某些浏览器将图像坐标作为值发送,而不是您指定的实际值。解决该特定问题(如果必须使用图像输入)的最简单方法是包含隐藏值。

<form action="animalQuery.php" method="GET">
    <input type="hidden" name="animal" value="cat" />
    <input type="image" src="Cat.jpg" />
</form>

然后检索animalQuery.php文件中的值。

<?php
$animal = $_GET['animal'];
$stmt = "select * from Animals where breeds = '$animal';";
?>
于 2012-12-04T20:25:44.593 回答