2010-11-08 6 views
0

Je suis novice dans le Javascript détaillé avec AJAX et PHP, et j'ai fait beaucoup de lecture, et surtout d'essais et d'erreurs à ce stade, mais je suis dans une situation où je ne suis pas trouver les informations Javascript et Ajax qui me poussent dans la bonne direction, donc je génère du mauvais code. J'ai 2 onduleurs solaires chez moi, et j'ai un port de données RS232 sur chaque onduleur qui est maintenant connecté à mon réseau domestique via un convertisseur IP pour télécharger les données sur une table MySQL de la puissance que les inverseurs font chaque heure, et afficher les données sur un simple site Web que j'ai fait, donc je peux voir ce qui se passe pendant les heures de jour je suis au travail.Datepicker va générer un rapport

J'ai créé une page Web avec un outil Jpu Datepicker pour générer des rapports sur les informations. J'essaie d'utiliser le DatePicker comme outil pour sélectionner une date "Début" et "Fin" du moment où je veux voir la puissance générée, puis appeler cette information depuis la table MySQL, pour ensuite générer un formulaire/table sur la page web que je peux voir et aussi imprimer.

J'ai essayé d'utiliser AJAX pour demander au PHP de faire cette opération sans résultat.

J'ai une base MySQL Table ...

 
+---------+----------+------------+---------+------------+----------+ 
| UNIT ID | Date | Time | Power | Volts  | Current | 
+---------+----------+------------+---------+------------+----------+ 
| 1 |YYYY-MM-DD| 12:00:00 | 560 | XXXX  | XXXX | 
+---------+----------+------------+---------+------------+----------+ 
| 1 |YYYY-MM-DD| 13:00:00 | 560 | XXXX  | XXXX | 
+---------+----------+------------+---------+------------+----------+ 
| 1 |YYYY-MM-DD| 12:00:00 | 490 | XXXX  | XXXX | 
+---------+----------+------------+---------+------------+----------+ 

Etc ....

Le code HTML est ... chef

//DatePicker 
<script type="text/javascript"> 
$(function(){ 
$('input').daterangepicker({dateFormat: 'M d, yy', posX: 25, posY: '6.8em'}); 
}); 
</script> 

//Ajax XML connect to the PHP to MySQL and back 
<script type="text/javascript"> 
function makeReport(str) 
{ 
if (str=="") 
    { 
    document.getElementById("start1").innerHTML=""; 
    document.getElementById("end1").innerHTML=""; 
    return; 
    } 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("txtText").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","report.php"+str,true); 

xmlhttp.send(); 
} 
</script> 

A l'intérieur du corps de la page J'ai ...

//The DatePicker 
<div id="calsw"><label> 
     From: 
     </label> 
     <input type="text" id="start1" onchange="makeReport(this.value)"/>  
     <label> 
     To: 
     </label><input type="text" id="end1" onchange="makeReport(this.value)"/></div> 

//Where the Report will show 
<div id="textHint" align="center">Report Data will list here</div> 

Le P HP (report.php) est écrit ...

<?php 
$start1=strtotime('start1'); 
$end1=strtotime('end1'); 

$con = mysql_connect('localhost', 'XXXX', 'XXXXXXXX'); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("inverters", $con); 

$sql='select * date, time, power, amp, current ' 
.'FROM feed AS textHint ' 
.'ORDER BY date,time' 
.'WHERE DATE BETWEEN [start1] and [end1]'; 

$res = mysql_query($sql); 
while ($row = mysql_fetch_assoc($res)) 
echo $row['textText']; 
echo "<table border='1'> 
<tr> 
<th>Date</th> 
<th>Hour</th> 
<th>Power</th> 
<th>Volt</th> 
<th>Current</th> 
</tr>"; 

while($row = mysql_fetch_array($result)) 
    { 
    echo "<tr>"; 
    echo "<td>" . $row['Date'] . "</td>"; 
    echo "<td>" . $row['Time'] . "</td>"; 
    echo "<td>" . $row['Power'] . "</td>"; 
    echo "<td>" . $row['Volt'] . "</td>"; 
    echo "<td>" . $row['Current'] . "</td>"; 
    echo "</tr>"; 
    } 
echo "</table>"; 

mysql_close($con); 
?> 

Plus je lis et plus je fais différentes Chages au code, je sens que je ne vais pas en avant du tout. Toute aide avec ceci, ou un lien vers où je peux lire et m'instruire à cet appel de données avec un dateur de date serait merveilleux.

Merci.

Alan

+0

Avez-vous jamais régler cette question avec succès? Avez-vous encore besoin d'aide pour cela? – jcolebrand

Répondre

1

À partir du code dans votre headerblock il semble que vous essayez de faire tout le travail AJAX manuellement et gérer toutes les implémentations de Crossbrowser sur votre propre. Avant de commencer à essayer d'apprendre AJAX, je vous recommande d'en apprendre davantage sur certains frameworks javascript qui peuvent gérer tout ce qui fonctionne pour vous.

Le plus couramment cité sur ce site est jQuery, car il a une communauté très active et est bien développé. Sinon, je sais que wikipedia a une longue liste d'options pour divers cadres.

La clé de l'utilisation d'un framework est qu'il gère pour vous toutes les tâches inter-navigateurs et vous permet de vous concentrer sur la tâche à accomplir, dans ce cas, faire une requête AJAX.


Un autre point, le nom se termine par AJAX X pour XML, mais de nos jours JSON est considéré comme le go-fil au format, car il est plus léger et plus facile à manipuler dans les javascript. Juste quelque chose à considérer, une nouvelle chose pour vous d'apprendre si vous ne l'avez pas déjà fait.

1

Essayez ci-dessous puisque votre code utilise déjà jQuery basé sur le plugin datepicker ...

  • Javascript

     
        
    $(function(){ 
    $('#start1').daterangepicker({ 
        dateFormat: 'M d, yy', 
        posX: 25, posY: '6.8em', 
        onSelect: function(dateText,inst) { 
         $.post("report.php",{dt_start:dateText},function(data){ 
          $("#textHint").html(data); 
         }); 
        } 
    }); 
    
    
    $('#end1').daterangepicker({ 
        dateFormat: 'M d, yy', 
        posX: 25, posY: '6.8em', 
        onSelect: function(dateText,inst) { 
         $.post("report.php",{dt_end:dateText},function(data){ 
          $("#textHint").html(data); 
         }); 
        } 
    }); 
    }); 
    
    
  • côté php

 
$start1 = (isset($_POST['dt_start'])) ? date("Y-m-d",strtotime($_POST['dt_start'])) : date("Y-m-d"); 
$end1 = (isset($_POST['dt_end'])) ? date("Y-m-d",strtotime($_POST['dt_end'])) : date("Y-m-d"); 

    //code so on... 
0

je refait les 2 sélecteurs de date, mais ne peux pas obtenir le poste de fonctionner. mais au moins j'ai mis la date de fin d'être plus alors le début ...

Voici ce qui fonctionne sans fonction POST ...

<script type="text/javascript">   
    $(function() { 

     var start1 = $('#start1'); 
     var end1 = $('#end1'); 

     start1.datepicker({ onClose: clearEndDate }); 
     end1.datepicker({ beforeShow: setMinDateForEndDate }); 

     function setMinDateForEndDate() { 
      var d = start1.datepicker('getDate'); 
      if (d) return { minDate: d } 
     } 
     function clearEndDate(dateText, inst) { 
      end1.val(''); 
     } 
    }) 

Peu importe comment j'écris la fonction GET ou POST, ça ne marche pas ... Que puis-je faire pour que ça marche?

Voici le nouveau formulaire qui affiche l'outil datepicker dans le corps de la page.

<body> 

Date de début: Date de fin:

Questions connexes