Partage
  • Partager sur Facebook
  • Partager sur Twitter

L'appelle d'une fonction Javascript ne Fonctionne plus

Sujet résolu
    11 juillet 2011 à 17:09:54

    Bonjour à tous,

    Je suis en train de réaliser un projet et j'ai un problème que je ne comprend (désolé si le nom du sujet et vague.

    Je suis en train de créer un site de gestion d'inventaire, et j'utilise beaucoup Ajax pour afficher dans une Div "Conteneur" l'ensemble de mes données.

    Lorsque je me trouve sur la description d'un matériel, j'ai la possibilité de modifier ses attributs, si par exemple je modifie la personne attribué au matériel que je valide ( pas de souci jusque la) et que je souhaite rechanger la personne, alors rien ne se passe lors de me deuxièmes clique sur l’icône d'édition.

    Je ne sais pas pourquoi, mon ordinateur "ne veut pas" interpreter une deuxième fois la fonction demandée

    Mon code :

    Ordinateur.class.php
    <?php ...
    	echo "<p><b> Attribu&eacute; &agrave; : </b> 
    		<span id=\"userModifiable\">
    			<a href=\"#\" onclick=\"afficherDetail('Personne' ,".$userid .");return false;\">" .$utilisateur . '</a>'
    			.'<a href="#" class="edit" onclick="modifierUtilisateur('.$userid.', \'Ordinateur\', '.$id.')"></a>
    		</span>'."</p>"; 
    ... ?>
    


    header.php
    function modifierUtilisateur(userid,type,typeid){
    
              var xhr = getXHR();// recuperer le xhr
              useXHR(xhr,"action_modifier.php","userModifiable"); // définir la zone qui va etre modifiée
              action = 'modifierUtilisateur';
              xhr.send("action=" + action + "&userid="+ userid + "&type="+ type + "&typeid="+ typeid);  
    
          }
          
          function modifierUtilisateurOK(olduserid, newuserid, type, typeid ){
    		
    	  var xhr = getXHR(); // recuperer le xhr
              useXHR(xhr,"action_modifier.php","userModifiable"); // définir la zone qui va etre modifiée
              action = 'modifierUtilisateurOK';
              xhr.send("action=" + action + "&olduserid="+ olduserid +"&newuserid="+ newuserid + "&type="+ type + "&typeid="+ typeid);  
          	}
    


    action_modifier.php
    <?php
    
    
    // Génerer un menu déroulant de users
    //
    function generateSelectDropdownUsers($name = '', $options = array(), $selected,  $type, $typeid ) {
    
    	$html = '<select id="'.$name.'" name="'.$name.'"  onChange="modifierUtilisateurOK('. $selected .', document.getElementById(\''.$name.'\').value, 
    			\''. $type .'\', '. $typeid .')">';
    	foreach ($options as $key => $value) {
    		if ($selected == $value[id]) $html .= '<option value='.$value[id].' selected="selected">'.$value[value].'</option>';
    		$html .= '<option value='.$value[id].'>'.$value[value].'</option>';
    	}
    	$html .= '</select>';
    	return $html;
    }
    
    // Récuperer l'action souhaiter (définit dans le code js)
    //
    if (isset($_POST["action"])){
    	global $DB;
    	
    	$action =	$_POST["action"];
    	
    	switch($action){
    	
    	//Creer le menu déroulant d'utilisateur et l'afficher
    	//
    	case "modifierUtilisateur":
    		
    		$userid = $_POST["userid"];
    		$type= $_POST["type"];
    		$typeid = $_POST["typeid"];
    		
    		$sql= ' SELECT id, realname, firstname'
    			. ' FROM glpi_users'
    			. ' WHERE auths_id =1'
    			. ' AND realname != " "'
    			. ' AND firstname != " "'
    			. ' ORDER BY glpi_users.realname ASC'; 
    	
    		$result = $DB->query($sql);
    		
    		$param = array(0 => array('id' => 'null', 'value' => '-------' ));
    		$i = 2;
    			while ($data = $DB->fetch_array($result)) {
    				if($data[id] == $userid)
    					$array = array( 1 => array('id' => $data[id], 'value' => $data[realname] . " " . $data[firstname] ));
    				else {
    					$array = array( $i => array('id' => $data[id], 'value' => $data[realname] . " " . $data[firstname] ));
    					$i++;
    				}
    				$param = array_merge($param, $array);
    			}
    		$name = 'dropdown_users';
    		$html = generateSelectDropdownUsers($name, $param,$userid, $type , $typeid) ;
    		$html .= '<a href="#" class="stopedit" onclick="afficherDetail(\''.$type.'\','.$typeid.');return false;"></a>';
    		echo $html ;
    		break;
    	
    	//Modfier l'utilisateur dans la base
    	//
    	case "modifierUtilisateurOK":
    		$olduserid = $_POST["olduserid"]; 
    		$newuserid = $_POST["newuserid"];
    		$type 	= $_POST["type"]; 
    		$typeid = $_POST["typeid"]; 
    		
    		$table = getTable($type);
    		
    		$query = ' UPDATE '.$table.' SET users_id = '. $newuserid .' where id = '. $typeid .' ; ';
    		$result = $DB->query($query);
    		
    		$sql= ' SELECT realname, firstname FROM glpi_users where id=' . $newuserid ;
    		$result = $DB->query($sql);
    		while ($data = $DB->fetch_array($result)) {
    			if($data[realname] != null)
    				$utilisateur = $data[firstname] . " " . $data[realname];
    			else
    				$utilisateur = "non d&eacute;finit";
    				
    			echo "<a href=\"#\" onclick=\"afficherDetail('Personne' ,".$userid .");return false;\">". $utilisateur . '</a>
    			<a href="#" class="edit" onclick="modifierUtilisateur('.$newuserid.', '. $type.', '.$typeid.'); return false"></a>';
    		}
    
    
    		break;
    	}
    }
    ?>
    


    En espérant que cela vous permettra de m'aider.
    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      12 juillet 2011 à 8:51:09

      Je pense que ton $userid n'existe plus quand tu raffraîchis comme tu le définis avec $_POST["userid"]. Une solution serait peut-être de passer par une variable de session.
      • Partager sur Facebook
      • Partager sur Twitter
        12 juillet 2011 à 10:02:37

        Même si la variable $userid n'existait plus, je devrait être capable d’exécuter un fonction JavaScript (alert() par exemple)mais je n'en suis pas capable du tout.

        Cependant je vais essayer la variable de session.

        Edit

        Solution trouvé, il manquait des \' \' sur mes liens ...
        • Partager sur Facebook
        • Partager sur Twitter

        L'appelle d'une fonction Javascript ne Fonctionne plus

        × 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