CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Insérer une variable js dans un code php

axrevi
axrevi
Niveau 10
01 février 2012 à 17:05:53

à l'intérieur d'un code html dans un code js :fou:

Salut ! :noel:

Voilà quelques jours que j'ai commencé l'apprentissage du PHP grâce à l'excellent SdZ.
J'en suis au TP où il faut faire un blog avec billets et commentaires. Bon le TP est simple, trop même, du coup j'ai voulu aller plus loin parce que je suis masochiste.

Voici le TP http://www.siteduzero.com/tutoriel-3-231261-tp-un-blog-avec-des-commentaires.html

En gros ça consiste à créer une page qui contient les 5 derniers billets d'une table de données, avec la date toussa. Puis sur chaque billet un lien vers une autre page contenant le billet en question + les commentaires qui y sont associés.
Pour cela on créé deux tables, l'une avec les billets, et l'autre avec les commentaires. Cette dernière contient un champ particulier, "id_billet", qui correspond au champ "id" du billet auquel le commentaire est associé. 'Fin vous voyez quoi, vous allez comprendre pourquoi j'en parle :noel:

J'ai eu l'idée (mauvaise visiblement) d'intégrer l'affichage des commentaires dans la même page, avec mon adoré javascript et la fonction .html()
Pour cela, j'intègre dans chaque lien "commentaires" (dans une balise <a>) un "id" (=attribut html cette fois-ci) qui contient l'id (champ SQL) du billet auquel il est juxtaposé (vous arrivez à suivre ? :fou: ).
En gros le contenu de l'id (html) de chaque lien vers les commentaires contient l'id (SQL) du billet auquel les commentaires seront associés.

Dans mon script javascript j'insère un évènement .click() associé à chaque lien "commentaires" dans lequel de mets une fonction .html associée à une <div> qui existe déjà, prévue pour afficher les commentaires. Donc vous cliquez sur le lien "commentaires", le contenu html suivant sera affiché dans une <div>.
Dans le contenu html je tape un script php, qui va dans un premier temps chercher dans la table de données "commentaires" tous les commentaires dont le champ "id_billet" est égal à ce fameux "id" (html) qui vaut l'id (SQL) du billet associé. Pour cela je crée dès le début du script une variable "id" (pour être original) qui vaut l'attribut html "id" de l'élément cliqué ($(this).attr('id')).
Et je finis avecle classique "while (...........->fetch()){....}" dans lequel j'insère l'echo qui va m'afficher tous les commentaires avec auteur et date.

Le truc qui pose problème, c'est que je n'arrive pas à insérer la variable javascript "id" dans "WHERE id_billet = ...". J'ai tout essayé '"+id/"', "'+id+'", \'"+id+"\', enfin tout ce qui est possible, ça ne marche pas.

Pour ceux qui sont plus à l'aise avec un code, le voici

Le lien "commentaires"
'</p><a href=# class=\'commentaires\' id=' . $donnee['id'] . '>Commentaires</a><br /><br />'

Le script
$(function() {
$('.commentaires').click(function() {
var id = $(this).attr('id');
$('#commentaires').html('<?php $coms = $bdd->query('SELECT contenu, date, auteur FROM commentaires WHERE id = :d) ??! :g) ORDER BY id DESC'); while ($donnees = $coms->fetch()) {echo $donnees['contenu'] . '<br />Posté par ' . $donnees['auteur'] . ' le ' . $donnees['date'];} ?>');
});
});

le ??! c'est l'endroit où je veux insérer la variable js :noel:

axrevi
axrevi
Niveau 10
01 février 2012 à 17:16:21

PS : oui oui je sais j'ai oublié d'échapper les guillemets dans la fonction .html() mais c'est juste parce que j'ai retapé le code (que j'avais effacé) vite fait pour le montrer. Ne vous inquiétez pas, mon problème persiste même en échappant chaque guillemet :noel:

ParaPlayGeek
ParaPlayGeek
Niveau 7
01 février 2012 à 18:04:09

Utilise plutôt la fonction load de jQuery (tu appelles une page genre commentaires.php?id_billet=TON_ID) qui va retourner uniquement le HTML que tu souhaites mettre dans ton div :)

Si <div id="commentaires"></div> et que le lien est <a href="#" class="TON_ID" id="view_comments">Voir Commentaire</a> alors le JS sera :

$("#view_comments").bind('click', function() {
var id = $(this).attr("class");

$("#commentaires").load("commentaires.php?id="+id)
;
});

Çà devrait fonctionner, pour plus d'infos, voir la doc de jQuery :)

Fire_Storm
Fire_Storm
Niveau 10
01 février 2012 à 18:07:21

Insérer du php dans du is est possible mais l'inverse pas.

axrevi
axrevi
Niveau 10
01 février 2012 à 22:37:42

Fire_Storm :d) Si si, j'ai testé la fonction echo dans le javascript, ça marche. Mais apparemment comme mon code se rallongeait pas mal, j'ai emmêlé les guillemets :noel:

ParaPlayGeek :d) Merci ! Effectivement ça marche :noel:
En plus je crois bien que je l'avais vue cette fonction load() dans le tuto du SdZ mais j'ai dû la zapper tellement j'adore tout coder dans une seule page :fou:
Du coup j'suis un peu déçu car mon défi n'est pas réussi, j'ai fail :noel:
Mais bon, il faut peut-être parfois rester modeste et se contenter d'une 2nde page pour alléger le code.

Voici le résultat http://s4.noelshack.com/uploads/images/5614110322821_i900.jpg :bave:

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment