Rechercher : dans
Par :

Ajouter des champs texte

Dernière réponse le 28 aoû 2007 à 19:21:17 basttov, le 27 aoû 2007 à 13:10:07 
 Signaler ce message aux modérateurs

Bonsoir voilà, j'ai voulu récuperer le contenu des champs textes dynamiques dans un formuliare puis l'inserer dans la base de donnees mysql ;
selon le besoin je clique sur le bouton ajouter et un champ de texte s'ajoute ,le probleme c que je veux recuperer le contenu des champs ajoutés puis l'inserer dans une table mysql;
voici le code si dessous et merci bien j'ai besoin de votre aide:

<button onClick="javascript:addSelect();" type="button">Ajouter Patente </button>

<!-- Création d'une liste modèle, qui ne sera pas visible -->
<div id="divCible"> </strong><strong><strong>Patente1</s
trong> <strong> :</stron
g>
<input type=text size=20 id="select_patente" name="patente">
<strong>   Adres
se1  :</strong> 
<textarea id="select_adresse" name="adresee">
</div>
<?php
echo "<script type=\"text/javascript\">\n";

echo " var i=0;

function addSelect()
{
i++;

// On récupère l'endroit où devra être ajouté la liste

var divCible = document.getElementById(\"divCible\");

// On récupère la liste modèle

var selModele = document.getElementById(\"select_patente\");
var selModele2 = document.getElementById(\"select_adresse\");

// On la clone dans une nouvelle variable

var nvxSel = selModele.cloneNode(true);
var nvxSel2 = selModele2.cloneNode(true);
// (pour la présentation, on crée un retour à la ligne)

var br = document.createElement(\"br\");

// On adapte les attributs de la nouvelle liste : nom, id et affichage
nvxSel.name = \"patente\" + i;
nvxSel.id = \"patente\" + i;
nvxSel.style.display = \"inline\";
nvxSel2.name = \"adresse\" + i;
nvxSel2.id = \"adresse\" + i;
nvxSel2.style.display = \"inline\";

// On ajoute tout ça à l'emplacement voulu
Ajouter();
nvxSel.value='';
divCible.appendChild(nvxSel);
Ajouter2();
nvxSel2.value='';
divCible.appendChild(nvxSel2);
divCible.appendChild(br);

var nlignes = 1;
function Ajouter(){
nlignes++;
divCible.insertAdjacentHTML('BeforeEnd','<str
ong> <br>Patente '+nlignes+'  :</strong>')
return nlignes;
};
function Ajouter2(){
divCible.insertAdjacentHTML('BeforeEnd','&nb
sp;    &
nbsp;<strong>Adresse' +nlignes+'  :</strong>')
};
echo "</script>\n";
exit();
?>

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « Ajouter des champs texte » dans :
Sed - Insertion de texte VoirInsérer du texte dans un fichier Introduction Syntaxe Ajout de texte Insérer une ligne avec "i" Ajouter une ligne avec "a" Échanger une ligne avec "c" Introduction Il est parfois utile de pouvoir insérer du texte en en-tête d'un ou...

1

Alain42, le 27 aoû 2007 à 13:45:29

Salut,

Qu'est ce qui ne marche pas ? Donnes nous plus de précisions sur les erreurs qui sont données lors de l'exécution du script.

Permets moi qqs remarques:

- mets ton Javascript entre les balises <head> </head> de ta page html et écris le "normalement" plutôt que de le créer par des echo en php. Cela t'évitera tous les échappements \", et donc plus facile a débugger.

- insertAdjacentHTML n'est d'après ce que j'ai lu compatible seulement en IE, utilises plutôt innerHTML

Configuration: Windows XP
Firefox 2.0.0.6

Répondre à Alain42

2

basttov, le 27 aoû 2007 à 15:56:47

Je vous remercie Alain42 de vous voir interessé à mon prob,pourtant
tu peux copier le code,ca marche tres bien,je clique sur le bouton ajouter un champs text s'ajoute ici pas de probleme,mais il me faut me faut une facon pour recuperer le contenu de ces champs textes ajoutées; vous y etes?
j'ai deja ecris le code en javascript mais peut importe le language avec lequel le code est ecrit,mob prob c coment puis je recuperer le contenu de ces champs ajoutées soit en javascript soit en php.
je vous salut de ma part;merci encore une fois.

Configuration: Windows XP
Internet Explorer 6.0

Répondre à basttov

3

Alain42, le 27 aoû 2007 à 17:00:02

J'ai repris ton code, il ne marche pas chez moi, il y avait pas mal d'erreurs, manque de point virgules etc....

donc si tu veux essayes celui là, j'ai remis le Javascript normalement entre les balises head et ecris sans le php (c'est beaucoup plus facile à débugger !!)

Donc le code ci dessous fonctionne mais seulement sous Internet Explorer à cause de la fonction:
insertAdjacentHTML qui n'est pas reconnue par Mozilla firefox

<html>
<head>
<script language="javascript" type="text/javascript">
 var i=0;
function addSelect(){

i++;
// On récupère l'endroit où devra être ajouté la liste
var divCible = document.getElementById("divCible");
// On récupère la liste modèle
var selModele = document.getElementById("select_patente");
var selModele2 = document.getElementById("select_adresse");
// On la clone dans une nouvelle variable

var nvxSel = selModele.cloneNode(true);
var nvxSel2 = selModele2.cloneNode(true);
// (pour la présentation, on crée un retour à la ligne)

var br = document.createElement("<br>");

// On adapte les attributs de la nouvelle liste : nom, id et affichage
nvxSel.name = "patente"+i;
nvxSel.id = "patente"+i;
nvxSel.style.display = "inline";
nvxSel2.name = "adresse"+i;
nvxSel2.id = "adresse"+i;
nvxSel2.style.display = "inline";

// On ajoute tout ça à l'emplacement voulu
Ajouter();
nvxSel.value='';
divCible.appendChild(nvxSel);
Ajouter2();
nvxSel2.value='';
divCible.appendChild(nvxSel2);
divCible.appendChild(br);

}

var nlignes = 1;
function Ajouter(){
nlignes++;
divCible.insertAdjacentHTML('BeforeEnd','<strong> <br>Patente'+nlignes+'  :</strong>');
/*divCible.innerHTML='<strong> <br>Patente'+nlignes+'  :</strong>';*/
return nlignes;
}
function Ajouter2(){
divCible.insertAdjacentHTML('BeforeEnd','&nbsp;&nbsp;<strong>Adresse'+nlignes+':</strong>');
/*divCible.innerHTML='&nbsp;&nbsp;<strong>Adresse'+nlignes+':</strong>';*/
}
</script>
</head>

<body>
 <form name="form1" method="post" action="traitement.php">
 
 <button onClick="javascript:addSelect();" type="button">Ajouter Patente </button>

<!-- Création d'une liste modèle, qui ne sera pas visible -->
<div id="divCible"> <strong>Patente1:</strong>
<input type="text" size="20" id="select_patente" name="patente">
<strong>   Adresse1  :</strong> 
<textarea id="select_adresse" name="adresse"></textarea>
</div>
</form>
</body>
</html>
Configuration: Windows XP
Firefox 2.0.0.6

Répondre à Alain42

4

basttov, le 27 aoû 2007 à 18:08:51

Oui ca je le sais,ca a marché aussi chez moi avec javascript ainsi qu'avec php;
le probleme c que je veux recuperer le contenu (la valeur ) de chaque champs ajoutée vous y etes?
par exemple le contenu de patente2 adresse2 et patente3 adresse3 je dois le recuperer dans une variable puis l'inserer dans mysql;
c'est la ou je peux rien faire;je crois maintenant que tu as assimilé le prob et merci d'avance .

Configuration: Windows XP
Internet Explorer 6.0

Répondre à basttov

5

Alain42, le 27 aoû 2007 à 19:03:10

Pour répondre à ta question:

dans la balise <form tu mets action="enregistrement.php"


et voici le code du fichier enregistrement.php: je n'ai pas pu tester la partie connexion à la base

<?php
// le formulaire poste les valeurs de tous les champs dans un array $_POST avec comme cle le nom du champ
$array_patente = array();
$array_adresse = array();
foreach($_POST as $cle=>$value){
	//on recupere les valeurs des champs qui commencent par "patente" et on les stoke dans un array
	if(substr($cle,0,7)=="patente"){
		$array_patente[]=$value;
	}
	//on recupere les valeurs des champs qui commencent par "adresse" et on les stoke dans un array
	if(substr($cle,0,7)=="adresse"){
		$array_adresse[]=$value;
	}
}

//print_r($_POST);
//print_r($array_patente);
//print_r($array_adresse);

$cnx=mysql_connect("host","login","password");// la tu mets tes codes
$db=mysql_select_db("base",$cnx);// le nom de ta base
$nb=0;
for ($i=0,$i<sizeof($array_patente),$i++){
$req="INSERT INTO ta_table (patente,adresse) VALUES('".$array_patente[$i]."','".$array_adresse[$i].")";
$res=mysql_query($req);
$nb++;
}
echo "<HTML><BODY>".$nb." enregistrements ont été faits dans la base !</HTML></BODY>";
?>
Configuration: Windows XP
Firefox 2.0.0.6

Répondre à Alain42

6

basttov, le 28 aoû 2007 à 16:42:30

Merci,j'ai essayé
mais ca me donne une requete vide pas d'insertion dans la base de données,
donc il n'arrive pas à recuperer le contenu de ces champs.
je vais essayé d'ameliorer ce code ,et si t'as une idée ca serait la bienvenue.

Configuration: Windows XP
Internet Explorer 6.0

Répondre à basttov

7

Alain42, le 28 aoû 2007 à 17:39:28

Essaye en décommantant ces trois lignes pour voir ce que tu reçois

//print_r($_POST);
//print_r($array_patente);
//print_r($array_adresse);

Configuration: Windows XP
Firefox 2.0.0.6

Répondre à Alain42

8

basttov, le 28 aoû 2007 à 17:41:48

Excusez moi,je reprends ,je suis parvenu à recuperer le contenu dans les deus tableaux $array_patente et $array_adresee
avec le meme code ca marche bien mais le prob ici je crois sur la syntaxe de la requete ,car il me donne une requete vide pas d'insertion ds la base de donnèes.

Configuration: Windows XP
Internet Explorer 6.0

Répondre à basttov

9

Alain42, le 28 aoû 2007 à 18:20:24

Essaye en mettant un echo sur la requette:
et en rajoutant les or die (.....) ce qui devrait te sortir des messages d'erreur de connexion à la BDD

$cnx=mysql_connect("host","login","password") or die (mysql_error());// la tu mets tes codes
$db=mysql_select_db("base",$cnx) or die (mysql_error());// le nom de ta base
$nb=0;
for ($i=0,$i<sizeof($array_patente),$i++){
$req="INSERT INTO ta_table (patente,adresse) VALUES('".$array_patente[$i]."','".$array_adresse[$i].")";

echo "<br>".$req;

$res=mysql_query($req) or die (mysql_error());
$nb++;
}
Configuration: Windows XP
Firefox 2.0.0.6

Répondre à Alain42

10

 basttov, le 28 aoû 2007 à 19:21:17

Merci beaucoup alain42,le probleme est resolu ,c' etait comme je le vous ai mentionné,sur la syntaxe de la requete il fallait faire

$req="INSERT INTO ta_table (patente,adresse)
VALUES('$array_patente[$i]','$array_adresse[$i]');";

au lieu de:

$req="INSERT INTO ta_table (patente,adresse)
VALUES('".$array_patente[$i]."','".$array_adresse[$i].")";

merci encore une fois pour votre soutien et suivi ,restons en contact
taiba_net@hotmail.com .........................

Probleme Resolu

Configuration: Windows XP
Internet Explorer 6.0

Répondre à basttov