Bonjour,
J'ai réussi a faire fonctionner un script JS pour faire un bouton like sans rafrechir la page.
Le problème c'est que comme je suis nul en JS, j'arrive pas à tranmettre 2 variables PHP.
J'en transmet une, mais je sais pas comment faire pour l'autre.
Mon fichier modules/Gallery/vote.js
function showUser(sid){
var data = {id:sid };
$.ajax({
type: "POST",
url: 'modules/Gallery/vote.ajx.php',
data: data,
async: true,
})
.done(function(reponse){
console.log(reponse);
document.getElementById('vote').onclick = '';
})
.fail(function(jqXHR, textStatus){
alert(textStatus);
});
}
Ensuite, mon fichier modules:Gallery/vote.ajx.php
<?php
$sid = !empty($_POST['sid']) ? $_POST['sid'] : NULL;
$pseudo = "";
$mysqli = new mysqli('mysql5-10.pro', 'xxxxxxx', 'xxxxxxx', 'xxxxxxx');
if($mysqli->connect_error) {
die('Erreur de connexion (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
}
if ($sid)
{
$mysqli->query("UPDATE base_gallery SET coeur = coeur+1 WHERE sid = '".$sid."'");
$mysqli->query("INSERT INTO base_vote ( `id` , `module` , `vid` , `ip` , `vote` ) VALUES ( '' , '" . $pseudo . "' , '" . $sid . "' , '' , '' )");
}
?>
Et sur mon index
echo "<a href='javascript:void(0)' onclick='showUser($sid);'><img style=\"width: 16px;height: auto;\" src=\"modules/Gallery/images/coeur0.png\" onclick=\"this.src='modules/Gallery/images/coeur1.png'\"></a>";
Voilà, j'ai abrégé l'index, si non il y aurai eu trop de contenu inutile.
Ce que je voudrais faire, c'est en plus de transmettre la variable PHP $sid, transmettre aussi $pseudo.
SI quelqu'un peux m'aider ça serai super sympas.
Merci d'avance.
Rajoute des propriétés à ton objet "data"... Si tu es nul en JS profites-en pour étudier le sujet ;-)
Merci pour ta réponse rapide Psylozoff,
J'ai déjà essayé, je suis sur le sujet depuis ce matin tôt, mais sans résultat, c'est pour ça que je suis ici.
Si ça aide, voici les dernières modification que j'ai faite, mais elle ne fonctionne pas :
Le fichier modules/Gallery/vote.js
function showUser(sid, pseudo){
$.ajax({
type: "POST",
url: 'modules/Gallery/vote.ajx.php',
data: 'sid=' + sid + '&pseudo=' + pseudo,
async: true,
})
.done(function(reponse){
console.log(reponse);
document.getElementById('vote').onclick = '';
})
.fail(function(jqXHR, textStatus){
alert(textStatus);
});
}
Ensuite, mon fichier modules:Gallery/vote.ajx.php
<?php
$sid = !empty($_POST['sid']) ? $_POST['sid'] : NULL;
$pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL;
$mysqli = new mysqli('mysql5-10.pro', 'xxxxxxx', 'xxxxxxx', 'xxxxxxx');
if($mysqli->connect_error) {
die('Erreur de connexion (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
}
if ($sid)
{
$mysqli->query("UPDATE base_gallery SET coeur = coeur+1 WHERE sid = '".$sid."'");
$mysqli->query("INSERT INTO base_vote ( `id` , `module` , `vid` , `ip` , `vote` ) VALUES ( '' , '" . $pseudo . "' , '" . $sid . "' , '' , '' )");
}
?>
Et sur mon index
echo "<a href='javascript:void(0)' onclick='showUser($sid, $pseudo);'>like</a>";
Bonsoir.
Il y a plusieurs problèmes dans ton code.
Le premier, c'est que dans ton code JavaScript, tu nomme une variable id dans les datas que tu envoies dans ton script PHP, sauf que dans ton code PHP, tu attends l'index sid, ce qui est incompatible, par conséquent ta variable $sid
sera toujours NULL.
Ensuite, à moins que dans ton code PHP de ta page index tu définisses la variable $sid
, je ne vois pas comment tu pourrais l'utiliser dans la page index.
Pour terminer, si tu veux transmettre les valeurs de deux variables PHP à ta fonction JavaScript, il te suffit de faire :
echo "<a href='javascript:void(0)' onclick='showUser($sid, $pseudo);'><img style=\"width: 16px;height: auto;\" src=\"modules/Gallery/images/coeur0.png\" onclick=\"this.src='modules/Gallery/images/coeur1.png'\"></a>";
function showUser(sid, pseudo) {
var data = {id: sid, pseudo: pseudo};
// ...
}
Merci Lartak,
J'ai souvenir d'avoir déjà essayé ça aussi, mais je vais tenter à nouveau.
Ben non ça marche pas, j'ai ça comme erreur :
MON_PSEUDO is not defined at HTMLAnchorElement.onclick (index.php?file=Gallery:85)
Pourtant si je fait un "echo" sur la variable $pseuso, elle s'affiche.
"data" est sensé contenir un OBJET! T'as cherché "objet javascript" sur ton navigateur..??
Et on la trouve où la variable "MONPSEUDO"..?? Si tu veux qu'on t'aide, le minimum serait de nous montrer la partie de ton code qui renvoie l'erreur --'
Tu commences par dire :
MON_PSEUDO is not defined at HTMLAnchorElement.onclick (index.php?file=Gallery:85)
Et ensuite :
Pourtant si je fait un "echo" sur la variable $pseuso, elle s'affiche.
Donc le nom de ta variable change entre temps, ce n'est pas étonnant que tu aies des erreurs.
Psylozoff : "data" contient la viriable "data" comme me l'a dit Lartak.
Et la variable "MON_PSEUDO" dsl j'ai pas précisé, mais c'est la variable "$pseudo".
Et l'erreur c'est sur onclick visible sur le dernier poste de Lartak, j'ai mis :
<a href='javascript:void(0)' onclick='showUser($sid, $pseudo);'>
Lartak, c'est une variable, biensur que ça valeur change en fonction de qui est connecté, mais le nom de la variable ne change pas, c'est moi qui est écrit "MON_PSEUDO" pour que vous compreniez vu que ça avais écrit mon vrais pseudo pas le nom de la variable php.
Faut-il vraiment que je me répète?? La propriété data de l'objet que tu passes à la méthode "ajax" est sensée contenir un OBJET!!! As-tu étudié la notion d'objet en javascript?? A quoi ça ressemble, comment ça se déclare? Si ça n'est pas le cas, rends-nous service ainsi qu'à toi-même et vas-y -_-''
Ensuite, question rhétorique, évidemment : as-tu consulté la documentation de la méthode "ajax" du framework que tu utilises..? Donc, vas-y!!
PS : ton erreur dit simplement que php ne trouve pas $_POST['MON_PSEUDO']...
Lartak, c'est une variable, biensur que ça valeur change
Tu as tout faux là, j'ai dit que le nom de la variable avait changé, pas sa valeur ...
Excuse moi Psylozoff,
Moi et le JS c'est comme l'eau et le feu.
J'utilise que du 100% php/sql et le reste en html et css. mais pour ce foutu bouton je suis obligé d'utiliser l'ajax.
Si tu comprend, je veux pas suivre une formation de plusieurs semaines sur le JS pour faire un bouton.
Donc malheureusement, je comprend pas de quoi tu veux me parler quand tu me demande de vérifier l'objet de "data".
Si ça peut t'aider, si je fait un "echo" pour afficher la variable "$pseudo" à coté du "onclick" elle s'affiche bien.
Mais si je met ça, j'ai aucune erreur
<a href='javascript:void(0)' onclick='showUser($sid);'>
Et si je met ça, erreur ;
<a href='javascript:void(0)' onclick='showUser($sid, $pseudo);'>
Et je comprend pas pourquoi, c'est ce pourquoi je suis là
Désolé Lartak, je t'ai mal lue. excuse moi. J'espère que mon manque de connaissance en JS ne vous froisse pas trop. Je suis juste là pour un peut d'aide.
L'objet data c'est dans le JavaScript, pas dans le PHP, soit : var data = {id: sid, pseudo: pseudo};
.
Y'a pas besoin d'y passer des heures pour comprendre les bases de JS :-s C'est un langage de programmation comme un autre, avec des spécificités qu'il n'est pas nécessaire d'étudier pour comprendre ce qu'il se passe!
Si tu n'as pas envie de t'aider toi-même, ne demande pas de l'aide! Si tu veux qu'on fasse à ta place, dis-le clairement... "Salut, je veux ça, est-ce que quelqu'un peut me pondre le code?"
Personnellement, ce qui me froisse c'est que tu refuses catégoriquement d'acquérir la compréhension de ce dont on te parle... Tu veux juste qu'on te dise quoi écrire sans que tu ais besoin de comprendre ce qu'on t'indiquera! Et le problème c'est que tu arrives en prétendant vouloir comprendre :-D
"Salut, je veux ça, est-ce que quelqu'un peut me pondre le code?"
Sauf que ce n'est pas quelque chose que nous ferons, car comme tu as pu le voir quand tu as créé ton sujet, il y a la notification :
Le forum permet l'entraide, ne postez pas un sujet en espérant que les gens créent le code à votre place.
Non, c'est pas ce que je demande, mais je pensais juste que ce forum pouvait être unpeut plus ouvert d'esprit.
C'est un forum d'aide, je demande de l'aide, et on me dit, "t'as cas te former".
Désolé, mais je vois pas l'intéret d'un forum dans ce cas, si c'est juste pour dire au gens d'apprendre les choses qu'ils ne savent pas eux même.
C'est pas grave, je vais chercher de l'aide ailleur, j'ai juste demandé, si vous voulez pas, je vais pas insister, chacun est libre de ses choix.
Bonne suite sur ce forum, et merci quand même pour votre aide.
Et on t'a aidé ;-) On t'a dit quoi chercher et où...
Après, si tu ne veux pas faire ta part, bon vent :-s
Désolé, mais je vois pas l'intéret d'un forum dans ce cas, si c'est juste pour dire au gens d'apprendre les choses qu'ils ne savent pas eux même.
Nous n'avons à aucun moment dit ça.
Ce qui t'es reproché, c'est que nous t'expliquons certaines choses dont tu poses la question, nous te montrons également des exemples de codes en relation, mais tu ne sembles pas faire l'effort de les assimiler.
Vu que tu ne veux pas visionner des tutoriels en regard des dits problèmes, nous te procurons le minimum d'aide nécessaire concernant tes questions, nous n'allons quand même pas te faire un cours ou te donner des explications plus que détaillées, sinon ça reviendrait au même que tu suives des tutoriels sur le sujet et que tu t'y exerces.
À savoir bien sûr, que là tu nous dit que tu veux juste que nous te fournissions des explications sur ce cas là, mais ne t'attends pas à ce que nous fassions la même chose si tu rencontres un problème équivalent, car ce serait injurieux pour nous étant donné que ça voudrait dire que tu te paies notre tête et personne sur ce site ne voudra t'aider par la suite.
Donc avant d'interpréter nos propos, il serait judicieux que tu fasses attention à ce que tu dis et à ce que tu demandes.
Je suis désolé d'avoir mal compris vos messages.
Mais j'ai pas compris où cherché, à part chercher une formation en ajax.
Et au niveau de l'oriantation, j'ai vue aucun lien qui me permet de suivre quelque chose.
Donc désolé d'avoir été décourragé par le fait d'avoir crue que la seul solution proposé été de chercher un formation ajax avant de poser mes questions.
J'ai simplement crue que ce forum aidé aussi les gens qui pouvaient avoir besoin d'une aide sur un langage qu'ils ne connaissé pas.
Mais si il faut que je me forme en JS puis en AJAX avant de faire des demandes.
Comprenez bien que je préfère demander ailleur, et si j'ai pas m'a solution, j'attendrai ma formation en juillet sur le JS pour trouver moi même. mais dans les 2 cas, j'aurai pas de solution sur ce forum !
Pourtant je t'ai indiqué "objet javascript"... Je ne vais quand même pas te fournir un lien vers le résultat d'une recherche google, si? Tu parles d'ajax mais je me demande si tu es conscient que ça n'est qu'un concept, et sais-tu seulement ce que ça signifie? Ce serait pourtant la base ^^'
Ensuite, très simplement, et ça te servira pour l'immense majorité des problèmes de connaissances que tu pourras rencontrer : quand tu ignores la définition d'un mot ou que tu as un doute sur sa signification ou son utilisation, tu vas voir dans le dictionnaire, papier ou virtuel...
Là, c'est pareil! Cependant, il faut effectivement savoir comment s'appelle l'ouvrage qui t'en dira plus en fonction de la problématique : si tu cherches un numéro de téléphone mais que tu n'as pas connaissance de l'existence des annuaires, tu risques de chercher longtemps ou plutôt d'abandonner...
Alors, de la même façon que pour tous les termes que tu ne comprends pas il existe wikipédia (entre autres), pour tout ce qui concerne les API et les frameworks il existe des documentations! Donc, si tu as un problème avec la fonction php "array_filter", tu vas demander à google "php documentation array_filter"! Et dans ton cas tu devrais essayer "jquery documentation ajax"... En pratique, utiliser "doc" en lieu et place de "documentation" marche également!
Tu n'as pas l'air de comprendre une chose essentielle... Pour t'aider il va falloir que je m'assure de ne pas dire de conneries et je vais donc aller moi-même consulter la doc..! Tu ne trouves pas ça stupide? La plupart de ceux qui aident autrui, ici comme ailleurs, le font en consultant les docs ou via les connaissances personnelles qu'ils ont acquis assez récemment pour s'en souvenir clairement! Acquis comment? En consultant les docs!!!
Et, personnellement, je ne suis pas forcément les règles du forum... Si quelqu'un débarque en assumant franchement sa flemme et en demandant à ce qu'on lui ponde du code, je pourrais bien, si j'en ai l'envie, le faire ^^'
Ecoute Psylozoff, si tu l'as pas remarqué, je suis pas venu me prendre la tête avec des gens que je ne connais pas.
Je cherchais juste une aide pour un problème. après chacun ça libre interprètation des propos des autres.
Il semblerai que mes propos ont été mal interprété, et j'en suis le 1er désolé car c'est entienrement de ma faute.
Mais ton message après mes excuses confirme ce que j'ai dis.
Tu me dis "objet javascript" et c'est tout, pas de lien pas de référence tutorial, juste 2 mots et débrouille toi. comment tu veux que quelqu'un qui ne connais pas le langage puisse comprendre ?
De nouveau je comprend que je dois apprendre seul pour touver mes réponses, et que vous êtes pas là pour me donner la réponse.
Mais vous me donnez pas non plus de formation, ni de liens pour trouver une réponse ou même un formation adapté à mon problème, alors quesque vous pouvez me donner ?
D'où m'a remise en question de l'utilité d'un forum.
Désolé de te le dire Psylozoff, c'est pas la 1er fois que je participe à un forum d'entre aide, parcontre c'est la 1er fois que j'ai de telles réponses.
Donc, te dire quoi chercher c'est pas de l'aide..? Te dire où aller ça n'est pas aiguiller? Je suis parfaitement sûr que tu n'as même pas essayé de taper ces mots dans google ^^' Justement parce que tu t'en fous :-s Et tu l'as d'ailleurs dit toi-même "je me considère comme une bille en JS et j'ai pas prévu que ça change!"
J'avoue qu'effectivement tu es le premier qui remet en cause ce que je lui dis sans même essayer de fouiller dans la direction que je lui indique... Cependant, au vu de tes premiers messages j'avais pressenti ce que tu voulais, malgré que par optimisme j'aie essayé à plusieurs reprises de t'aider :-)
M'enfin bon, je vais pas te forcer à agir intelligemment et je laisse le soin à ceux qui en ont la motivation de faire à ta place la démarche d'aller chercher la réponse où tu n'as pas envie d'aller ;-)