2014-12-25 1 views
0

У меня есть кнопка, которая генерируется после генерации каждой строки таблицы в цикле, имя каждой последовательной кнопки генерируется переменной $ a ++. Как использовать метод $ _POST на моей странице edit_contact.php, чтобы я мог использовать переменную из массива $ _POST?

Переменная хранится в массиве $ _POST, я проверил с Print_r ($ _ POST); например, когда я нажимаю на кнопку третьей строке редактирования таблицы, она будет отображаться как:

Array ([3] => edit) 

Вот код петли на моей странице list_contact.php:

$a = "0"; 

// print whether success or not 

if ($rst) 
{ 
    if (mysql_num_rows($rst)>0) // chech there are records 
    { 
     echo "<form name=addcontact method=post action=edit_contact.php>"; 
     echo "<table border=\"1\" cellspacing=\"0\">"; 

     /*** print out feild names ***/ 

     while ($row = mysql_fetch_array($rst)) // fetch each row 
     { 
      echo "<tr>"; 

      for ($i=0; $i<mysql_num_fields($rst); $i++) //for ech row print out field values 
      { 
       echo "<td>" . $row[$i] . "</td>"; 
      } 

      echo "<td>" . "<input id=button type=submit name=" . $a++ . " value=Edit" . "</td>"; 

      echo "</tr>"; 

     } 

    echo "</table>"; 
    echo "</form>"; 
    } 

    else 
    { 
    echo "There are no records in the database"; 
    } 
} 

И здесь это код у меня возникли проблемы с на моем edit_contact.php:

$qry = "SELECT * FROM contacts WHERE ContactID = " . $_POST; 

Как я могу получить этот пост, чтобы отразить только мою переменную? т.е. 3

+0

'mysql_num_rows' и другие функции MySQL являются устаревшими. Попробуйте использовать расширение 'mysqli' или' PHP Data Objects (PDO) ' –

+2

Поскольку вы студент, было бы неплохо научиться использовать функции mysql_ *, поскольку они устарели. Посмотрите на mysqli или PDO. – Robbert

+0

К сожалению, это тот материал, который они нам дали, чтобы учиться. Хотя я расскажу об этом своему учителю, почему я плачу, чтобы изучить старый материал. Спасибо – user3796133

ответ

1

Вы можете сделать это один раз. Вам больше не нужны поля. Просто используйте foreach, чтобы получить доступ к его key

foreach($_POST as $key => $value){ 
    if(strtolower(trim($value)) == "edit"){ // Validate if editing being sent 
     // Display it if true 
     echo $key; // and this is the variable you want 
    } 
} 
+0

Спасибо, что принял мой ответ. Так рад помочь вам –

+1

Абсолютный чемпион! Именно то, что я искал. Прекрасно работает – user3796133

0

Реструктурируйте код так, чтобы name фактически был константой, а value - динамический.

echo "<td><input id=button type=submit name=\"edit\" value=\"" . $a++ . "\"></td>"; 

Таким образом, вы можете получить к нему доступ:

$_POST['edit']; 

И это даст значение: value=\"" . $a++ . "\" для кнопки, которая была нажата.

Что вернет что-то вроде 3, как вы пожелаете.

+0

Недостатком кнопки является отображение 3 вместо «edit». – Robbert

+0

Да, точно, мне нужна кнопка, чтобы сказать Edit – user3796133

1

вы можете использовать скрытое поле ввода, так вместо:

echo "<td>" . "<input id=button type=submit name=" . $a++ . " value=Edit" . "</td>";

вы могли бы сделать:

echo '<td><form method="post"><input type="hidden" name="ContactID" value="'.($a++).'"><input id="button" type="submit" value="Edit"></form></td>';

затем получить поле скрытого ввода, как:

$ContactID = $_POST['ContactID'];

Примечание: Прежде чем использовать его для SQL-запросов, вам все равно необходимо правильно удалить данные POST, но, надеюсь, это укажет вам в правильном направлении.

+0

Я попытался это, я добавил скрытое поле ввода и переносит переменную в массив $ _POST, хотя я не могу ее восстановить. Даже с простым эхом «Переменная». $ _POST [ "ContactID"]; это говорит о неопределенном индексе. – user3796133

+0

вы можете попробовать добавить 'echo '

',print_r($_POST),'
';', чтобы видеть отправленные данные POST. Если «ContactID» не существует, возникает проблема с формой. –

+0

Я получил его для работы, хотя переменная ContactID при отправке в массив $ _POST всегда будет значением последнего цикла. Так что, если есть десять контактов, тогда ContactID всегда будет 10, потому что каждый новый скрытый ввод, сгенерированный в цикле, имеет одно и то же имя и к тому времени, когда цикл завершится, ContactID равен 10, где в качестве имен кнопок была добавленная переменная, поэтому каждый новый была создана с уникальным именем, то есть номером строки таблицы. Любые другие идеи? – user3796133

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