Passer div id sur une event onclick a du PHP

Passer div id sur une event onclick a du PHP - PHP - Programmation

Marsh Posté le 20-08-2011 à 11:21:58    

Bonjour,

 

Quelqu'un pourrait me dire quel chemin emprunter pour passer l'id d'un div (concrètement une photo) a du php en cliquant dessus?

 

Je voudrais éviter de passer par l'adresse URL.

 

J'ai cherché sur internet et rien n'est clair!!

 

Merci de votre aide!


Message édité par Tekamolo le 20-08-2011 à 11:24:05
Reply

Marsh Posté le 20-08-2011 à 11:21:58   

Reply

Marsh Posté le 20-08-2011 à 13:37:38    

Il y a plusieurs possibilités :  
 
Soit tu veux chopper cet id dans le cadre d'un formulaire et dans ce cas, au moment de la génération du formulaire tu t'arranges pour que l'id soit inscrit dans un champ <input type='hidden' value='mon_id' />
 
Soit tu veux juste passer l'id à un traitement PHP (découplé ou non d'un formulaire) et dans ce cas-ci il te faut faire de l'AJAX.
 
En l'absence d'explications avancées, c'est tout ce que je peux te préconiser.


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 20-08-2011 à 14:08:57    

Hey Merci pour la réponse:

 

J'essaie d'utiliser Jquery, un formulaire ne marchera pas je crois parce que je dois cliquer sur l'image:

Citation :

 
  <script type="text/javascript">
   $(document).ready(function()
   {
    $('div.my_object_portfolio_box').click(
     function()
     {
      var id = $(this).attr("id" );
      $.post("portfolio.php", id, alert("Done:"+id));
      window.location='portfolio.php';
     });
   });
   
  </script>

 

Avec $.post() ont est sensé envoyer l'info dans le fichier "portofolio.php" mais je ne sais pas comment on l'exploite.
Et du coup je ne sais pas non plus comment s'il y a des erreurs. Personnes n'est vraiment explicite à ce sujet sur les autres forums.

 

Pour ce qui est de l'html:

 
Citation :

 

<div id="5" class="my_object_portfolio_box">
      <img src="image.jpg">
</div>

 


 

Les divs sont générés par un php script et donc peuvent être multiples.

 

Merci


Message édité par Tekamolo le 20-08-2011 à 14:25:34
Reply

Marsh Posté le 20-08-2011 à 20:45:28    

post() est un peu limité, je te conseille ajax() qui est la fonction sous-jacente disposant de l'intégralité des paramètres
 
Dans le JS de ta page :
 

Code :
  1. $.ajax({
  2.            type: 'POST',
  3.            url: 'mon_url_vers_mon_fichier_php',
  4.            data:'id='+$('#mon_id')+
  5.                '&id2='+$('#mon_id2'),
  6.            dataType:'html',                                 /* Type des données renvoyées : html, text, json...*/
  7.            cache: false,
  8.            success: function(html) {
  9.                 alert(html);
  10.                 $('#pouet').html(html); /* On place le résultat de l'appel dans un div ayant pour id pouet */    
  11.            },
  12.            error: function(){
  13.                 alert('erreuuuuuur !');
  14.            }
  15.     });


 
Dans le fichier php :
 

Code :
  1. <?php
  2.  
  3. $id  = (isset($_GET['id'] && is_int($_GET['id']) && $_GET['id']) ? $_GET['id'] : 0;
  4. $id2 = (isset($_GET['id2'] && is_int($_GET['id2']) && $_GET['id2']) ? $_GET['id2'] : 0;
  5.  
  6. $out = '';
  7. $out .=  '<div>$id=['.$id.']</div>';
  8. $out .=  '<div>$id2=['.$id2.']</div>';
  9.  
  10. echo $out;
  11.  
  12. ?>


 
En général je renvoie du json, constitué d'un tableau à deux postes, le premier est un code d'erreur (0 signifie ok, > 0 signifie une erreur) et le second poste est dédié aux données (message d'erreur, message informatif, données récupérées en base... etc.)


Message édité par CyberDenix le 20-08-2011 à 20:54:36

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 20-08-2011 à 21:14:36    

Un ID ne peut être qu'un simple nombre :o
 
/troll :D


---------------
:o
Reply

Marsh Posté le 20-08-2011 à 22:56:45    

Remarque tout à fait valide, car un id en html n'est pas valide W3C en tant que nombre, il faut un caractère non numérique style '_123'  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed