[XAJAX] Concatenation d'elements et attrib ID

Résolu
Cocoy1 Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   -  
Cocoy1 Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   -
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;	
}
A voir également:

5 réponses

Kopros Messages postés 595 Date d'inscription   Statut Membre Dernière intervention   89
 
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   Statut Membre Dernière intervention   2
 
Ok, je vois ça pour le appendchild.
0
Cocoy1 Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   2
 
J'ai régler l'histoire des id avec du js, reste le problème de concaténation :/
0
Kopros Messages postés 595 Date d'inscription   Statut Membre Dernière intervention   89
 
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   Statut Membre Dernière intervention   2
 
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   Statut Membre Dernière intervention   2
 
C'est pas un site, c'est un logiciel que je bricole en php ^^
0