2012-04-17 105 views
0

我想要做的就是当从下拉菜单中选择一个项目时更改图像。这是表格的一部分,所以我不能改变价值。但是,选项值是行ID,该行还将包含图像的目标。但是因为目标'文件'在循环之外被调用,所以它不会被触发。通过php下拉菜单更改图像

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

感谢

<?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>'; 

    ?> 
+0

您必须将表单提交给服务器,以便select中的值在php中可用(它是服务器端语言)。或使用JS \ AJAX – 2012-04-17 04:27:02

+0

你需要一些JavaScript来做到这一点。 – hjpotter92 2012-04-17 04:28:36

+0

@Dagon我不认为他需要它在一个表格内,他只是想根据选择动态图片显示。 – hjpotter92 2012-04-17 04:29:39

回答

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" /> 
+0

Right on,thanks MiniduM – 2012-04-17 04:43:22

2

试试这个,我认为这是你正在寻找

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

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

注:

如果你希望它是没有JavaScript只有PHP,你将不得不牺牲了“不能刷新”约束,作为提交表单的唯一途径是按按钮并提交内容。

+0

好的,谢谢你的信息,我以为我必须用AJAX来做这件事,只是希望没有它就能逃脱。 – 2012-04-17 04:35:29

+0

这就是我在笔记中提到的。如果你不想使用Ajax,那么你应该通过提交表单来重新加载页面。而不是$ row ['file']将$ _POST ['gallery_id']和$ row ['id']放置为$ row ['file'] – 2012-04-17 04:37:36

0

这里是我更新基于从选择ID的图像的src时,您可能希望根据该ID与特定的SRC来改变它实现java的纸片和PHP一个简单的例子

<?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>