Forms PHP/Javascript

Résolu/Fermé
lefarfadais Messages postés 4 Date d'inscription lundi 23 mars 2009 Statut Membre Dernière intervention 24 mars 2009 - 24 mars 2009 à 01:56
lefarfadais Messages postés 4 Date d'inscription lundi 23 mars 2009 Statut Membre Dernière intervention 24 mars 2009 - 24 mars 2009 à 16:42
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.
A voir également:

5 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
24 mars 2009 à 11:14
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
lefarfadais Messages postés 4 Date d'inscription lundi 23 mars 2009 Statut Membre Dernière intervention 24 mars 2009
24 mars 2009 à 14:16
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
0
lefarfadais Messages postés 4 Date d'inscription lundi 23 mars 2009 Statut Membre Dernière intervention 24 mars 2009
24 mars 2009 à 15:21
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
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
24 mars 2009 à 16:13
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
0

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

Posez votre question
lefarfadais Messages postés 4 Date d'inscription lundi 23 mars 2009 Statut Membre Dernière intervention 24 mars 2009
24 mars 2009 à 16:42
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
0