Bonjour tout le monde!
Derrière ce titre barbare se cache en fait un problème facile pour certains mais complexe pour moi...
Pour aller à l'essentiel, je travaille sur un calendrier de réservations, les jours qui composent ce calendrier peuvent avoir 3 états : "free", "pending", "booked" ("libre", "en attente" et "occupé" pour ceux qui seraient fâchés avec l'anglais... :p )
Ces états sont stockés dans une base de données contenant les infos de la réservation, lorsqu'une location est faite, la page introduit la nouvelle entrée dans la bdd (l'état est directement mis à "pending"), ça, ça fonctionne très bien.
Le problème survient lorsque je charge la page, je veux faire une lecture de la bdd afin de remplir un tableau qui contient les dates de la bdd et leur état afin de colorer le calendrier selon chaque date, sauf que, ce tableau est un tableau JavaScript (obligatoirement, j'en ai besoin dans mes traitements qui sont, eux aussi, en JS ), j'ai vu qu'on pouvait remplir un tableau JS avec du PHP avec des echo (pas la peine de me rappeler que le JS et PHP ne sont normalement pas compatibles vu qu'un est serveur et l'autre coté client...), mais ça ne marche pas...
Voici à quoi devraient ressembler le tableau formé par le PHP :
Pour rappel, ce tableau est un tableau JS...
Code : Sélectionner tout - Visualiser dans une fenêtre à part var arrayB = {'2017-08-01':'pending', '2017-08-18':'booked'};
Voici comment je l'instancie avec le PHP :
Voici un screenshot de la bdd :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 <script> // array à générer par exemple en php à partir des dates //'2017-08-01':'pending' var arrayB = new Array( <?php try { $bdd = new PDO('mysql:host=localhost;dbname=asbl;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch(Exception $e) { //En cas d'erreur, on affiche un message et on arrête tout die('Erreur : '.$e->getMessage()); } $tab = array(); $reponse = $bdd->query('SELECT dateReserv, etat FROM locations'); $nbLignes = mysql_num_rows($reponse); for($i = 0; $i <= $nbLignes; $i++) { if($i!=0) echo ', '; $donnees = $reponse->fetch(); $entree = $donnees['dateReserv'] . ':' . $donnees['etat']; $tab[$i] = $entree; echo $tab[$i]; } $reponse->closeCursor(); ?> ); </script>
Voici ce que ça devrait donner :
pour le tableau JS suivant :
On obtient ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part var arrayB = {'2017-08-10':'pending', '2017-08-20':'booked', '2017-08-15':'pending'};
Je pense avoir tout dit, si vous avez d'autres questions, n'hésitez pas!![]()
Partager