Fork me on GitHub




« 1 (2)


Re: Fullcalendar - essai de création d'un module
Régulier
Inscrit: 21/08/2006 03:21
Messages: 113
Pour info, la structure de la table est celle-ci :

Open in new window

Posté le : 27/12/2014 12:12
Partager Twitter Partagez cette article sur GG+
Re: Fullcalendar - essai de création d'un module
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
en théorie Ajax permet d'envoyer toutes ces données sans soucis, petite question qui me vient à l'esprit :
tu fais un json_encode dans le fichier d'envoi, mais fait tu un json_decode dans le fichier de réception ?

autre point a savoir, si tu envoi des données Ajax, ta page doit avoir une entête Ajax avec un
header('Content-Type: application/json');


Posté le : 28/12/2014 10:39
Partager Twitter Partagez cette article sur GG+
Re: Fullcalendar - essai de création d'un module
Régulier
Inscrit: 21/08/2006 03:21
Messages: 113
La partie avec json_encode fonctionne (après suppression du footer comme expliqué précédemment). json_encode se fait dans le fichier get-events php qui récupère les données dans la BDD et les transmet à mon template. C'est Fullcalendar qui doit décoder, je suppose, à travers sa fonction "events: 'nom du php'". Ce truc là fonctionne maintenant.

Concernant ajax et $_POST. Après moult essais (de syntaxe et autres) et recherche sur le net, j'en viens à me dire que c'est simplement la transmission de données par ajax avec la méthode POST (dans l'environnement xoops) qui ne fonctionne pas normalement.
Cette méthode fonctionne hors environnement xoops, quand Fullcalendar est installé seul sur mon serveur.
(cependant, je ne comprends pas pourquoi ça fonctionne pourtant dans le cas où je veux supprimer un élément de ma BDD et que je ne transmets par POST à mon fichier delete_events.php qu'une seule valeur, l'ID de l'élément seul...)

Bon, je dois apprendre à créer un formulaire alors.
Je n'ai jamais fait. Et ça me semble lourd uniquement pour passer trois valeurs : titre, start, end




Posté le : 28/12/2014 15:52
Partager Twitter Partagez cette article sur GG+
Re: Fullcalendar - essai de création d'un module
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
Si la fonction de décodage ne fonctionne pas, c'est que le contenu des données encodées n'est pas au bon format.

Ton script envois t-il les données au bon format.
Je pense que les outils de développement Chrome doivent pouvoir t'aider (onglet network) puis tu rafraichis ta page, tous les fichiers utilisés renvois une entête et les données (en rouge c'est qu'il y a un problème)

Posté le : 28/12/2014 16:44
Partager Twitter Partagez cette article sur GG+
Re: Fullcalendar - essai de création d'un module
Régulier
Inscrit: 21/08/2006 03:21
Messages: 113
Comment mon script pourrait envoyer des données au mauvais format dans l'environnement xoops et au bon format hors xoops ?

Voici mon script de template :

select: function(startendallDay) { //< par click dans le calendrier 
   
var title prompt ("Titre de l'évènement :"); 
     if (
title) {
    
start = $.fullCalendar.moment(start).format('YYYY-MM-DD HH:mm:ss');
    
end = $.fullCalendar.moment(end).format('YYYY-MM-DD HH:mm:ss');
    
// ici toutes les valeurs sont bonnes, title existe          
    
$.ajax({
        
type"POST",
        
url'http://localhost/monsite/modules/fullcalendar/add_events.php',
        
data'title='title+'start='start +'end='end // données à envoyer
        
success: function(json) {
            
alert('OK'); // le message s'affiche 
                 
}
        });
    
calendar.fullCalendar('renderEvent',
     {
       
titletitle// toutes ces valeurs sont bonnes et affichent 
       
startstart// correctement l'évènement dans le calendrier 
       
endend,     // donc elles sont au bon format pour Fullcalendar
       
allDayallDay
     
},
    
true // make the event "stick"
    
);
    }
     
calendar.fullCalendar('unselect');
    },


Ce script de template est le même dans Xoops (les datas ne sont pas transmises à add_events.php) et hors Xoops (les datas sont transmises).

Côté PHP (add_events.php) :

<?php
include "header.php";
$myts =& MyTextSanitizer::getInstance(); // MyTextSanitizer object
include_once XOOPS_ROOT_PATH."/class/xoopstree.php";
include 
XOOPS_ROOT_PATH."/header.php";
 
if (isset(
$_POST['title'])) {  // marche pas : pas de valeur title 
    
$title $_POST['title'];
}
if (isset(
$_POST['start'])) {  // pas de valeur start 
    
$start $_POST['start'];
}
if (isset(
$_POST['end'])) {  // pas de valeur end 
    
$end $_POST['end'];
}

/* -- données pour tester : si j'enlève le commentaire ça écrit ces valeurs dans la BDD
$title = $xoopsDB->quoteString("tata"); 
$start = $xoopsDB->quoteString("2014-12-01 00:00:00"); 
$end = $xoopsDB->quoteString("2014-12-05 00:00:00"); 
*/


$sql 'INSERT INTO '.$xoopsDB->prefix('agenda');
$sql.=  ' (id,title,start,end,allday) '
$sql.= " VALUES (NULL,$title,$start,$end,'1')";

$result=$xoopsDB->queryF($sql) or exit("Erreur");

?>


Je regarde aussi sur chrome. Aucune erreur.

add_events.php /portail/modules/fullcalendar POST 200 OK


:/

Posté le : 28/12/2014 20:31
Partager Twitter Partagez cette article sur GG+
Re: Fullcalendar - essai de création d'un module
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
C'est ce que je dis, tu n'envoie pas les bonnes données,
tu utilise donc PHP s'attend à avoir des données PHP
if (isset($_POST['title'])) {  // marche pas : pas de valeur title 
    
$title $_POST['title'];
}

les données que tu envois sont en json donc pas exploitable directement par PHP


$title json_decode($_POST['title']); //devrai fonctionner

Le soucis ici c'est qu'il ne va pas chercher les données dans POST

si cela ne fonctionne pas (pense a supprimer les isset) pour debugger, il faut savoir ce qu'il y a tout moment

// Déjà on initialise toujours les données avec des valeurs, ceci pour éviter les bugs fantômes
$title ''
$start 0;
$end 0;
// On trace $_POST
var_dump($_POST); // doit donner par exemple array(3) {...}

var_dump(isset($_POST['title'])); // Si affiche bool(true) OK sinon on supprime tous les isset suivant

Avec le contenu de $_POST afficher tu pourras facilement refaire le code

Posté le : 28/12/2014 21:15
Partager Twitter Partagez cette article sur GG+
Re: Fullcalendar - essai de création d'un module
Régulier
Inscrit: 21/08/2006 03:21
Messages: 113
Je vois des choses étranges avec chrome et ses outils de développement. Peut-être le début de la solution.
Je n'avais pas assez bien exploré ces outils.

Ma requête se retrouve être ça :

INSERT INTO agenda (id,title,start,end,alldayVALUES (NULL,dfdfstart=2014-12-05 00:00:00end=2014-12-06 00:00:00,,,'1')


évidemment, ça peut pas fonctionner.

Et puis ceci (form data) :
title:dfdfstart=2014-12-05 00:00:00end=2014-12-06 00:00:00


Rien ne sépare les noms des différentes données.


Posté le : 28/12/2014 21:26
Partager Twitter Partagez cette article sur GG+
Re: Fullcalendar - essai de création d'un module
Admin Frxoops
Inscrit: 05/03/2005 05:20
De Vaucluse
Messages: 960
$sql 'INSERT INTO '.$xoopsDB->prefix('agenda');
$sql.=  ' (id,title,start,end,allday) '
$sql.= " VALUES (NULL,$title,$start,$end,'1')";
J'aimerai bien voir ce que renvoie 'echo $sql'...

Posté le : 28/12/2014 21:33

Open in new window

Xoops 2.5.7.2 - Debian 8.2 - Apache 2.4.10 - MySQL 5.5.47 - Php 5.6.17
Partager Twitter Partagez cette article sur GG+
Re: Fullcalendar - essai de création d'un module
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
Citation :

title:dfdfstart=2014-12-05 00:00:00end=2014-12-06 00:00:00


ceci est du json, donc je pense qu'il manque un petit json_decode(); quelque part

Posté le : 28/12/2014 22:17
Partager Twitter Partagez cette article sur GG+
Re: Fullcalendar - essai de création d'un module
Régulier
Inscrit: 21/08/2006 03:21
Messages: 113
Ok, ça fonctionne.

Deux choses :
1 - j'ai dû modifier le script ajax car la syntaxe de définition des variables n'était pas bonne (je ne sais toujours pas pourquoi ça marche avec l'ancienne syntaxe hors environnement xoops)

data: {$titreevent.title$debutstart$finend$identevent.id},


2 - récrire le code de récupération des données côté php pour les mettre en format simple quote.
if (isset($_POST['$titre'])) {
    
$title $xoopsDB->quoteString($_POST['$titre']);
}
if (isset(
$_POST['$debut'])) {
    
$start $xoopsDB->quoteString($_POST['$debut']);
}
if (isset(
$_POST['$fin'])) {
    
$end $xoopsDB->quoteString($_POST['$fin']);
}
if (isset(
$_POST['$ident'])) {
    
$id $xoopsDB->quoteString($_POST['$ident']);
}


Ouf !
: )

Posté le : 28/12/2014 22:24
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
« 1 (2)



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

44 Personne(s) en ligne (31 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 44 | Plus ...