[XAJAX] Concatenation d'elements et attrib ID

Résolu/Fermé
Cocoy1 Messages postés 37 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 22 août 2012 - 20 août 2012 à 15:01
Cocoy1 Messages postés 37 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 22 août 2012 - 22 août 2012 à 14:34
Bonjour,

Je cherche un moyen d'ajouter un input dans une div dans un formulaire sans effacer les valeurs des autre input de cette div. Pour le moment, les champs s'ajoutes bien, mais a chaque ajout, les autre champs de la même div sont vidés de leur valeur :(
Parallèlement, j'ai un probleme avec l'attribution d'id. $count ne s'incremente pas on dirait ...

Voici le code de la fonction appellé par un onclick, dans le but d'ajouter un nouveau produit sur une commande.
J'espère que vous pourrez m'aidez, ça fait un moment que je rame là :(
function afficherChamps($frs)
{
	global $bdd;
	static $count;
	$count++;

			
		$obj=new xajaxResponse();
		
		$infos="";
		$reponse = $bdd->query("SELECT idProduitA,designationA,idFrs FROM produita WHERE idFrs='".$frs."'");
		
		$infos.="<select id=listePro".$count."><option>Selectionner Produit</option>";
		
		while ($donnees = $reponse->fetch())
		{
				$infos.="<option id=".$donnees['idProduitA']." value=".$frs.">".$donnees['designationA']."</option>";	
		}
		$reponse->closeCursor();
		$infos.="</select>Quantite<input id=qte".$count." type='number'/>Prix/kg<input id=prix".$count." type='number'/><br />";
		
		
		$obj->append('champs', 'innerHTML', $infos);
		return $obj;	
}

5 réponses

Kopros Messages postés 597 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 89
20 août 2012 à 16:57
Salut !
Les inputs sont réinitialisés à cause du innerHTML.
Avec de l'AJAX normal il faudrait faire un appendChild en js, mais avec XAJAX je sais pas si c'est possible je ne connais pas cette library.

Pour le $count il n'est pas initialisé ça vient de là le pb. Par contre faut pas l'initialiser dans la fonction, sinon il aura toujours la même valeur et tu pourras avoirs plusieurs id identiques.
Je pense que le mieux c'est de reprendre la valeur de $frs qui a l'air d'$etre unique pour les id des nouveaux inputs
0
Cocoy1 Messages postés 37 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 22 août 2012 2
21 août 2012 à 10:18
Ok, je vois ça pour le appendchild.
0
Cocoy1 Messages postés 37 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 22 août 2012 2
20 août 2012 à 16:58
J'ai régler l'histoire des id avec du js, reste le problème de concaténation :/
0
Kopros Messages postés 597 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 89
20 août 2012 à 17:02
C'est pas très propre comme solution, c'est préférable de mettre directement le bon id.

Par ailleurs, il faut que ton site soit entièrement utilisable sans le js. Surtout si c'est un site marchand.
0
Cocoy1 Messages postés 37 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 22 août 2012 2
Modifié par Cocoy1 le 21/08/2012 à 14:20
voila, j'ai resolu le probleme finalement.

voici la fonction XAJAX
function afficherChamps($frs,$id) 
{ 
 global $bdd;   
  $obj=new xajaxResponse();  
  $infos=""; 
  $reponse = $bdd->query("SELECT idProduitA,designationA,idFrs FROM produita WHERE idFrs='".$frs."'");   
  $infos.="<select id=selectPro_".$id." name='selectPro_".$id."'><option>Selectionner Produit</option>";  
  while ($donnees = $reponse->fetch()) 
  { 
    $infos.="<option value=".$donnees['idProduitA'].">".$donnees['designationA']."</option>";  
  } 
  $reponse->closeCursor(); 
  $infos.="</select>Quantite<input id=qte_".$id." name='qte_".$id."' type='number'/>Prix/kg<input id=prix_".$id." name='prix_".$id."' type='number'/><br />";   
  $newDivId='div_'.($id+1); 
  $obj->insertAfter('div_'.$id, 'div', 'div_'.($id+1)); 
  $obj->append('div_'.($id+1), 'innerHTML', $infos); 
  return $obj;  
}


Je chope l'id par une fonction javascript qui me sert de compteur
var countDiv=0; 
function compteurDiv(){  
 countDiv++; 
 return countDiv; 
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cocoy1 Messages postés 37 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 22 août 2012 2
22 août 2012 à 14:34
C'est pas un site, c'est un logiciel que je bricole en php ^^
0