在mysql中得到错误的结果?

时间:2011-10-22 19:45:22

标签: php mysql sql

你好我在一边php有一个html表格一切正常,我刚刚展示了如何从这个网站做隐藏的字段。

我在每个结果上都有一个提交按钮,让用户选择他们想要的内容。当他们按下提交按钮时,我希望提交信息并将其添加到数据库中。但是出于某种原因,当用户点击第1项的提交时,它会将最后一项添加到数据库中,例如项目6?所以有6个结果和每个提交按钮,所以6个按钮。当用户按下1号项目的提交时,它会为某些resson提交6号。

<form method="post" action="buydo.php">
                <label><br />
                <br />
                </label>
                <p>


                <?php   
    $sql = "SELECT * FROM sell
             ORDER BY Pokemon_level ASC";
    $res = mysql_query($sql) or die(mysql_error());

        while ($v = mysql_fetch_array($res)) {
            echo '
                <div class="auction_box">
                <img src="http://myrpg.net/new_rpg/'.$v['Pokemon_pic'].'" width="100" height="100"><br/>
                &pound;'.$v['price'].'<br/>
                <label id="pokemonName'.$v['id'].'">'.$v['pokemon_name'].'</label><br/>


                <label>Level '.$v['Pokemon_level'].'</level><br/>
                <label>Exp '.$v['exp'].'</level><br/>
                <label>Time Left:';

                echo '</label>
                <br/>
                <input type="hidden" name="Name" value="'.$v['pokemon_name'].'">
                <input type="hidden" name="level" value="'.$v['Pokemon_level'].'">
                <input type="hidden" name="vid" value="'.$v['id'].'">
                <input type="hidden" name="price" value="'.$v['price'].'">
                <input type="hidden" name="exp" value="'.$v['exp'].'">


                <input type="submit" id="'.$v['id'].'" class="buy_submit" value="Buy Now" /> </div>';
        }

?>



                &nbsp;</p>
                <p>&nbsp;</p>
              </form>

这是每个结果的提交按钮选择。 然后我插入他们选择的信息。

include 'config.php';
session_start() ;

$name = mysql_real_escape_string($_POST['Name']);
$Pokemon_level = mysql_real_escape_string($_POST['level']);
$idofpokemonsell = mysql_real_escape_string($_POST['vid']);
$price = mysql_real_escape_string($_POST['price']);
$exp = mysql_real_escape_string($_POST['exp']);


    $sql = "SELECT * FROM `users` WHERE `username` = '" . $_SESSION['username'] . "'";
    $result = mysql_query($sql) or die(mysql_error());
    $values = mysql_fetch_array($result);


echo $values['money'] ;




if ( $values['money'] == $price ) {
    echo "Give them the pokemon yay";
}



if ( $values['money'] > $price ) {

mysql_query("INSERT INTO `user_pokemon` (`pokemon`, `belongsto`, `exp`, `slot`, `level`) VALUES ('$name','" . $_SESSION['username'] . "','$exp','0','$Pokemon_level')") or die(mysql_error());  

    echo "Your money is over";
}

就像我说插入只插入项目6,无论你按下项目1 - 5它插入6级别,exp,命名项目6的所有内容

3 个答案:

答案 0 :(得分:3)

由于您以一种形式显示所有内容,因此最新值会覆盖之前的值。通过在while循环中移动<form></form>标记,尝试将每个项目设为自己的表单

答案 1 :(得分:0)

或尝试使用jquery点击按钮ID进行跟踪,并使用点击的ID

填充隐藏字段

答案 2 :(得分:0)

这是因为你的HTML错了。值被覆盖

基本上你必须选择:

  • 为每个项目呈现表单
  • 使用下拉列表或单选按钮执行此操作

使用第二个选项,您需要更多地重写代码,但如果您问我,它会更优雅。那么你需要做什么。

  1. 将提交按钮移出循环
  2. 只生成带有id和标签的代码,如下所示: <option value="'.$v['id'].'"/>YOUR LABEL</option>
  3. 提交表单时,您必须检索与提交的内容相对应的值