PHP从动态创建的表中提取特定名称

时间:2013-02-12 20:01:16

标签: php html

所以我在我的智慧结束。在更复杂的问题中,这是刚刚困扰我的问题。我不确定它是HTML问题还是PHP问题。我已经尝试了所有我能想到的东西,而且什么都没有。 好的,我需要从动态创建的表中提取一个特定的名称,确切地说是武器的名称。 因此,用户点击“删除武器”按钮,该武器将被删除。查询很好;我的问题是得到这个名字。如果只有一种武器并且这不是动态的,我会选择特定的字段名称。这是PHP 101。  这是它被拉出来的循环:

while ( $weapons = mysql_fetch_array($data)) {
            echo '
              <table width="780" border="1">
                 <tr>
                    <td colspan="2">weapon</td>
                    <td>AttackBonus</td>
                    <td>crit</td>
                </tr>
                <tr>
                    <td colspan="2">

                        <input type="text" name="weaponName'.$i.'" id="weaponName'.$i.'"  size="10" value="'.$weapons["weaponsName"].'" />
                        <input type="hidden" name="weaponName" value="'.$weapons["weaponsName"].'"/>
                    </td>
                    <td>
                        <input type="text" name="attackBonus'.$i.'" id="attackBonus'.$i.'"  size="10" value='.$weapons["weaponsAttackBonus"].' />
                    </td>
                    <td>
                        <input type="text" name="crit'.$i.'" id="crit'.$i.'"  size="10" value='.$weapons["weaponsCritical"].' />
                    </td>
                </tr>
                <tr>
                    <td>type</td>
                    <td>range</td>
                    <td>ammunition</td>
                    <td>damage</td>
                </tr>
                <tr>
                    <td>
                        <input type="text" name="type'.$i.'" id="type'.$i.'"  size="10" value='.$weapons["weaponsType"].' />
                    </td>
                    <td>
                        <input type="text" name="range'.$i.'" id="range'.$i.'"  size="10" value='.$weapons["weaponsRange"].' />
                    </td>
                    <td>
                        <input type="text" name="ammunition'.$i.'" id="ammunition'.$i.'"  size="10" value='.$weapons["weaponsAmmunition"].' />
                    </td>
                    <td>
                        <input type="text" name="damage'.$i.'" id="damage'.$i.'"  size="10" value='.$weapons["weaponsDamaage"].' />
                    </td>
                </tr>
                <tr>
                    <td colspan="4">
                        <input type="submit" formaction="include/deleteweapon.php"  formmethod="post" value="Delete Weapon"/>
                    </td>               
                </tr>
                </table>

    ';
        $i++;}

这可能是小事,这就是我的问题。我尝试过几个不同的while循环。我试过ifset语句($ _ post [“weaponName0”]等等。我只是不知道。

编辑: 所以我不太擅长解释我的需要。显示信息的循环很好,是的,按钮需要在那里。

(我没有足够的代表来加载图片,所以这里是链接) http://farm9.staticflickr.com/8391/8468562067_0cd4158e35_b.jpg

这就是它的样子。我无法获得武器名称的价值。输出在这里很好,当我需要删除那个特定武器时,我遇到了问题。我需要那个名字。这就是为什么我不确定它是HTML还是PHP。按钮必须重复或点什么? mySQL很好,这很容易。

我知道我能做些什么,但在我看来这是糟糕的设计,我想我会遇到同样的问题。我可以为这些字段添加一个复选框以便删除,并且在您尝试保存字符后它将被删除。

3 个答案:

答案 0 :(得分:0)

我不是100%确定我理解你的问题,我相信你的HTML,你应该做的事情:

<input type="hidden" name="weaponName[<?php print $i; ?>]" value="The Name" />

在PHP中,您应该能够访问给定索引的名称:

$index = 1; // Some arbitrary index
$weapon_name = $_POST['weaponName'][$index];

或者,我会做什么:在表单的操作中,指定一个id:

<form action="delete.php?id=<?php print $weaponId; ?>" action="post">

然后在PHP中,你可以这样做:

$id = $_GET['id']; // This is the weapon ID

然后您可以使用ID直接从数据库中提取名称。

答案 1 :(得分:0)

看起来你对循环的每次迭代都有一个删除按钮。您应该能够像设置标签一样设置删除名称。

<input type=hidden name=weaponsName value=".$weapons['weaponsName'].">
<input type=submit ...>

$weaponsName = $_POST['weaponsName'];

答案 2 :(得分:0)

您正在使用mysql_fetch_array而不是mysql_fetch_assoc,因此您应该使用字段索引,如下所示:

 $weapons["weaponsName"] // This is wrong


 $weapons[0] // This is the right approach

PS:您不应该使用mysql扩展....转到mysqli或PDO;)

Saludos。