当重新加载包含mysql数据表的页面时,它应该转到表的特定部分


when reloading page containing a table with mysql data, it should go to a specific part of the table

所以我的表每行包含一个按钮。按钮的目的是在点击某一行时更新该行。我必须重新加载整个表来做到这一点(SELECT * FROM表)。

我的问题是,表是如此之长,当你重新加载页面,你必须向下滚动,看看是否如何行被更新。我想在页面重新加载时滚动到一个特定的提交按钮。

我可能想使用javascript,但我是新的。我已经看到ajax功能在这个链接,但我似乎无法实现它,因为我不知道如何检索值从php文件到html。但我可以做反之亦然,(例如xmlhttp.open("GET","updatedb.php?q="+str+"&s"=+str2,true);)更新值从MYSQL表没有重新加载页面?

if (isset($_POST['lvl'] && isset($_POST['$poke_ID']))
{
   // increment the lvl to +1
   //update the database
}
....
//SELECT ALL
....
while($row = mysqli_fetch_array($result)) {
  $lvl= $row['lvl'];
  $poke_ID = $row['ID'];
  echo "<tr>";
  echo "<td>" . $row['trainer'] . "</td>";
  echo "<td>" . $row['skills'] . "</td>";
  echo "<td>" . $row['strength'] . "</td>";
  echo "<td>" . $row['weakness'] . "</td>";
  echo "<td>" . $row['lvl'] . "</td>";
  echo "<td>" .<<<_END
<form action="pokemondata.php" method="post">
<input type="hidden" name="add" value="yes" />
<input type="hidden" name="lvl" value="$lvl" />
<input type="hidden" name="poke_ID" value="$poke_ID" />
<input type="submit" value="Add" />
</form>
_END;
  echo "</td>";
  echo "</tr>";
}
echo "</table>";

好吧,我刚刚意识到我的评论没有那么有帮助,所以我将尝试回答你的问题。

首先,你考虑过把表格分成几页吗?这将加快页面加载速度,使内容更容易找到。其次,我的评论也不是完全没用。

<tr name="<?php echo $poke_ID; ?>">

将为您提供使用链接(如http://yoursite.tld/page.php#poke_ID)的选项,以自动转到具有相应名称的行。这是浏览器的预期行为,所以你应该能够依赖它。

在您提交的链接中描述了从AJAX请求中检索数据。
xmlhttp.onreadystatechange=function()

这是一个回调函数,当请求改变状态(加载,完成加载等)时调用,结果(即页面数据)存储在xmlhttp.responseText中。

document.getElementById("result").innerHTML

用于更改id为"result"的HTML元素中的HTML。因此,您可能希望为表提供一个id,并用AJAX重新加载它。要做到这一点,只需给你的表一个"结果"的id,或者更好的是一些描述性的东西,如"my_pokemons"。不要忘记相应地更新代码。

document.getElementById("my_pokemons").innerHTML

您可能想要考虑使用jQuery使事情变得更容易,或者只是像示例中那样做。在任何情况下,我建议你阅读javascript。对于初学者,我推荐W3CSchool,然后搜索SO找到更多实际的例子。