[RESOLU] actions sur un lien.php?var=$var

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] actions sur un lien.php?var=$var

Re: actions sur un lien.php?var=$var

par MmeRose » 12 juin 2014, 10:01

Ok, bon ben je vais le passer en résolu again. eT sI besoin je posterai un nouveau sujet.
Oui j'utilisais each pour chaque lien cliqué. Oui c'est ce qu'il me semblait la lecture à l'envers, ahahah.. Bref bonne journée

Re: actions sur un lien.php?var=$var

par xTG » 11 juin 2014, 18:35

Pour l'utilisation d'un "lu/pas lu" PHP est en effet la meilleure méthode puisque tu n'as qu'une seule requête (celle pour lister les résultats qui retourne aussi si le message est lu ou non).

Sinon mea culpa, j'avais un peu lu en diagonale je pense.
Le .each sert juste à affecter une action à l'évènement onclick.
Tu n'as donc de requête exécuté qu'au clic.

Re: actions sur un lien.php?var=$var

par MmeRose » 11 juin 2014, 10:23

Pourquoi 100 requêtes ? Même si il ya 20000 messages dans la bal, quand on click sur un lien_message avec param=$id unique, celui-ci fait ceci ou fait cela. Pourquoi 20000 reqs devraient être impliquées puisque param=$id_unique ? Ah oui si j'utilise each? C'est ça ??? Explique.

C'est parce que j'étais loin d'être sûre de quelles functions utiliser que je suis venue demander aux regards avertis de me dire ce qui ne va pas dans mes scripts.
J'apprends uniquement à l'aide de ce je trouve sur le web, je n'ai pas d'autre source. C'est pour ça que ça arrive que j'implémente des fonctions à tort, et à tâtons, et que je demande aux pros de m'orienter dans la bonne direction et de me dire ce que je fais mal... quand après des heures de recherches mes scripts ne donnent pas le résultat escompté...

C'est effectivement en faisant mon truc avec PHP que 'javais marqué sujet Résolu. Je vais voir pour la suite si PHP convient.

Re: actions sur un lien.php?var=$var

par xTG » 11 juin 2014, 07:33

.lien_message est :

Code : Tout sélectionner

<a class=\"lien_message\" href=\"read_message.php?topic_id=$topic_id&reponse_id=$reponse_id\"> ".$mess['from']." </a>
Avec jquery tu peux extraire la valeur href avec la fonction attr si je me souviens bien.
Ensuite il te faut utiliser des expressions régulières pour extraire les deux valeurs.
Et donc avec ces deux valeurs stockées dans des variables javascript tu pourrais faire fonctionner ton script.

Après j'ai un peu peur que tu veuilles utiliser du JS pour tout et n'importe quoi.
Si tu as 100 liens tu vas actuellement exécuter 100 requêtes HTTP qui feront donc 100 requêtes SQL...
Alors qu'en fait tu peux le faire en une seule requête : dans le PHP qui liste les messages. :)
Le JS mal utilisé peut faire très mal au serveur.

Re: [RESOLU] actions sur un lien.php?var=$var

par MmeRose » 10 juin 2014, 21:10

Alllo ??? Je ne te reçois.. pas bien...
Donc ça ne te branche pas de m'expliquer / d'éclaicir cette mystérieuse fonction que j'ai mis en link ? parce que pour moi, bien que je sache lire !!! elle reste Obscure - vu que newbye ajax. C'est tout à fait ce pourquoi je demande de l'aide, parce que je capte mal - décodage en cours... veuillez patienter ! -

Problème Non solved parce que j'ai plusieurs fonctions à faire sur ma boite de réception qui requièrent l'extraction de url?param=$val&autreparam=$autreval

Thank u d'avance ! merci

Re: [RESOLU] actions sur un lien.php?var=$var

par xTG » 10 juin 2014, 20:14

Pour faire fonctionner ton jquery il faudrait que tu puisses extraire les informations reponse_id et topic_id de l'élément .lien_message
Si tel est le cas alors ton script est faisable.

Re: [RESOLU] actions sur un lien.php?var=$var

par MmeRose » 10 juin 2014, 19:28

Ok...
Je ne m'y connais pas énormément en ajax, mais j'essaie, je passe mon temps à explorer les tutoriels et forums pour combler mes lacunes, et me débrouiller toute seule, autant que possible. Je fais la différence entre client et serveur, mais pour un lien avec param j'ai cru un instant que param=$value pouvait être interpreté par jquery. Puis rapidement j'ai compris que non (même si je ne l'ai pas précisé), et qu'il fallait chercher ailleurs.

J'ai vu une fonction jquery qui récupère les valeurs passées en paramètre dans les URL. Je pense que la solution est là, mais je ne l'ai pas bien comprise encore, vu que very débutante en ajax.. Si ça t'intéresse de me l'expliquer ... J'en serais ravie ! J'ai tenté de l'implémenter sans grand succès puisque pas tout compris.
SOURCE ICI http://code-tricks.com/get-url-paramete ... avascript/

J'ai implementé each pensant bien faire évidemment, puisque chaque tr td renvoie sur un paramètre d'url (reponse_id=$reponse_id) différent. Je n'ai pas toutes les clés en main, (je suis un peu blonde peut-être ???) c'est pour ça que je demandais les lumières de qui voudra bien m'expliquer / ou me diriger sur un tuto correspondant au cas que j'ai exposé.
Merci d'avance pour l'avancement , yeah !

Re: [RESOLU] actions sur un lien.php?var=$var

par xTG » 10 juin 2014, 17:47

Ton problème d'ajax est que tu n'as pas compris la différence entre code serveur et code client.
Le PHP ne fait que générer du code client, lorsque le code client s'exécute le PHP a déjà effectué tous les remplacements qu'il devait faire.

Code : Tout sélectionner

data : {reponse_id:reponse_id}
reponse_id est ici non défini, la variable JAVASCRIPT du même nom n'existe pas.

Code : Tout sélectionner

url : "js/traitement_message_lu.php?reponse_id=<?php echo $reponse_id; ?>&topic_id=<?php echo $topic_id; ?>",
Ceci n'a pas de sens, tu vas en fait pour chaque lien (cf .each) appliquer un seul et même traitement, donc une seule valeur de $reponse_id et $topic_id.
Ce que tu fais est semblable à ceci :
$variable = 0;
for($i=0; $i<10; $i++)
{
  $variable = $i;
  echo $i;
}
Quel est l'affichage ? 0123456789
Quelle est la valeur de $variable à la fin de la boucle (pour la parallèle la boucle est l'exécution du code PHP, l'exploitation de la variable en dehors de la boucle peut se comprendre comme l'exécution du code Javascript) ? 9 et uniquement 9 ;)
Ce que tu fais dans le pire des cas (car je n'ai pas la vision de tout ton code) c'est d'avoir 9 code javascript différents, mais seul le dernier avec les dernières valeurs de variable sera exécuté.
C'est le rapport entre l'affichage et la valeur de mon exemple, le PHP te retourne X affichage(s) (comprendre écriture dans la réponse HTTP => code HTML retourné au navigateur), tu as donc un code JS dupliqué X fois, seul le dernier code sera exécuté (et donc avec la dernière valeur PHP).

Re: actions sur un lien.php?var=$var

par MmeRose » 10 juin 2014, 13:52

Bon, problème résolu différemment, sans ajax. Mais j'aurais aimé comprendre comment ça fonctionne avec des params en url. J'ai trouvé des fonctions à ce sujet, mais qui restent encore bien ténébreuses pour moi.
Pour obtenir ce que je voulais, c'était easy sans ajax:
if lu == 1 { td <a class="lu" >}
else { td <a class="non_lu" >}

actions sur un lien.php?var=$var

par MmeRose » 10 juin 2014, 12:27

Bonjour :)

Dans ce premier cas, je voudrais qu'au click sur un lien celui-ci change de classe css. Easy me direz-vous ! mais pourquoi je n'y arrive pas ?! Je n'ai pas tout saisi, et je viens vous demander votre expertise en la matière afin que je comprenne bien comment ça se passe :)

Donc : Boite de réception (messagerie interne).
J'affiche la liste des messages reçus, sur 3 colonnes, c'est à dire Expéditeur - Objet - Date, et chacun des contenus de ces colonnes est encadré d'un lien vers le message :
<tr>
<td class=\"td_bal\"><a class=\"lien_message\"  href=\"read_message.php?topic_id=$topic_id&reponse_id=$reponse_id\">   ".$mess['from']."  </a></td> 
<td class=\"td_bal\"><a class=\"lien_message\"  href=\"read_message.php?topic_id=$topic_id&reponse_id=$reponse_id\">   ".$mess['topic']."  </a></td> 
<td class=\"td_bal\"><a class=\"lien_message\"  href=\"read_message.php?topic_id=$topic_id&reponse_id=$reponse_id\">   ".$mess['date']."  </a></td> 
</tr>
Voici mon js :
[javascript]
$(document).ready(function(){
$(".lien_message").each(function() { $(this).click(function()
{ $.ajax ({ type : 'GET',
url : "js/traitement_message_lu.php?reponse_id=<?php echo $reponse_id; ?>&topic_id=<?php echo $topic_id; ?>",
data : {reponse_id:reponse_id},
success : function(data) { if(data==1) {$(this).attr('class', 'message_lu'); }
},
error: function(){ alert("Erreur. Veuillez contacter l'administrateur");}

});
});
});

});
[/javascript]

et mon traitement.php
<?php
if(isset($_GET['reponse_id']) && isset($_GET['topic_id']))
  { include('../../mysql_connect_immo.php');
    $query = "SELECT opened FROM marimmo_topics_reponses WHERE topic_id='".$_GET['topic_id']."' AND reponse_id='".$_GET['reponse_id']."' ";
    $req = mysql_query($query) or die (mysql_error());
    $data=mysql_fetch_assoc($req);

if($data["opened"] =='1')
  {
  echo $opened;
  }echo $opened;
  }
  
Quand je remplace <a href="read_message.php?reponse_id=" etc> par <a href="#.php?reponse_id=$reponse_id etc"> je vois dans la console que
data : {reponse_id:reponse_id}, is not defined. C'est déjà ça. Mais lorsque je survole mon lien je vois bien que reponse_id=27 donc pourquoi $reponse_id is not defined ? Comment régler ça svp ?

Merci très beaucoup d'avance pour l'éclairage :)