0

我想要做的是在从下拉列表中选择一个项目时更改图像。这是表格的一部分,因此我无法更改值。但是,选项值是行 ID,该行也将包含图像的目标。但是因为目标“文件”是在循环之外调用的,所以它不会触发。

我读到我必须先在循环中调用它,但不能让它工作。你能看看下面的代码并给我一个提示吗?

谢谢

    <?php

include ("conned-db.php");

$result = mysql_query("SELECT * FROM gallery") 
or die(mysql_error());  

echo "<select id='gallery_id' name='gallery_id' style='width:200px;' >";


while($row = mysql_fetch_array( $result ))
{
echo '<option value=' . $row['id'] . '>';
echo $row['gallery_name'];
echo '</option/>';
}
echo "</select>";
echo "</td>";
echo "<td colspan='2' rowspan='2'>";
echo '<img src=' .$row['file']. '/></td>';

    ?>
4

3 回答 3

2

试试这个,我想这就是你要找的

如果你想做这样的事情,你必须使用 Ajax。在这里,您可以找到帮助您了解 Ajax 的链接。

http://www.w3schools.com/php/php_ajax_database.asp

笔记:

如果您希望它只是没有 Javascript 的 PHP,则必须牺牲“不得刷新”约束,因为提交表单的唯一方法是按下按钮并提交内容。

于 2012-04-17T04:33:18.863 回答
1

这也应该有效。如果图像的文件位置在您使用 ajax 加载页面时可用,则不是必须的。如果您需要再次查询服务器以检索所需的文件位置,则必须使用 ajax。以下代码假定您在加载页面时拥有下拉列表中每个项目的图像位置。

<select id='gallery_id' name='gallery_id' style='width:200px;' 
  onchange='document.getElementById("image").src=this.options[this.selectedIndex].title' >
 <?php
 while($row = mysql_fetch_array( $result ))
 {
  ?>
   <option value='<?php echo $row["id"]; ?>' title='<?php echo $row["file"]; ?>'> 
        <?php echo $row["gallery_name"]; ?>
   </option>
  <?php
  }
  ?>
<img id="image" />
于 2012-04-17T04:38:18.040 回答
0

这是一个实现 java scrip 和 php 的简短示例,其中我根据选择中的 id 更新图像的 src,您可能希望使用基于该 id 的特定 src 进行更改

<?php

    include ("conned-db.php");
    $item = $_GET["imageid"];
    if ($item == "")
    {
        $item = 1;
    }

    $result = mysql_query("SELECT * FROM gallery") 
    or die(mysql_error());  
   ?>
    <select id='gallery_id' name='gallery_id' onChange="window.location='file.php?imageid='+this.value" style='width:200px;' >
    <?

    while($row = mysql_fetch_array( $result ))
    {
    echo '<option value=' . $row['id'] . '>';
    echo $row['gallery_name'];
    echo '</option/>';
    }
  ?>
    </select>
    </td>
<?
    echo "<td colspan='2' rowspan='2'>";
?>
    <img src=' <?=$item?> '/></td>
于 2012-04-17T04:35:51.037 回答