[RESOLU] Recuperer paramètres d'un lien href avec php

Eléphanteau du PHP | 22 Messages

12 déc. 2015, 15:30

Bonjour a tous voila j'ai un petit progblème qui me bloque depuis quelques jours déja ,

Alors voila j'ai un lien qui permet de ''liker'' une publication, mais le problème est que quand je souhaite envoyer une notifications

l'action like récuperer que l'id du statut posté mais pas l'utilisateur qui l'as posté . J'ai donc dans mon lien de like :
<a   id="like<?= $micropost->m_id ?>" data-action="like"  class="like" href="like_micropost.php?id=<?= $micropost->m_id; ?>&user=<?= $micropost->user_id; ?>">Je valide </a>
Et dans le script php de like_micropost.php qui crée la notification
$q = $db->prepare('INSERT INTO notifications(subject_id, name, user_id,type_id)
			 VALUES(:subject_id, :name, :user_id,:type_id)');
			 $q->execute([
			 'subject_id' => $_GET['user'],
			 'name' => 'like_post',
			 'user_id' => get_session('user_id'),
			 'type_id' => 'Bonjour'

			 ]);
Voila si quelqu'un pouvait m'aider ce serait super gentil , parceque cela fait deux nuits blanches pour ça :)

Eléphant du PHP | 243 Messages

12 déc. 2015, 16:12

Tout d'abord, vérifie si les arguments sont bien envoyés par méthode GET: Tu devrais avoir : lien.fr?id=UN_ID&user=UN_USER
Dans le cas ou la transmission fonctionne, le problème viendrait alors du côté de la page qui réceptionne.

Si l'action ne récupère pas l'id de l'utilisateur, le problème vient peut être de cette ligne :

Code : Tout sélectionner

'user_id' => get_session('user_id'),
Pourquoi envoyer un GET $id si tu ne le réceptionnes pas ?
Pour moi, ça devrait plus ressembler à ça :
$q = $db->prepare('INSERT INTO notifications(subject_id, name, user_id,type_id)
       VALUES(:subject_id, :name, :user_id,:type_id)');
       $q->execute([
       'subject_id' => $_GET['id'],
       'name' => 'like_post',
       'user_id' => $_GET['user'],
       'type_id' => 'Bonjour'

       ]);
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

Eléphanteau du PHP | 22 Messages

12 déc. 2015, 16:18

Ca y est j'ai réussi a recuperer mon subject_id j'avais oublie de préciser que ma requete est en ajax donc du coup je le recupere ici :
$(document).ready(function() {
  $(".timeago").timeago();

  $("a.like").on("click",function(e){

    e.preventDefault();
      var id = $(this).attr("id");
     var url = 'ajax/micropost_like.php';

     var action = $(this).data('action');
    
     var micropost_id = id.split("like")[1];
    
     var data = 'micropost_id=' + micropost_id+ '&action=' + action + '&user=<?= $micropost->user_id?>' + '&statut=<?= $micropost->content ?>' ;
Le seul probleme c'est que ça récupère le contenu du premier statut et non du statut liké , alors que le user_id que je récupere est bien spécifique a celui du statut posté
Merci beaucoup pour votre réponse rapide

Eléphant du PHP | 243 Messages

12 déc. 2015, 16:46

Il va falloir remettre un peu d'ordre.
micropost_id est bien l'id du post liké ?
micropost_user est bien l'id de l'utilisateur qui like ?
Regarde tout d'abord avec Alert($micropost_id); pour savoir si tu reçois bien le bon id. Dans le cas contraire, ta méthode de transmission est incorrecte.
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

Eléphanteau du PHP | 22 Messages

12 déc. 2015, 16:49

Non , micropost_user et l'id de la personne qui a posté le statut ..

Eléphant du PHP | 243 Messages

12 déc. 2015, 17:01

D'accord, et donc quel est le problème ? Quelle est la valeur que tu n'arrives pas à recevoir ?
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

Eléphanteau du PHP | 22 Messages

12 déc. 2015, 21:50

Je n'arrive pas à récuperer l'id de la personne qui a poster le statut , pourtant dans le lien j'envoie bien cela en GET
<a style="color:#6fafff;"  id="like<?= $micropost->m_id ?>" data-action="like"  class="like" href="like_micropost.php?id=<?= $micropost->m_id; ?>">Je valide </a>

Mammouth du PHP | 2703 Messages

12 déc. 2015, 22:00

var data = 'micropost_id=' + micropost_id+ '&action=' + action + '&user=<?= $micropost->user_id?>' + '&statut=<?= $micropost->content ?>' ;
il y a donc des paramètres issus du javascript et d'autres de php. est-ce que dans le source de la page, ceux en php ont bien la valeur escomptée ?
quelle est l'url appelée par l'ajax ?

Eléphanteau du PHP | 22 Messages

12 déc. 2015, 22:03

Oui les valeurs dans le PHP sont bonnes

L'ajax appelle cette page:
<?php 
session_start();

require '../config/database.php';
require '../includes/functions.php';

extract($_POST);



if($action == 'like'){

 if(! user_has_already_liked_the_micropost($micropost_id)){
 	
 	
 	$q = $db->prepare('INSERT INTO notifications(subject_id, name, user_id,type_id)
			 VALUES(:subject_id, :name, :user_id,:type_id)');
			 $q->execute([
			 'subject_id' => $user,
			 'name' => 'like_post',
			 'user_id' => get_session('user_id'),
			 'type_id' => $statut

			 ]);
 	 	like_micropost($micropost_id);

 	
 }
}else{
	if(user_has_already_liked_the_micropost($micropost_id)){

 	unlike_micropost($micropost_id);

  }
}
echo get_likers_text($micropost_id);

Mammouth du PHP | 2703 Messages

12 déc. 2015, 22:16

extract($_POST);
l'ajax fait bien un appel en méthode post ?

Eléphanteau du PHP | 22 Messages

12 déc. 2015, 23:37

Oui oui

Mammouth du PHP | 2703 Messages

12 déc. 2015, 23:48

'subject_id' => $user,
j'aurais plutôt vu $micropost_id

Eléphanteau du PHP | 22 Messages

12 déc. 2015, 23:49

Ce n'est pas le micropost_id que je veux c'est le id de la personne qui a posté le statut , pour envoyer la notifications a la bonne personne :)

Eléphanteau du PHP | 22 Messages

14 déc. 2015, 21:23

Quelqu'un pourrait il m'aider ...