2012-02-17 3 views
0

Я пытаюсь решить проблему, но не удалось. Я извлекаю данные из Google Analytics, и мне нужно отправить дату начала и окончания. У меня есть два текстовых поля и пользователь выбирают дату начала и окончания. Однако, прежде чем пользователь выберет дату начала и окончания. Проблема возникает ..php - isset button

Место, которое я использую Исеть здесь,

Это мой полный HTML

<?php 
define('ga_email','[email protected]'); 
define('ga_password','************'); 
define('ga_profile_id','*******'); 

require 'gapi.class.php'; 
require 'connectDB.php'; 

$ga = new gapi(ga_email,ga_password); 




?> 



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>İçerik</title> 
<script language="javascript" type="text/javascript" src="datetimepicker.js"> 

//Date Time Picker script- by TengYong Ng of http://www.rainforestnet.com 
//Script featured on JavaScript Kit (http://www.javascriptkit.com) 
//For this script, visit http://www.javascriptkit.com 

</script> 
</head> 
<div></div> 
<body> 
    <table align="center"> 
     <tr> 
     <td><br /> 
    <br /> 
    <form action="#" method="post" name="formDates" id="form1" > 
    <table width="303" height="40" border="0" align="center"> 
     <table width ="" 
    <tr> 
    <td>Başlangıç Tarihi</td> 
    <td> 
     <label for="txtStartDate"></label> 
     <input type="text" name="txtStartDate" id="txt1" value="" /><a href="javascript:NewCal('txt1','ddmmyyyy')"><img src="images/cal.gif" width="16" height="16" border="0" alt="Başlangıç Tarihi Seçin"> 
     </a> 
    </td> 
    </tr> 
    <tr> 
    <td>Bitiş Tarihi</td> 
    <td> 
     <label for="txtEndDate"></label> 
     <input type="text" name="txtEndDate" id="txt2" /><a href="javascript:NewCal('txt2','ddmmyyyy')"><img src="images/cal.gif" width="16" height="16" border="0" alt="Bitiş Tarihi Seçin"> 
     </a> 

    </td> 
    </tr> 
    </form> 
     <tr> 
      <td><input type="submit" name="btnSubmit" value="Gönder"</td> 
     </tr> 

</table> 
    <table width="1250" height="26" align="center"> 
    <tr> 

    <td width="138"><strong>Kanal Adı</strong> 
    <td width="150"><b>Kategori Adı</b></td> 
    <td width="130"><p><strong>Event Adı</strong></td> 
    <td width="145"><strong>Toplam</strong> 

    </tr> 
    </table> 



      <?php 

      if(isset($_POST['submit'])){  
       $startDate = $_POST['txtStartDate']; 
       $endDate = $_POST['txtEndDate']; 
      } 


      $arrDates = explode("-",$startDate); 
      $startDate=$arrDates[2]."-".$arrDates[1]."-".$arrDates[0]; 
      $arrDates = explode("-",$endDate); 
      $endDate = $arrDates[2]."-".$arrDates[1]."-".$arrDates[0]; 

      echo $startDate; 
      echo $endDate; 



      $ga->requestReportData(ga_profile_id,array('eventCategory','eventAction'),array('totalEvents'),$sort_metric=null,$filter='eventAction==InitPlayer',$start_date='2012-02-02',$end_date='2012-02-16'); 
      foreach($ga->getResults() as $result2); 
      { 
       echo $result2->geteventCategory(); 
       echo $result2->geteventAction(); 
       echo $result2->gettotalEvents(); 
      } 


      $ga->requestAccountData(); 
      $mysql = new mysql(); 
      $mysql->connect(); 
      $counter = 0; 



      foreach($ga->getResults() as $result) 
      {  
       echo $result . ' (' . $result->getProfileId() . ")<br />"; 
       echo "<br />"; 
       $counter++; 
      } 

      $result = mysql_query("select profile_id from profiles"); 
      $num_rows = mysql_num_rows($result); 



      if($counter != $num_rows) 
      { 
       $mysql->query("delete from profiles"); 

       foreach($ga->getResults() as $result) 
       { 
        $mysql->query("insert into profiles values(".$result->getProfileId().",'".$result."')"); 
       } 
      } 






      ?> 

</td> 
    </tr> 
    </table> 
</body> 
</head> 
</html> 

что не так?

если выбрать начальные и проблемы даты конца решены, проблемы происходят до того, что я выбираю

+0

сообщения HTML-форму. почему бы не проверить, установлен ли $ _POST ['txtStartDate']? Обязательно отреагируйте соответствующим образом, если txtStartDate и textEndDate не установлены путем отправки сообщения об ошибке или исключения исключения. – busypeoples

+1

Вы уверены, что в вашей форме html элементы ввода имеют атрибут 'name'? Его трудно помочь без кода HTML, но это мой снимок в темноте – xbonez

ответ

1

Я думаю, что это должно быть:

if(isset($_POST['submit'])) 

вместо:

if(!isset($_POST['submit'])) 

Восклицательный знак перед isset означает not. Кроме того, я хотел бы проверить для фактических полей, которые вы хотите использовать, а не для $_POST['submit']:

if(isset($_POST['txtStartDate']) && isset($_POST['txtEndDate'])) 
{ 
    // Do something with $_POST['txtStartDate'] and $_POST['txtEndDate'] 
} 

Причина вы получаете сообщение об ошибке, что $_POST['submit'] не существует. Не существует элемента input с атрибутом name под названием submit. Остерегайтесь разницы между type и name.

+0

if (isset ($ _ POST ['txtStartDate']) && isset ($ _ POST ['txtEndDate'])) { $ startDate = $ _POST [ 'txtStartDate']; $ endDate = $ _POST ['txtEndDate']; echo $ startDate; echo $ endDate; } Это работает спасибо! –

+1

Добро пожаловать. Я рад, что он работает сейчас. – Mischa

1
Undefined index txtStartDate, ... 

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

А также вы должны сделать эти проверки в файле PHP после успешного представления: if(!isset($_POST['submit']))

0
if(!isset($_POST['submit'])) 

Это означает, что если представить кнопку была НЕ нажата. Вы должны проверить, если $_POST['submit'] установлен, в результате отправки формы, например, так:

if(isset($_POST['submit'])) 
0

Я предполагаю, что это должно быть if(isset($_POST['submit'])) вместо if(!isset($_POST['submit'])), как ! в начале означает Отрицание

+0

ничего не изменилось. –

+0

@ MertMETİN Вы уверены, что выполняете такой запрос? Пожалуйста, покажите свой html. – Mischa

+0

Я отправил свой полный php –

1

Когда ваша страница загружается и $_POST['submit'] не установлен, ваши $_POST['txtStartDate'] и $_POST['txtEndDate'] не установлены, поэтому $arrDates также не установлен. Вам нужно проверить, установлены ли эти $ _POST vars или нет, чтобы работать с ними.

1

Вы должны использовать isset() для каждой переменной, а не только для одной переменной. $_POST['txtStartDate'] и $_POST['txtEndDate'] и другие переменные просто не определены, это означает, что они не были отправлены с запросом POST.

2

Он должен быть isset($_POST["btnSubmit"]) НЕ передавайте

представить = тип btnSubmit = название кнопки