Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mes fonction jquery ne marche plus apres un appel de php

Sujet résolu
    11 février 2011 à 12:15:19

    Bonjour,

    J'ai un fichier php, avec un tableau dynamic, et dans cette meme page, j'ai une recherche rapide dynamic an jquery sans recharger la page, et qui appel un fichier php.

    ensuite, lorsque ma fonction se met en marche (fonction de recherche), j'appel le fichier php, qui contioent la requête et le tableau complet et je l'insert dans une div, du fichier principal.

    Mais, a ce moment la mes fonctions jquery ne marchent plus.


    Voici mes scripts :
    le fichier pricipal PHP
    <form id="mainform" action="">
                      <div id="loader" style="text-align:center; height:500px; display:none; margin:auto"><img src="images/loader.gif" alt="" width="32" height="32"  /></div>
    				<table border="0" width="100%" cellpadding="0" cellspacing="0" id="product-table">
    				<tr>
    					<th class="table-header-check"><a id="toggle-all" ></a> </th>
    					<th class="table-header-repeat line-left minwidth-1"><a href="">Nom</a>	</th>
    					<th class="table-header-repeat line-left minwidth-1"><a href="">Prénom</a></th>
    					<th class="table-header-repeat line-left"><a href="">Email</a></th>
    					<th class="table-header-repeat line-left"><a href="">Tel</a></th>
    					<th class="table-header-repeat line-left"><a href="">Date de naissance</a></th>
    					<th class="table-header-options line-left"><a href="">Options</a></th>
    				</tr>
                     <?php
    			
    			// enregistrement du mot 'cle' de categorie pour le comparer au mot 'parent' de souscat 		  
    			$sql = "SELECT * FROM contacts  ORDER BY fname ASC ";
    $sql_res=mysql_query($sql);  // Si ta version de PHP le permet, je te conseille de passer à PDO vu que ces fonctions vont devenir obsolètes bientôt
    $i=0;
    while($row=mysql_fetch_array($sql_res)) {
    ?>
    <tr <?php if ($i%2 == 0) echo "class='alternate-row'"; ?> id="ligne_<?php echo $row['id']; ?>" >
      <td><input type="checkbox"/></td>
      <td><div  class="editme" id="name<?php echo $row['id']; ?>" rel="<?php echo $row['id']; ?>" title="name"><?php echo $row['name'] ; ?></div></td>
      <td > <div class="editme" id="fname<?php echo $row['id']; ?>" rel="<?php echo $row['id']; ?>"  title="fname"><?php echo $row['fname'];  ?></div>
    </td>
      <td><div class="editme" id="mail<?php echo $row['id']; ?>" rel="<?php echo $row['id']; ?>"  title="mail"><?php echo $row['mail'];  ?></div></td>
      <td><div class="editme" id="tel<?php echo $row['id']; ?>" rel="<?php echo $row['id']; ?>"  title="tel"><?php echo $row['tel'];  ?></div></td>
      <td><?php echo $row['birthday'];  ?></td>
      <td class="options-width">
      <a href="#" title="Edit" class="icon-1 info-tooltip"></a>
      <a href="#" rel="<?php echo $row['id']; ?>" title="Edit" class="rmline icon-2 info-tooltip" ></a>
      <a href="" title="Edit" class="icon-3 info-tooltip"></a>
      <a href="" title="Edit" class="icon-4 info-tooltip"></a>
      <a href="" title="Edit" class="icon-5 info-tooltip"></a>
      </td>
    </tr>
    <?php
       $i++; }
    ?>
    				</table>
    				<!--  end product-table................................... --> 
    				</form>
    			</div>
    


    Voici mon code jquery
    $(document).ready(function() {
    	$("#formSearch").submit(function(){
    		$("#loader").show();
    		
    		
    		 if ($('#name').attr('selected')) cat = "name";
    		 else if ($('#all').attr('selected')) cat = "all";
    		else if ($('#fname').attr('selected')) cat = "fname";
    		else if ($('#mail').attr('selected')) cat = "mail";
    		else if ($('#age').attr('selected')) cat = "age";
    		else if ($('#tel').attr('selected')) cat = "tel";
    		var value = $(this).find("input[name=value]").val();
    		
    		$.post("sql.php", {cat : cat, value: value}, function(data){
    			
    			$("#loader").hide(); 		//cache le loader
    			$("#product-table").remove();
    			$("#resultatSearch").empty().append(data);
    		});
    		return false;
    	});
    	
    });
    


    et enfin mon fichier PHP et qui est appeler dans ma fonction jquery :
    <?php 
    require_once('connexion.php');
    
    extract($_POST);
    
     
    ?>
    
    <table border="0" width="100%" cellpadding="0" cellspacing="0" id="product-table">
    				<tr>
    					<th class="table-header-check"><a id="toggle-all" ></a> </th>
    					<th class="table-header-repeat line-left minwidth-1"><a href="">Nom</a>	</th>
    					<th class="table-header-repeat line-left minwidth-1"><a href="">Prénom</a></th>
    					<th class="table-header-repeat line-left"><a href="">Email</a></th>
    					<th class="table-header-repeat line-left"><a href="">Tel</a></th>
    					<th class="table-header-repeat line-left"><a href="">Date de naissance</a></th>
    					<th class="table-header-options line-left"><a href="">Options</a></th>
    				</tr>
                     <?php
    			
    			if ($cat == "all") {
    				  
    			$sql = "SELECT * FROM contacts WHERE  name LIKE  '%$value%' OR  fname LIKE  '%$value%' OR  mail LIKE  '%$value%' OR  tel LIKE  '%$value%' LIMIT 0, 10000";
    			}
    			else 
    			$sql = "SELECT * FROM  contacts WHERE  $cat LIKE  '%$value%'";
    			
    $sql_res=mysql_query($sql);  // Si ta version de PHP le permet, je te conseille de passer à PDO vu que ces fonctions vont devenir obsolètes bientôt
    $i=0;
    while($row=mysql_fetch_array($sql_res)) {
    ?>
    <tr <?php if ($i%2 == 0) echo "class='alternate-row'"; ?> id="ligne_<?php echo $row['id']; ?>" >
      <td><input type="checkbox"/></td>
      <td><div  class="editme" id="name<?php echo $row['id']; ?>" rel="<?php echo $row['id']; ?>" title="name"><?php echo $row['name'] ; ?></div></td>
      <td > <div class="editme" id="fname<?php echo $row['id']; ?>" rel="<?php echo $row['id']; ?>"  title="fname"><?php echo $row['fname'];  ?></div>
    </td>
      <td><div class="editme" id="mail<?php echo $row['id']; ?>" rel="<?php echo $row['id']; ?>"  title="mail"><?php echo $row['mail'];  ?></div></td>
      <td><div class="editme" id="tel<?php echo $row['id']; ?>" rel="<?php echo $row['id']; ?>"  title="tel"><?php echo $row['tel'];  ?></div></td>
      <td><?php echo $row['birthday'];  ?></td>
      <td class="options-width">
      <a href="#" title="Edit" class="icon-1 info-tooltip"></a>
      <a href="#" rel="<?php echo $row['id']; ?>" title="Edit" class="rmline icon-2 info-tooltip" ></a>
      <a href="" title="Edit" class="icon-3 info-tooltip"></a>
      <a href="" title="Edit" class="icon-4 info-tooltip"></a>
      <a href="" title="Edit" class="icon-5 info-tooltip"></a>
      </td>
    </tr>
    <?php
       $i++; }
    ?>
    </table>
    


    Tout marche nikel (dans la fonction de recherche) mais mes fonctions precedentes en jquery ne marchent plus comme celle la:
    $(document).ready(function() {
    	var edit = 0;
    	$("div.editme").click(function() {
    		if(edit == 0) {
    			id = $(this).attr("rel");
    			cat = $(this).attr("title");
    			fvalue = $("#"+cat+id).text();
    			if ($(this).children('input').length == 0) {
    				edit = 1;
    				var inputbox = "<input type='text' class='inputbox' value=\""+$(this).text()+"\"   style='width:100px'>";
    				var saveButton  = "<span id='save' style='cursor:pointer; margin-left: 10px; margin-right: 10px'><img src='images/valid.png' width='12'/></span>";
    				var cancelButton  = "<span id='cancel' style='cursor:pointer;'><img src='images/cancel.png' width='12'/></span> ";
    				$("#"+cat+id).html(inputbox+ saveButton + cancelButton);
    				$("input.inputbox").focus();
    				$("span#save").click(function() {
    					var value = $(".inputbox").val();
    					$("#"+cat+id).text('');
    					$("#"+cat+id).text(value);
    					$.post("edit.php", { id : id, value : value, cat: cat}, function(data){});
    				});
    				
    				$("span#cancel").click(function() {
    					var value = $(".inputbox").val();
    					$("#"+cat+id).text(fvalue);
    				});
    			}
    		} else {
    			edit = 0;
    		}
    	});
    });
    


    Merci de votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      11 février 2011 à 14:20:32

      Salut,

      le problème est que tu génères un élément avec jQuery et donc, il est nécessaire d'utiliser les évènements vivants (live) pour que tes évènements fonctionnent : http://www.siteduzero.com/tutoriel-3-1 [...] tml#ss_part_3
      • Partager sur Facebook
      • Partager sur Twitter
        11 février 2011 à 15:08:10

        Il faut donc que je fasse vivre ma fonction, sinon elle ne se recharge plus ?

        comment utiliser la fonction live alors ?
        J'ai essayer comme ca, mais ca m'a pas l'air d'etre correct :

        $(document).ready(function() {
        	var edit = 0;
        	.live($("div.editme").click(function() {
        		if(edit == 0) {
        			id = $(this).attr("rel");
        			cat = $(this).attr("title");
        			fvalue = $("#"+cat+id).text();
        			if ($(this).children('input').length == 0) {
        				edit = 1;
        				var inputbox = "<input type='text' class='inputbox' value=\""+$(this).text()+"\"   style='width:100px'>";
        				var saveButton  = "<span id='save' style='cursor:pointer; margin-left: 10px; margin-right: 10px'><img src='images/valid.png' width='12'/></span>";
        				var cancelButton  = "<span id='cancel' style='cursor:pointer;'><img src='images/cancel.png' width='12'/></span> ";
        				$("#"+cat+id).html(inputbox+ saveButton + cancelButton);
        				$("input.inputbox").focus();
        				$("span#save").click(function() {
        					var value = $(".inputbox").val();
        					$("#"+cat+id).text('');
        					$("#"+cat+id).text(value);
        					$.post("edit.php", { id : id, value : value, cat: cat}, function(data){});
        				});
        				
        				$("span#cancel").click(function() {
        					var value = $(".inputbox").val();
        					$("#"+cat+id).text(fvalue);
        				});
        			}
        		} else {
        			edit = 0;
        		}
        	});
            )
        });
        
        • Partager sur Facebook
        • Partager sur Twitter
          11 février 2011 à 15:15:12

          Nan la syntaxe n'est pas bonne : http://api.jquery.com/live/

          Il faut que tu le rajoutes sur tous tes click de cette manière :
          $("div.editme").click(function()
          

          devient :
          $("div.editme").live('click', function()
          

          idem pour les spans ;)
          • Partager sur Facebook
          • Partager sur Twitter

          Mes fonction jquery ne marche plus apres un appel de php

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown