Forms PHP/Javascript

Résolu/Fermé
Signaler
Messages postés
4
Date d'inscription
lundi 23 mars 2009
Statut
Membre
Dernière intervention
24 mars 2009
-
Messages postés
4
Date d'inscription
lundi 23 mars 2009
Statut
Membre
Dernière intervention
24 mars 2009
-
Bonjour,
je développe une application web en PHP et j'ai un de ces problèmes à me cassé la têtes

selon le nombre d'entrée qu'il y a dans ma base de données, j'affiche un formulaire avec 2 <input type="text"> et 3 images, chacune d'entres elles en les balises de lien "a". Le code en détails va suivre.

je tente tant bien que mal de vouloir faire un submit/window.open par le javascript mais lorsque je clique sur l'image en question, une erreur javascript arrive tout le temps, soit "form is null" ou "form is undefined.

Voici le code Javascript
<script language="javascript" type="text/javascript">

function submitForm(formName, choice) {
	var myForm = document.forms(formName);
	myForm.getElementById("choice").value = choice;
	myForm.submit();
}
function previewLink(formName) {
	var myForm = document.forms[formName];
	var myURL = myForm.getElementById("txtLink").value;
	window.open(myURL,"preview",null);
}
</script>


Voici le code PHP qui boucle
<?php #Ajout et suppression de lien dynamique#
			$strSql = [Hidden!]
			$sqlResult = mysql_query($strSql);
			while ($sqlData = mysql_fetch_array($sqlResult))
			{
				# Ajout d'une colonne par entrée
				?>
					<tr>
					<form name="frmDel<?php echo $sqlData['id']; ?>" id="frmDel<?php echo $sqlData['id']; ?>" method="post" action="./editartiste.php">
						
						<!-- Valeur caché mais nécessaire pour le formulaire -->

						<input type="hidden" name="choice" id="choice" value="delete" />
						</a><a href="javascript: submitForm('frmUpd<?php echo $sqlData['id']; ?>','delete');"><img src="image/edit/link_delete.png" alt="delete"  /></a></td>
					</form>
					<form name="frmUpd<?php echo $sqlData['id'] ?>" method="post" action="./editartiste.php">
						
						<!-- Valeur caché mais nécessaire pour le formulaire -->

						<input type="hidden" name="choice" id="choice" value="update" />
						<td><a href="javascript: submitForm('frmUpd<?php echo $sqlData['id']; ?>','update');"><img src="image/edit/link_edit.png" alt="edit" /></a></td>
						<td><input type="text" name="txtText" value="<?php echo $sqlData['description'] ?>" /></td>
						<td><input type="text" name="txtLink" value="<?php echo $sqlData['lien'] ?>" /></td>
						<td><a href="javascript: previewLink('frmUpd<?php echo $sqlData['id'] ?>');"><img src="./image/edit/link_go.png" alt="go" /></a></td>
					</form>
					
					</tr>
				<?php
			}
		 # Ajout d'une colonne qui va permettre d'ajouter un élément?>
		 <tr>
		 	<form name="frmAdd" id="frmAdd" method="post" action="./editartiste.php">

			<!-- Valeur caché mais nécessaire pour le formulaire -->

			<input type="hidden" name="choice" value="add" />
		 	<td></td>
			<td><a href="javascript: submitForm('frmAdd','add');"><img src="image/edit/link_add.png" alt="add"  style="border:0px"/></a></td>
			<td><input type="text" name="txtText" value="" /></td>
			<td><input type="text" name="txtLink" value="" /></td>
			<td><a href="javascript: previewLink('frmAdd');"><img src="./image/edit/link_go.png" alt="go" /></a></td>

			
			</form>


L'erreur survient quand j'essaie de cliquer sur l'image entre les balises de lien "a"

Je ne sais pas quoi faire.

5 réponses

Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
895
A mon avis tu n'as pas le droit d'utiliser cette forme ou tu mélanges l'accès à un élémnet par le nom et par l'id

var myForm = document.forms(formName);
myForm.getElementById("choice").value = choice;


il faut faire
var myForm = document.getElementById("choice");
	myForm.value = choice;


et tu as plusieurs fois le même id "choice" dans ta page donc pb

débrouilles toi pour leur mettre un indice, tu le fait bien pour le nom de la form alors fait pareil et tu passes l'id correspondant en argument
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
4
Date d'inscription
lundi 23 mars 2009
Statut
Membre
Dernière intervention
24 mars 2009

Bonjour,
Merci pour ta réponse, mais malheureusement, sa ne règle pas mon problème.

var myForm = document.getElementById(formName);
myForm.getElementById("choice").value = choice; 


Je fais ce code justement parce que j'ai plusieurs éléments "choice", dans l'intention d'aller chercher l'élément "choice" du form sur lequel l'action se fait car dans la page suivante, je récupère "choice" et fais l'action en fonction du "id" transmit. Je ne peux donc pas mettre un indice à l'ID de "choice".

Merci pour les réponses futures
Messages postés
4
Date d'inscription
lundi 23 mars 2009
Statut
Membre
Dernière intervention
24 mars 2009

Bonjour Alain_42,

Ta réponse est un peu flou mais j'ai fini par m'en sortir en te relisant et en me relisant.

La Solution :
Je ne peux pas faire document."nomduform"."nomdelemement".value

j'ai refais mon code pour n'obtenir qu'un form, j'ai écris des input de type hidden avec les valeurs que je veux transférer et j'attribue la valeur dans mon javascript et je soumet par après.

la génération de mes text fields se fait dans une boucle et j'ajoute le numéro à la fi. Je n'ai qu'a fournir l'id correspondant à l'entrée dans la base de données et le tour est joué!

merci beaucoup pour l'aide

P.S. le 42, est-ce que ça fait référence au film "Le Guide Galactique" ? :P
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
895
le principe c'est que tu n'as pas le droit d'avoir plusieurs id avec le même nom dans une page

ce que je voulait dire c'est que tu pouvait très facilement mettre id="choice<?php echo $sqlData['id']; ?>"

dans chacun des formulaires donc ils étaient ainsi tous différents

et à l'ppel de la fonction tu passait en argument cet id

PS 42 c'est mon département
Messages postés
4
Date d'inscription
lundi 23 mars 2009
Statut
Membre
Dernière intervention
24 mars 2009

Bonjour,

C'est ce que j'ai fait

function SubmitForm(lid) {
      document.getElementById("txtLink"+lid).value
}

<input type="text" id="txtLink<?php echo $sqlData['id']; ?>" value="" />


le code marche a merveille maintenant

merci encore