2015-02-17 6 views
1

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

Ниже приведены две строки в PHP/HTML файла:

<input type="submit" id='details' name='details' class="pull-right btn-sm btn-primary" value='Show Details'/> 


<h4><?php echo $subject_details; ?></h4> 

Ниже находится во внешнем. Я знаю, что он включен, потому что, если я добавлю else в оператор if, и установите эту переменную на что-то другое, оно изменится.

$subject_details = ''; 

if(isset($_POST['details'])){ 

    $subject_details = 'button clicked'; 
    setDetails(); 

} 

Спасибо всем, кто смотрит на это!

+0

следует, что быть кнопка или просто кнопку отправки? – RamRaider

+0

Из того, что я прочитал, это должна быть кнопка отправки. Теперь вы заставляете меня задаться вопросом, должна ли кнопка быть в форме. – WeVie

+0

ах - но, конечно же, вам нужно получить доступ к сообщению, поэтому вы должны отправить форму. – RamRaider

ответ

1

Функция Исеть() работает только для типа входного представить. То, что вы можете сделать, это вставить кнопку в форму и позволить перезагружать страницу для захвата переменной, хранящейся во внешнем php. В качестве примера:

//in your main.php 

<?php 
include 'external.php'; 
?> 

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
    <input type="submit" name="submit" value="Send"> 
</form> 

<h4><?php echo $subject_details; ?></h4> 


//in your external.php 

<?php 
$subject_details = ''; 
if(isset($_POST['submit'])){ 
    $subject_details = 'button clicked'; 
} 
?> 
+0

Так что это работает, (я не понимал, что кнопка должна быть в форме), но есть ли лучший способ? У меня будет пять кнопок и в зависимости от того, на какой щелкнуть, на следующей странице будет разная информация. Похоже, что был бы лучший способ. – WeVie

+0

вы можете добавить пять разных кнопок внутри формы с разными именами, а в вашем внешнем php просто объявить пять различных функций isset(). – nad

0

вы могли играть с этим ... может помочь

<!-- head section --> 
<script> 
    window.onload=function(){ 
     var oCol=document.querySelectorAll('input[type="button"]'); 
     for(var b in oCol) if(b && oCol[b] && oCol[b].nodeType==1) oCol[ b ].onclick=function(e){ 
      alert(this.tagName + ' '+this.id+' was clicked...'); 
     }.bind(oCol[b]); 
    }; 
</script> 




     <input type='button' id='b1' value='Button 1' /> 
     <input type='button' id='b2' value='Button 2' /> 
     <input type='button' id='b3' value='Button 3' /> 
     <input type='button' id='b4' value='Button 4' /> 
+0

Я не уверен, как это помогает, поскольку это JavaScript, и я работаю с PHP. Функция, которую нужно вызвать, запрашивает базу данных. Я не ищу альтернативного решения. Мне нужно понять, почему то, что я использовал в прошлом, не работает. – WeVie

+0

потенциально это ошибка ID 10T. Кажется, вы сбиты с толку - php никогда не узнает, была ли нажата кнопка, так как это серверный язык, а javascript, по большей части, является клиентской. Из них javascript будет знать, когда нажата кнопка, и может сделать необходимое перенаправление - каким бы то ни было образом. Если кнопка отправляет форму - страница перезагружается - в этот момент post vars будут доступны, если форма была отправлена ​​с использованием сообщения. – RamRaider

1

не видя полный пример кода, я не могу быть уверен, но возможно вы не уточняя атрибут на <form> тега method="post". Форма по умолчанию равна method="get", поэтому вместо этого вам нужно будет использовать isset($_GET['details']).

рабочий пример был бы:

<form action="" method="post"> 
    <input type="submit" name='details' value='Show Details'> 
</form> 

<?php 

if (isset($_POST['details'])) { 
    echo $_POST['details']; 
} else { 
    echo 'No post data submitted'; 
} 
Смежные вопросы