2011-01-16 3 views
1

У меня возникла проблема, которую я не могу решить. Моя цель - «щелкнуть» мою кнопку sybmit и каждый раз увеличивать счетчик, в то время как этот счетчик достигает 10. Впервые он работает, но это все! Мой тестовый код ниже:нажмите несколько раз кнопку отправки

<form name="testForm" method="post"> 
<?php $cnt=0; ?> 

<input type="submit" name="next" id="next" value="NEXT"/> 

<?php 
    if(isset($_POST['next'])){ 
    if($cnt< 10){ 
     echo $cnt.' --> '; 
     $cnt++; 
     echo $cnt; 
    } 
    } 
?> 
</form> 

только 0 -> 1 печатается каждый раз ... пожалуйста, помогите !!

Thanks

ответ

2

Ваш счетчик не сохраняется между загрузкой страницы. Что вам нужно сделать, это сохранить счетчик в переменной $_SESSION

+0

Или элемент скрытой формы. – Chris

+0

Или вставьте его в URL-адрес и отслеживайте его с помощью $ _GET, если на то пошло – davin

+0

спасибо большое .... Я работаю так много часов, что я не считаю самым простым решением! Еще раз спасибо! $ _SESSION было нормально! –

1

Ваш PHP-код выполняется на сервере, а форма представлена ​​в веб-браузере. Каждый раз, когда пользователь нажимает «Отправить», форма отправляется на ваш сервер, который вернет переменную $ cnt обратно к нулю.

Что вы должны сделать, это поставить счетчик в форме, как:

<form name="testForm" method="post"> 

<?php $cnt = isset($_POST["cnt"]) ? $_POST["cnt"] : 0; ?> 
<?php 
    if(isset($_POST['next'])){ 
    if($cnt< 10){ 
     echo "<!-- ".$cnt.' --> '; 
     $cnt++; 
     echo $cnt; 
    } 
    } 
?> 
<input type="hidden" name="cnt" value="<?php echo $cnt;?>" /> 
<input type="submit" name="next" id="next" value="NEXT"/> 
</form> 

Таким образом, текущее значение счетчика будет частью формы. Когда пользователь нажимает «submit», они отправляют текущий счет и тот факт, что они отправили форму. Затем ваш сервер может получить текущий счетчик, увеличить его и отправить обратно с новым счетчиком.

1

Вы должны использовать сессии http://www.php.net/manual/en/book.session.php

<?php session_start()?> 
<form name="testForm" method="post"> 
<?php 
    if (empty($_SESSION['cnt'])){ 
     $_SESSION['cnt'] = 0; 
    } 
?> 

<input type="submit" name="next" id="next" value="NEXT"/> 
<input type="submit" name="clear" id="clear" value="CLEAR"/> 

<?php 
    if(isset($_POST['next'])){ 
     if($_SESSION['cnt']< 10){ 
      echo $_SESSION['cnt'].' --> '; 
      $_SESSION['cnt']++; 
      echo $_SESSION['cnt']; 
     } 
    } 
    if(isset($_POST['clear'])){ 
     $_SESSION['cnt'] = 0; 
    } 
?> 
</form> 
0

Вы должны использовать сеанс. первое заданное начальное значение переменной сеанса 1, если оно еще не инициализировано. После инициализации от 2-го щелчка он будет считать +1 для каждого щелчка, потому что он будет удовлетворять заявлению else

<?php 
session_start(); 
?> 
<html> 
    <head></head> 
    <body> 
     <form method="post" action="submit.php"> 
      <input type="submit" name="count" value="Start counting" /> 
     </form> 
     <?php 
     if(isset($_POST['count'])){ 
      if(!($_SESSION['count'])){ 
       $_SESSION['count'] = 1; 
      }else{ 
       $count = $_SESSION['count'] + 1; 
       $_SESSION['count'] = $count; 
      } 
     } 
     echo $_SESSION['count']; 
     ?> 
    </body> 
</html> 
Смежные вопросы