第一次发布,PHP不是我最擅长的领域,所以这里...

下面的代码根据在数据库表中找到了多少个值生成了一个按钮列表,然后应该在单击按钮时触发第二段代码。 一切正常,除了第二段代码仅对最后生成的按钮有效。 有任何想法吗?

<?php
$username = $_SESSION['sess_user'];

$con=mysql_connect('localhost','root','root') or die(mysql_error());
mysql_select_db('user_registration') or die("cannot select DB");

$loop = mysql_query("SELECT * FROM `vaults` WHERE username = '$username' ORDER BY vaultname asc") or die ('Error Getting User Data! <br />' .mysql_error());
$chk = mysql_num_rows($loop);

$myvalue = '';
while ($row = mysql_fetch_assoc($loop)) {
$myvalue = "{$row['vaultname']}";
echo '<form method="post"><input class="text-center" type="submit" name=' . $myvalue . ' value=' .     $myvalue . ' id="vaultSelecter"></form>';
}
?>

<?php
if(isset($_POST[$myvalue])){
echo '<script type="text/javascript">window.onload = function() {     document.getElementById("instructions").innerHTML = " HELLO WORLD! "; }</script>';}
?>

谢谢大家的答复,我非常感谢。 我知道每个人都在说什么,但是我在getELementByID()中引用的ID是与按钮分开的DIV,当我单击任意一个按钮时,我想用ID“指令”更改单个DIV的内容,但它仅适用于循环创建的最后一个按钮。 那仍然是由于我的按钮ID已确定的方式吗?

例如,上面的循环创建了三个按钮,我希望每个按钮使用“ Hello Word”更改以下DIV的内容。

<div id=instructions>
 replace this text
</div>

我猜我必须将循环创建的每个$ myvalues存储到数组中,以便可以将每个值分别分配给每个按钮,我只是不知道该怎么做。

#1楼 票数:1

您正在此行中复制ID:

echo '<form method="post"><input class="text-center" type="submit" name=' . $myvalue . ' value=' .     $myvalue . ' id="vaultSelecter"></form>';

并且ID必须是唯一的。 尝试类。 例如:

var elems = document.getElementsByClassName("text-center");
for (var i = 0; i < elems.length; i++) {
    console.log('x')
    elems[i].addEventListener('click', function () {
        alert('hello');
    }, false);
}

#2楼 票数:0

您要将多个输入分配给相同的id ,而是将它们分配给一个class因为id必须是唯一的。

您还正在为每个按钮创建一个表单,这对我来说似乎毫无意义,请尝试以下操作:

echo '<form method="post">';
while ($row = mysql_fetch_assoc($loop)) {
    $myvalue = "{$row['vaultname']}";
    echo '<input class="text-center vaultSelecter" type="submit" name=' . $myvalue . ' value=' .     $myvalue . '>';
}
echo '</form>';

名为vaultSelector的ID现在是一个类,因此可以通过getElementByClassName()进行访问

#3楼 票数:0

代替这个:

name=' . $myvalue . ' value=' .     $myvalue . ' id="vaultSelecter"

也许尝试

name="' . $myvalue . '" value=' .     $myvalue . ' id="' . $myvalue . '"

在我看来,最好唯一地标识将用作编程元素的任何元素。

只是另一条未经请求的意见。 如果您可以将所有内容组合成一种形式,则可能会使事情变得更容易。 因此,当按钮提交时,设置一个隐藏字段并继续提交表单。

  ask by RedSquirrell translate from so

未解决问题?本站智能推荐:

3回复

通过数组中的循环生成“选择输入”

我有以下数组: 我想知道如何通过循环生成这些“选择输入”及其选项吗?
1回复

如何为PHP中的电子邮件收件人创建有效的循环脚本(使用PHPMailer)

我想为数据库中注册的2000个电子邮件地址建立一个电子邮件传递系统。 我遇到了错误的循环问题。 这样1个收件人可以收到多封电子邮件。 请帮忙,谢谢 这是一段脚本:
1回复

mysql while循环的最后一个值

例如,我有这个while循环并给出4个值: 问题 :我不希望在最后的$ get ['anything']值之后显示类分隔符。 我该怎么做 ?
1回复

while循环在一个PHP

使用事件构建日历。 我已经构建了日历,现在尝试将事件添加到相应的日期。 试图使它成为事件显示在右表中。 到目前为止,此代码仅显示一个事件。 我猜这个问题是在for中加入一个while循环。 就像我一样: if(mysql_num_rows($ wqry)> 0){
2回复

如何判断是否是while循环中的最后一个?

例如iOS推送程序 我认为在while循环之后做同样的事情并不酷。 所以我想减少#1块。 如果使用fetchAll()和foreach,则判断循环中的最后一个很容易。 但是将大量的所有结果数据转换为数组并保持正在增加php内存。 谁能知道很酷的方法? 对不起,英
1回复

如果最后一个值不同,如何在循环内分离结果

我想回显表中的所有值,并在与上一个不同时将其分开。 例如 目前,我正在将最后一个回声值编译为当前值,但问题是值之一是else语句内的回声,这会导致难以计算相同的值。 为了清楚起见,如果更改的值与上一个值不匹配,我将从db中获取值,但是我仍然需要它来回显它,否则该值将被跳过。 我需要
2回复

PHP:循环在最后求值但并不总是运行一次?

好的,所以我知道“ while”循环在开始时求值,因此并不总是运行,而“ do while”循环在结尾时求值并因此总是运行,但是如果我想要一个组合,该怎么办:循环在结束但并不总是运行? 没有一些效率很低的代码,我看不到做到这一点的方法,例如: ...当我真正想要的是第一个“ while
3回复

循环时从php生成数组

我想运行一个while(或任何)循环来输出一个小的日期列表作为数组 这适用于打印,但我想将其保存为数组(并将其插入mysql数据库)。 是! 我不知道我在做什么。