2013-02-12 2 views
0

Так что я нахожусь в своем уме. Из более сложных вопросов, это тот, который только что меня озадачил. Я не уверен, что это проблема с HTML или проблема с PHP. Я пробовал все, что мог придумать, и просто ничего. Итак, мне нужно вытащить определенное имя из динамически созданной таблицы, точнее, имя Оружия. Таким образом, пользователь нажимает кнопку «Удалить оружие», и это оружие будет удалено. Запрос в порядке; моя проблема получает это имя. Если было только одно оружие, и это не было динамическим, я бы просто пошел за конкретным именем поля. Это PHP 101. Это цикл он тянет от:PHP Вытягивание определенного имени из динамически созданной таблицы

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++;} 

Это, вероятно, что-то маленькое, что, как это всегда было моей проблемой. Я пробовал несколько разных циклов. Я пробовал, если заявления с issets ($ _ post ["weaponName0"] и т. Д. Я просто не знаю.

Редактировать: Так что я не очень хорошо разбираюсь в том, что мне нужно. информация в порядке, да и кнопка должна быть там.

(у меня нет достаточного количества респа до загрузки изображения таким образом, здесь ссылка) http://farm9.staticflickr.com/8391/8468562067_0cd4158e35_b.jpg

Это то, что он выглядит. Я не могу получить значение имени оружия. Результат здесь прекрасен, когда мне нужно удалить это конкретное оружие, с которым я сталкиваюсь. Мне нужно это имя. Вот почему я не уверен, HTML или PHP. Кнопка должна быть повторена или в чем смысл? MySQL в порядке, это была легкая часть.

У меня есть идея, что я могу сделать, но, на мой взгляд, это плохой дизайн, и я думаю, что у меня будет такая же проблема. Я могу добавить флажок для удаления этих полей, и он будет удален после того, как вы попытаетесь сохранить символ.

+0

[** Пожалуйста, не используйте 'mysql_ *' функции в новом коде **) (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://j.mp/PoWehJ). – h2ooooooo

+1

Я не понимаю, похоже, у вас есть кнопка «удалить оружие» для каждой итерации цикла, то есть одна кнопка удаления для каждого оружия, правильно? –

+0

Вам не хватает $ i в name = weaponName, см., Как идентификатор получил полученное значение суффикса – Shridhar

ответ

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]; 

С другой стороны, и то, что я хотел бы сделать: В действии вашей формы, указать идентификатор:

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

Затем в PHP, вы можете сделать:

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

Тогда вы можете просто вытащить имя непосредственно из базы данных, используя идентификатор.

+0

Я попробую, завтра. Это был расстраивающий день. –

+0

Спасибо, Get был тем, что мне было нужно, и, как всегда, это всегда что-то маленькое. Еще раз спасибо. –

0

Похоже, у вас есть одна кнопка удаления для каждой итерации цикла. Вы должны иметь возможность устанавливать имя для удаления так же, как вы устанавливаете его как метку.

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

$weaponsName = $_POST['weaponsName']; 
0

Вы используете mysql_fetch_array вместо mysql_fetch_assoc, так что вы должны использовать индекс поля, как это:

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


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

PS: Вы не должны использовать расширение MySQL .... пойти на MySQLi или PDO;)

Saludos.

+0

Извлечение - это не проблема, которая работает правильно. Fetch Assoc находится в верхней части страницы. –

+0

Тогда в чем смысл использования этой строки: while ($ weapons = mysql_fetch_array ($ data)). В этой строке вы заполняете $ weapon whit fetch_array ??? , Извините, но я не понимаю, что строка .... может быть, вы должны сделать var_dump на оружие после этой линии и до этой строки. Saludos :) – Hackerman

+0

Это для цикла (а не значения в цикле), сколько оружия у него есть, итерации. –

Смежные вопросы