2010-12-01 14 views
0

je semble aller vite ... pas de placene postez pas droit

peut sembler ne pas obtenir une ligne unique (embeded) jquery Datepicker dateText pour poster correctement aux PHP et MySQL pour renvoyer des données à partir la table .. Ma lecture m'a fait comprendre qu'elle devrait être juste, mais ce n'est pas le cas. Maintenant, le sélecteur datepicker a plusieurs événements qui déclenchent à partir de la sélection unique ... les données demandées par le jour, le mois et l'année, ainsi que l'envoi de la date pour créer un graphique de données hautes pour les heures d'un jour, les jours d'un mois et mois d'une année.

Le tableau est très simple ... date, l'heure, le pouvoir

Voici le javasctipt ...

$(document).ready(function() { 
    $('#datepicker').datepicker({onSelect: function(dateText) { 
     var myDate = $(this).datepicker('getDate'); 
     $('#apDiv1').html($.datepicker.formatDate('DD, d', myDate)); 
     $('#apDiv5').html($.datepicker.formatDate('MM', myDate)); 
     $('#apDiv7').html($.datepicker.formatDate('yy', myDate)); 
     $.post('dayPower.php', {choice: dateText.val}, function(data) { 
      $('#apDiv2').html(data).show(); 
     }); 
     $.post('dayGraph.php', {choice: dateText.val}, function(data) { 
       $('#apDiv4').html().show(); 
     }); 
     $.post('monthPower.php', {choice: dateText.val}, function(data) { 
      $('#apDiv6').html(data).show(); 
     }); 
     $.post('monthGraph', {choice: dateText.val}, function(data) { 
       $('#apDiv9').html().show(); 
     }); 
     $.post('yearPower.php', {choice: dateText.val}, function(data) { 
      $('#apDiv8').html(data).show(); 
     }); 
     $.post('yearGraph', {choice: dateText.val}, function(data) { 
       $('#apDiv10').html().show(); 
     }); 
    }}); 

});

Voici le PHP pour le POST pour obtenir les données pour la journée (dayPower.php) ...

<? 
if(isset($_POST['choice'])) 
$choice = (isset($_POST['choice'])) ? date("Y-m-d",strtotime($_POST['choice'])) : date("Y-m-d"); 
$con = mysql_connect("localhost","root","xxxxxxxx"); 
if (!$con) { 
die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db("inverters", $con); 

$sql = 'SELECT sum(power) AS power '   
.'FROM feed '  
.'WHERE date = $choice'; 
$res = mysql_query($sql) or die('sql='.$sql."\n".mysql_error()); 
$row = mysql_fetch_assoc($res); 
echo $row['power']; 
?> 

La première et la deuxième ligne du PHP doit obtenir la date de la datepicker, et alors mettez-le dans une date que mysql peut lire, et le sql select devrait récupérer les valeurs de la table et l'envoyer dans la DIV où je lui ai dit de partir ... Que fais-je de mal?

Merci,

ALAN

J'ai maintenant le Jquery d'afficher le fichier PHP avec ce script ...

$('#datepicker').datepicker({dateFormat: 'yy-mm-dd', onSelect: function(dateText) { 
     var myDate = $(this).datepicker('getDate'); 
     $('#apDiv1').html($.datepicker.formatDate('DD, d', myDate)); 
     $('#apDiv5').html($.datepicker.formatDate('MM', myDate)); 
     $('#apDiv7').html($.datepicker.formatDate('yy', myDate)); 
     $('#apDiv2').load('dayPower.php', {choice: dateText}, function() { 
       $(this).show(); 
     }); 
     $('#apDiv4').load('dayGraph.php', {choice: dateText}, function() { 
       $(this).show(); 
     }); 
     $('#apDiv6').load('monthPower.php', {choice: dateText}, function() { 
       $(this).show(); 
     }); 
     $('#apDiv9').load('monthGraph', {choice: dateText}, function() { 
       $(this).show(); 
     }); 
     $('#apDiv8').load('yearPower.php', {choice: dateText}, function() { 
       $(this).show(); 
     }); 
     $('#apDiv10').load('yearGraph', {choice: dateText}, function() { 
       $(this).show(); 
     }); 
    }}); 

}); Comme la nouvelle structure utilise LOAD et non POST, je comprends que je dois utiliser GET dans le PHP, donc j'ai fait les changements que je comprends devraient fonctionner, mais ils ne le font pas ... Je semble être de retour dans le même bateau qu'avant ... voici le nouveau PHP ... Des idées pour lesquelles ça ne marche pas ????

<? 
$choice = (isset($_GET['choice'])) ? date("Y-m-d",strtotime($_GET['choice'])) : date("Y-m-d"); 
$con = mysql_connect("localhost","root","xxxxxxxx"); 
if (!$con) { 
die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db("inverters", $con); 
$sql = 'SELECT sum(power) AS choice '   
.'FROM feed '   
.'WHERE date = $choice'; 
$res = mysql_query($sql) or die('sql='.$sql."\n".mysql_error()); 
$row = mysql_fetch_assoc($res); 
echo $row['choice'], '<br />'; 
mysql_close($con); 
?> 
+2

Avez-vous quelque chose si vous var_dump ($ _ POST)? –

+0

Je n'ai pas essayé cela .. J'ai utilisé print_r pour déboguer. Je n'ai jamais utilisé var_dump ($ _ POST) avant. – hkalan2007

+0

VOUS DEVRIEZ! 'print_r' est pour la visualisation paresseuse, seul' var_dump' va imprimer l'entrée/sortie réelle – ajreal

Répondre

1

Comment le sélecteur de date formatant la date est-il sélectionné? Toute mon expérience avec les sélecteurs de date JS renvoie des dates lisibles par l'homme, pas les horodatages UNIX que je suppose que vous utilisez dans votre base de données. Dans ce cas, vous pouvez utiliser $choice_timestamped = strtotime($choice); sur la chaîne de date du sélecteur de date, puis la fonction date() lors de la sortie pour afficher dans le format de votre choix.

+0

Le datepicker est mm-jj-aa, et je crois comprendre que .. $ choice = (isset ($ _ POST ['choix']))? date ("Y-m-d", strtotime ($ _ POST ['choix'])): date ("Y-m-d"); fera la date à laquelle la base de données a besoin. – hkalan2007

+0

La date est simplement utilisée pour collecter des données et générer ces données à partir de la table. pas de date d'être retourné à la DIV, seulement les données pour la date sélectionnée. Vous pouvez voir ce que j'essaie de faire à www.pvmonitor.000a.biz/demo2.php – hkalan2007

+0

La façon dont vous l'avez mis en place avec ce ternaire, vous devriez obtenir une requête valide de toute façon, la recherche de la date sélectionnée ou la date actuelle. Cela peut être ou ne pas être un comportement souhaitable, mais puisque vous le mettez là, je vais aller avec le premier. Alors, où obtenez-vous une erreur? La première suggestion serait la première place que je commencerais. – drewster

1

J'ai remarqué que vous utilisez dateText.val. Il me semble que, selon le documentation, dateText est juste une chaîne:

The function receives the selected date as text and the datepicker instance as parameters.

Maintenant, le second paramètre à la fonction est l'élément d'entrée. C'est probablement ce que vous voulez appeler .val() (notez également les parenthèses).

Essayez de changer: $('#datepicker').datepicker({onSelect: function(dateText) {
Pour: $('#datepicker').datepicker({onSelect: function(dateText,inst) {
Et puis changer toute dateText.val-inst.val().

+0

OK, essayé cela et est allé aussi à la documentation Jquery ... J'ai appris une leçon là-bas, mais var_dump dans le php est encore ne rien mettre dans la div. hmmm J'ai fait la structure du script aussi simple que possible mais toujours le même résultat. – hkalan2007

+0

Essayez d'afficher votre div par défaut (au lieu d'utiliser '.show()') et voyez si quelque chose change. En outre, essayez de définir une alerte dans les fonctions de rappel 'onSuccess' et' $ .post', juste pour s'assurer qu'ils sont en cours d'exécution. –

+0

De même, si '$ _POST ['choice']' n'est pas défini, il semble que '$ choice' ne sera jamais défini car vous avez cette instruction' if' au dessus. Vous devez également placer des guillemets simples autour de '$ choice' dans votre requête, car il s'agit d'une chaîne. –