【问题标题】:Switch statement not working with multiple casesSwitch 语句不适用于多种情况
【发布时间】:2013-03-05 02:27:01
【问题描述】:

由于没有更好的术语,我有一个“链接”到 onClick 事件的 switch 语句。当开关中有一个案例时,它可以工作。当所有四个案例都处于活动状态时,它们都不起作用。感谢您提供任何帮助/建议,非常感谢您真正

代码如下:

PHP 文件(mapcontroller.php):

function playerMove($direction) 
{
    Global $mysqli;

    $sqlMoveNorth = "UPDATE ss_character SET coord_y = coord_y + 1  WHERE username = '".$_SESSION['usr']."'";
    $sqlMoveSouth = "UPDATE ss_character SET coord_y = coord_y - 1  WHERE username = '".$_SESSION['usr']."'";
    $sqlMoveEast = "UPDATE ss_character SET coord_x = coord_X + 1  WHERE username = '".$_SESSION['usr']."'";
    $sqlMoveWest = "UPDATE ss_character SET coord_x = coord_X - 1  WHERE username = '".$_SESSION['usr']."'";

    switch ($direction)
    {
        case "north":
            mysqli_query($mysqli, $sqlMoveNorth);
            break;

        case "south":
            mysqli_query($mysqli, $sqlMoveSouth);
            break;

        case "east":
            mysqli_query($mysqli, $sqlMoveEast);
            break;

        case "west":
            mysqli_query($mysqli, $sqlMoveWest);
            break;

        default:
            echo "Pick something!";
            break;
    }
}

HTML 文件 (travel.inc.php):

<div class="map-wrapper">

    <?php $currentPage = $_SERVER['REQUEST_URI']; ?>

    <div class="map-move-container">
        <div class="map-move-north"><a onclick="<?php playerMove(north); ?>" href="<?php $currentPage ?>"> Move North</a></div>
        <div class="map-move-west"><a onclick="<?php playerMove(west); ?>" href="<?php $currentPage ?>"> Move West</a></div>
        <div class="map-move-east"><a onclick="<?php playerMove(east); ?>"  href="<?php $currentPage ?>"> Move East</a></div>
        <div class="map-move-south"><a onclick="<?php playerMove(south); ?>"  href="<?php $currentPage ?>"> Move South</a></div>
    </div>

</div>

【问题讨论】:

  • 你不能把 PHP 函数放到 onclick 中,它是用于 javascript 的。
  • @kennypu 如果是这种情况,我不确定如何在不通过 JavaScript 连接到数据库的情况下继续执行此操作,我知道这是一个很大的安全问题。有关如何前进的任何建议?
  • 这不是一个真正的“大安全问题”,它应该做的是1.onclick,向php脚本发送一个ajax请求,更新玩家的位置2.(假设这是一个游戏)更新页面显示更改。
  • 所以JS不一定连接到数据库,你只是向PHP脚本发送一个ajax请求,它将处理数据库连接和更新等。
  • @kennypu 太棒了,我一定会这样做的。你介意打开一个聊天室吗?我有几个问题可以在聊天中得到更好的回答。如果你不介意,那就是。

标签: php html switch-statement


【解决方案1】:

代码将无法正常工作。由于 PHP 是服务器端语言,您正试图在用户干预时使用它,这是不可能的。

正确的做法是onclick发送ajax请求获取结果。你可以使用 jquery 和许多著名的 JS 框架。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多