[javascript] variables

Fermé
Squall - 25 juin 2007 à 11:56
 Squall - 26 juin 2007 à 16:55
Bonjour,
j'ai mis au point un formulaire au format php. Dans celui-ci je possède un tableau ou sont renseignés le type, la référencce le libelé et la quantité de produits voulu. Seul le champ quantité est à renseigner, les autres étant récupérés via une base de donnée.
problème: je possède une variable $i correspondant au numéro de ligne. le jouvrais que le "name" de chaque quantité soit : quantité suivi de la valeur de $i.Pourquoi?? pour vérifier chaqunes des quantités via ma fonction javascript vérifchamps().Est-il possible d'utiliser des variables php dans du javasscript???

merci d'avance
A voir également:

16 réponses

christboy Messages postés 157 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 30 juillet 2008 20
25 juin 2007 à 12:43
la j'ai rien compris envoi un bout de ton code qu'on y voit un peu plus clair ^^'
0
oui mieu vaut du concret ^^

alors voila ma page de formulaire avec ma fonction verif champs

<!-- LE JAVASCRIPT-->
<!-- FONCTION VERIF CHAMPS-->

<script language="javascript" name="verifChamps()">
function verifChamps()
{
var erreur=0;
if(form.nom.value=='')
{
alert("Vous devez saisir un nom !");
return false;
}
if(form.prenom.value=='')
{
alert("Vous devez saisir un prénom !");
return false;
}
if(form.tel.value=='')
{
alert("Vous devez entrer un numéro de téléphone !");
return false;
}
if (isNaN(document.form.tel.value))
{
alert("Le numéro de téléphone doit etre de type numérique ");
return false;
}

if(form.UF.value=='')
{
alert("Vous devez sélectionner une Unité Fonctionnelle (UF) !");
return false;
}
if(form.codeuf.value=='')
{
alert("Vous devez entrer un code UF !");
return false;
}
if (isNaN(document.form.codeuf.value))
{
alert("Le Code UF doit etre de type numérique ");
return false;
}
if(form.champ1.value=='')
{
alert("Vous devez sélectionner une Quantité à la ligne 1 !");
return false;
}
if (isNaN(document.form.champ1.value))
{
alert("La Quantité doit etre de type numérique (ligne1)");
return false;
}
if(form.quant1.value=='')
{
alert("Vous devez sélectionner une Quantité à la ligne '.$i.'!");
return false;
}
if (isNaN(document.form.quant1.value))
{
alert("La Quantité doit etre de type numérique (ligne2)");
return false;
}

else
return true;

}
</script>

<style type="text/css">
<!--
div#bloc1 {
width: 600px;
height: 490px;
overflow: auto;

}
-->
</style>
</head>


<!-- debut insertion contenu -->
<form name="form" action="variables.php" method="POST" onsubmit=" return verifChamps()">

<table border="0" cellPadding="0" cellSpacing="0" width="100%" style="BORDER-BOTTOM: #000080 2x solid; BORDER-LEFT: #000080 0px solid; BORDER-RIGHT: #000080 0px solid; BORDER-TOP: #000080 0px solid; COLOR: #000080; FONT-FAMILY: Arial; FONT-SIZE: 8pt;">

<tr>
<td height="10">
</td>
</tr>

<tr>
</td>
<td align="left" vAlign="bottom">
<font color="red" face="Arial" size="1">*</font><font color="#000080" face="Arial" size="1">Nom du demandeur :</font>
</td>
<td align="left" vAlign="bottom">
<input name="nom" value="<? print $strNomDem ;?>" style="BORDER-BOTTOM: #000080 1px solid; BORDER-LEFT: #000080 1px solid; BORDER-RIGHT: #000080 1px solid; BORDER-TOP: #000080 1px solid; COLOR: #000080; FONT-FAMILY: Arial; FONT-SIZE: 8pt" size="35" maxlength="50">
</td>
<td align="left" vAlign="bottom">
<font color="red" face="Arial" size="1">  *</font><font color="#000080" face="Arial" size="1">Prénom :</font>
</td>
<td align="left" colspan="4" vAlign="bottom">
<input name="prenom" value="<? print $strPrenomDem ; ?>" style="BORDER-BOTTOM: #000080 1px solid; BORDER-LEFT: #000080 1px solid; BORDER-RIGHT: #000080 1px solid; BORDER-TOP: #000080 1px solid; COLOR: #000080; FONT-FAMILY: Arial; FONT-SIZE: 8pt" size="35" maxlength="50">
</td>
</tr>
<tr>
<td height="10"></td>
</tr>
<tr>
<td align="left" vAlign="bottom" width="105">
<font color="#000080" face="Arial" size="1">
<font color="red" face="Arial" size="1">*</font>Service:</font>
</td>

<td align="left" vAlign="bottom" colspan="1">
<!-- MENU DEREOULANT-->
<select name="service" size="1" style=" visibility: visible; color: rgb(0,0,128); font-family: Arial; font-size: 8pt">
<option value="">                                                            
</option>

<option value='28'>Affaires juridiques & patrimoniales</option>
<option value='41'>Ateliers Ergotherapie</option>
<option value='38'>Aumonerie</option>
<option value='42'>CAT de l EPI et Foyers</option>
<option value='30'>CLOS</option>
<option value='4'>CME</option>
<option value='46'>Comité hospitalier</option>
<option value='13'>Communication qualité</option>
<option value='45'>culte</option>
<option value='34'>Departement informatique médicale</option>
<option value='14'>Direction CHM</option>
<option value='5'>Direction chm</option>
<option value='2'>Direction des Finances</option>
<option value='1'>Direction des Ressources Humaines</option>
<option value='9'>Direction des services Logistiques</option>
<option value='10'>Direction des Soins</option>
<option value='40'>Fédération Ateliers</option>
<option value='31'>Fédération Deligny</option>
<option value='29'>Fédération sports</option>
<option value='35'>FIAPMC</option>
<option value='27'>Foyers / cat</option>
<option value='36'>GIPES</option>
<option value='23'>Hors secteur</option>
<option value='3'>IFSI</option>
<option value='24'>InterSecteur Nord</option>
<option value='25'>Intersecteur Sud</option>
<option value='7'>La formation</option>
<option value='6'>Les Services de soins</option>
<option value='26'>Maison d Accueil Spécialisée</option>
<option value='39'>PCI</option>
<option value='33'>Pharmacie</option>
<option value='15'>Secteur 1</option>
<option value='16'>Secteur 2</option>
<option value='22'>Secteur 27</option>
<option value='17'>Secteur 3</option>
<option value='18'>Secteur 4</option>
<option value='19'>Secteur 5</option>
<option value='20'>Secteur 6</option>
<option value='21'>Secteur 7</option>
<option value='12'>Service documentation</option>
<option selected value='0'>Service Informatique</option>
<option value='8'>Service Technique</option>
<option value='44'>Services de la Direction</option>
<option value='37'>Services Economiques</option>
<option value='32'>Services Techniques Médicaux</option>
<option value='43'>Tamaris</option>

</select>
</td>
<td align="left" width="120" ><FONT COLOR="red"> *</FONT><font color="#000080" face="Arial" size="1"> Téléphone:</font></td>

<td colspan="6"><input name="tel" size="1" maxlength="4" style="margin-left: 0px" style="BORDER-BOTTOM: #000080 1px solid; BORDER-LEFT: #000080 1px solid; BORDER-RIGHT: #000080 1px solid; BORDER-TOP: #000080 1px solid; COLOR: #000080; FONT-FAMILY: Arial; FONT-SIZE: 8pt">
</td>
</tr>

<tr><td height="10"></td></tr>

<tr>
<td align="left" vAlign="bottom">
<font color="#000080" face="Arial" size="1">
<font color="red" face="Arial" size="1">*</font>Libellé UF:</font>
</td>

<td align="left" vAlign="bottom">
<input name="UF" style="BORDER-BOTTOM: #000080 1px solid; BORDER-LEFT: #000080 1px solid; BORDER-RIGHT: #000080 1px solid; BORDER-TOP: #000080 1px solid; COLOR: #000080; FONT-FAMILY: Arial; FONT-SIZE: 8pt" size="35" maxlength="50">
</td>
<td align="left" vAlign="bottom">
<font color="#000080" face="Arial" size="1">
<font color="red" face="Arial" size="1">  *</font>Code UF:</font>
</td>

<td align="left" vAlign="bottom">
<input name="codeuf" style="BORDER-BOTTOM: #000080 1px solid; BORDER-LEFT: #000080 1px solid; BORDER-RIGHT: #000080 1px solid; BORDER-TOP: #000080 1px solid; COLOR: #000080; FONT-FAMILY: Arial; FONT-SIZE: 8pt" size="1" maxlength="4">
</td>
</tr>
<tr><td height="10"></td></tr>

<tr><td height="10"></td></tr>
</table>

<div id="bloc1" style="BORDER-BOTTOM: #000080 0px solid; BORDER-LEFT: #000080 0px solid; BORDER-RIGHT: #000080 0x solid; BORDER-TOP: #000080 0px solid; COLOR: #000080; FONT-FAMILY: Arial; FONT-SIZE: 8pt;">

<TABLE BORDER="4" cellspacing="5" cellpadding="5" bordercolor="#000080" style="margin-left: 40px" style="BORDER-BOTTOM: #000080 2px solid; BORDER-LEFT: #000080 2px solid; BORDER-RIGHT: #000080 2px solid; BORDER-TOP: #000080 2px solid; COLOR: #000080; FONT-FAMILY: Arial; FONT-SIZE: 8pt;" >

<caption><H3>Liste de Produits<H3></caption>
<TR align="center">
<Td width="100">Type</Td>
<Td width="200"> Désignation </Td>
<Td width="75"> Quantité </Td>
<td width="50">Code unité</td>
<td width="50">Quantité</td>
</TR>

<?
$strQuerryFourn="Select * FROM fournitures ORDER BY Fourn_type";


$resultFourn=mssql_query($strQuerryFourn,$sess_conn_mssql_select_db);
$numberFourn=mssql_num_rows($resultFourn);

//$n=1;
//While($données=mssql_fetch_array($resultAffect))
$i=0;
for ($i=0; $i<$numberFourn; $i++)
{
$données=mssql_fetch_array($resultFourn);

?><tr align="center"><td><?echo $données['Fourn_type'];?></td><td><?
echo $données['Fourn_Lib'];?></td>
<td><?echo $données['Fourn_code_GEF'];?></td><td><?
echo $données['Fourn_unit'];?></td><td><input type="text" size="3" maxlength="4" name="?????????????????????????????????????"> </tr> <?
}
?>
</TABLE>
</div>


<input align="left" type="image" value="Envoyer" name="valide" src="/img/general/valider.gif" style="margin-left : 150px" action="variables.php" >
<a href="/scripts/form/bon_pour/essai.php"> <img src="/img/general/reinitialiser.gif" border="0" Valign="top"></a>
<a href="http://ns-webintranet.ch-montfavet.fr/index.php"><img src="/img/general/annuler.gif" img style="border-color:#FFFFFF"></a>

</form>



</body>
</html>

en fait je voudrais remplacé le champs name =?????? par quantite suivi du nom de la variable $i afin de pouvoir vérifier que le formulaire est correctement rempli ^^
0
Difficile voire impossible de traiter des varaibles variables avec javascript.

Une piste: tu peux parcourir tous les elements de ta form par :

document.nom_form.elements[$i]

avec $i max = document.nom_form.elements.length

et après tu fais le test sur le debut du nom
0
Merci je vais me pencher la dessus^^.

Suite à ce formulaire, lors du click sur "ajouter" j'appelle une page php dont le code est :

<body style="margin-left: 40px" style="BORDER-BOTTOM: #000080 2px solid; BORDER-LEFT: #000080 2px solid; BORDER-RIGHT: #000080 2px solid; BORDER-TOP: #000080 2px solid; COLOR: #000080; FONT-FAMILY: Arial; FONT-SIZE: 8pt;" >
<?php

$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$UF=$_POST['UF'];
$codeuf=$_POST['codeuf'];
$service=$_POST['service'];
$tel=$_POST['tel'];



$jour = date("d");
$mois = date("m");
$annee = date("Y");

$heure = date("H");
$minute = date("i");
?>
<?echo "Commande éffectuée le $jour/$mois/$annee à $heure h $minute.";
?>
<br>

<h3>Bilan de commande</h3>
<br>

<h4>Informations personnelles</h4>
<br>

<? print("Commande éffectuée par $nom $prenom");?><br>
Libellé: <?php echo $UF; ?> <br>
code UF: <?php echo $codeuf; ?> <br>
Téléphone:<?php echo $tel;?><br>
service: <?php echo $service;?><br>
<? print ("quant$i");?>
<br>
<br>
Informations de commande
<br>
<br>
<br>


<TABLE BORDER="4" cellspacing="5" cellpadding="5" bordercolor="#000080" style="margin-left: 40px" style="BORDER-BOTTOM: #000080 2px solid; BORDER-LEFT: #000080 2px solid; BORDER-RIGHT: #000080 2px solid; BORDER-TOP: #000080 2px solid; COLOR: #000080; FONT-FAMILY: Arial; FONT-SIZE: 8pt;" >

<TR align="center">
<Td width="75">Type</Td>
<Td width="200"> Désignation </Td>
<Td width="75"> Quantité </Td>
<td width="75">Code unité</td>
</TR>
---------------------------------------------------------------------------------
<tr>
<td><?echo $données['Fourn_type'];?></td> *
<td><?echo $données['Fourn_Lib'];?></td> *
<td><?echo $données['Fourn_code_GEF'];?></td> *
<td><?echo $données['Fourn_unit'];?></td> *
</tr>
--------------------------------------------------------------------------------
</table>
</body>

le seul problème est que la partie mise entre ***** et ----- ne m'affiche pas la copie du tableau qui se trouve dans la page dont on a parlé avant. Aurais tu une solution à me proposer.
0

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

Posez votre question
Première remarque:

dans <?echo $données['Fourn_type'];?>

évites d'utiliser les short tags php <?, mets plutot <?php car si un jour ton serveur passe en php5 alors tu vas avoir des soucis il ne comprend pas les shorts tags.

ensuite est ce que la variable array $donnees[] est bien dans cette page ?

l'as tu passées depuis la page précédentes ou lues dans celle ci par un $_POST[] ?
0
non justement ...je ne sais pas trop quoi faire et surtout comment faire je débute en php j'ai appris le php seul...le première page je l'ai notée en haut, la seconde juste au dessus....je sais pas trop ce qu'il me manque pour que ca fonctionne

il doit me manquer quelques trucs à ma page numéro2....
0
Je n'ai pas trop fouillé, mais a première vue il manque des trucs à la page 1:
tu affiche par while let un echo es $donnees dans un tableau mais comment veux tu que ces valeurs soient postees, il faudrait que tu les affiches dans un input ou si cela te gène dans un champ caché
<input type="hidden" name="donnees_Fourn_type" value="<?php echo $donnees['Fourn_type'] ?>" >

et tu les récupères dans la page 2 par des $_POST['donnees_Fourn_type'] par exemple

ou tu ré interroges ta base depuis la page 2 pour avoir les variables $donnees['.....']
0
Dans ma première page j'ai jouté :

<input type="hidden" name="donnees_Fourn_type" value="<?php echo $donnees['Fourn_type'] ?>" >
<input type="hidden" name="donnees_Fourn_Lib" value="<?php echo $donnees['Fourn_Lib'] ?>" >
<input type="hidden" name="donnees_Fourn_code_GEF" value="<?php echo $donnees['Fourn_code_GEF'] ?>" >
<input type="hidden" name="donnees_Fourn_unit" value="<?php echo $donnees['Fourn_unit'] ?>" >

dans ma deuxième page :

$type=$_POST['donnees_Fourn_type'];
$Lib=$_POST['donnees_Fourn_Lib'];
$unit=$_POST['donnees_Fourn_unit'];
$GEF=$_POST['donnees_Fourn_code_GEF'];

puis :

<tr>
<td><?echo $type;?></td>
<td><?echo $Lib;?></td>
<td><?echo $GEF;?></td>
<td><?echo $unit;?></td>
</tr>

mais rien ne s'affiche.....
0
mets print_r($_POST) dans la page2, pour voir ce que tu reçois dans la page 2.

tu auras les clefs et les valeurs de l'array $_POST reçu.

essaye aussi $données=mssql_fetch_assoc($resultFourn); au lieu de

$données=mssql_fetch_array($resultFourn); dans la page1
0
Je viens de faire ce que tu as dit :
j'ai placé page 2
$resultat2 = print_r($-post);

j'obtiens :

Array ( [nom] => DI FELICE [prenom] => Romain [service] => 0 [tel] => 0000 [UF] => Service Info [codeuf] => 0001 [quant0] => 1 [quant1] => 2 [quant2] => 3 [quant3] => 4 [donnees_Fourn_type] => [donnees_Fourn_Lib] => [donnees_Fourn_code_GEF] => [donnees_Fourn_unit] => [valide_x] => 50 [valide_y] => 16 ) Commande éffectuée le 26/06/2007 à 10 h 36.

donnees_Fourn_type] => [donnees_Fourn_Lib] => [donnees_Fourn_code_GEF] => [donnees_Fourn_unit] => sont vides....

si je remplace
$données=mssql_fetch_array($resultFourn); par $données=mssql_fetch_assoc($resultFourn); je recois une erreur stipulant que la fonction est inconnue....

que dois-je faire pour récupérer des valeurs
0
Dans ta page une fais un echo $données['Fourn_type] etc.. pour voir si tu récupéres bien les valeurs depuis ta base, à mon avis c'est la que ça coince.

Est tu sur du nom des champs ? Fourn_type etc... notamment majuscules minuscules ?
0
J'en suis certain car je les récupère depuis une bd et ca fonctionne!!!!
voila le code qui m'affiche tout le tableau :
<?
$strQuerryFourn="Select * FROM fournitures ORDER BY Fourn_type";


$resultFourn=mssql_query($strQuerryFourn,$sess_conn_mssql_select_db);
$numberFourn=mssql_num_rows($resultFourn);

//$n=1;
//While($données=mssql_fetch_array($resultAffect))
$i=0;
for ($i=0; $i<$numberFourn; $i++)
{
$données=mssql_fetch_array($resultFourn);

?><tr align="center"><td><?echo $données['Fourn_type'];?></td><td><?
echo $données['Fourn_Lib'];?></td>
<td><?echo $données['Fourn_code_GEF'];?></td><td><?
echo $données['Fourn_unit'];?></td><td><input type="text" size="3" maxlength="4" name="quant<?echo $i;?>"> </tr> <?
}
?>



Cela fonctionne mais je n'arrive pas à récupérer les données dans la page 2... même avec un echo rie nne s'affiche et avec le print_r($_POST); les champs nom etc s'affichent mais pas les données du tableau....
0
je voulais dire mets un echo dans ta première page.


Le traitement de ta requette me parrait étrange:
$strQuerryFourn="Select * FROM fournitures ORDER BY Fourn_type";
$resultFourn=mssql_query($strQuerryFourn,$sess_conn_mssql_select_db);
$numberFourn=mssql_num_rows($resultFourn);
//*****
//$n=1;
//While($données=mssql_fetch_array($resultAffect))
$i=0;
for ($i=0; $i<$numberFourn; $i++)
{
$données=mssql_fetch_array($resultFourn);
etc....

//*******
moi je mettrai :
//*******
While($données=mssql_fetch_array($resultFourn)) {
?><tr align="center"><td><?echo $données['Fourn_type'];?></td><td><?
echo $données['Fourn_Lib'];?></td>
<td><?echo $données['Fourn_code_GEF'];?></td><td><?
echo $données['Fourn_unit'];?></td><td><input type="text" size="3" maxlength="4" name="quant<?echo $i;?>"> </tr> <?
}

//***

car la boucle While parcourt tous les enregistrements extraits, la boucle for que tu mets ensuite ne sert à rien, elle doit même ecraser les valeurs, car mysql_fetch_array ne sert qu'une fois !

Essaye
0
J'ai touver une astuce :
Dans la page 1:


<? $x=0;
for ($x=0; $x<$numberFourn; $x++)
{
echo $x; ?> <br> <?php echo mssql_result($resultFourn,$x,"Fourn_type");?><br><?php echo mssql_result($resultFourn,$x,"Fourn_Lib");?><br><?php echo mssql_result($resultFourn,$x,"Fourn_code_GEF");?><br><?php echo mssql_result($resultFourn,$x,"Fourn_unit");?><br><br>
<input type="hidden" name="Fourn_type" value="<?php echo mssql_result($resultFourn,$x,"Fourn_type");?>" >
<input type="hidden" name="Fourn_Lib" value="<?php echo mssql_result($resultFourn,$x,"Fourn_Lib");?>" >
<input type="hidden" name="Fourn_code_GEF" value="<?php echo mssql_result($resultFourn,$x,"Fourn_code_GEF");?>" >
<input type="hidden" name="Fourn_unit" value="<?php echo mssql_result($resultFourn,$x,"Fourn_unit");?>" ><?
}
?>

dans la page 2:

$type=$_POST['Fourn_type'];
$Lib=$_POST['Fourn_Lib'];
$unit=$_POST['Fourn_unit'];
$GEF=$_POST['Fourn_code_GEF'];


<TR align="center">
<Td >Type</Td>
<Td > Désignation </Td>
<Td > Référence </Td>
<td >Code unité</td>

</TR>


<tr>
<td><?echo $type;?></td>
<td><?echo $Lib;?></td>
<td><?echo $GEF;?></td>
<td><?echo $unit;?></td>

</tr>

Par contre je ne récupère que la première boucle... je ne sais pas pourquoi les boucles suivantes ne me donnent pas de données..
0
Essaye avec dans la page1:
$i=0;
While($données=mssql_fetch_array($resultFourn)) {

?><tr align="center"><td><?echo $données['Fourn_type'];?></td><td><?
echo $données['Fourn_Lib'];?></td>
<td><?echo $données['Fourn_code_GEF'];?></td><td><?
echo $données['Fourn_unit'];?></td><td><input type="text" size="3" maxlength="4" name="quant<?echo $i;?>"> </tr>
// et en champs cachés car les echo dans ta page ne sont pas postés avec le formulaire
<input type="hidden" name="<?php echo "donnees_Fourn_type".$i ; ?>" value="<?php echo $donnees['Fourn_type'] ?>" >
<input type="hidden" name="<?php echo "donnees_Fourn_Lib".$i ; ?>" value="<?php echo $donnees['Fourn_Lib'] ?>" >
<input type="hidden" name="<?php echo "donnees_Fourn_code_GEF".$i ; ?>" value="<?php echo $donnees['Fourn_code_GEF']
<?php
$i++;
}

// a chaque boucle de while, mysql_fetch_aray te donne une ligne de resultat sous forme d'un array avec comme cle le nom du champ et comme valeur celle lue dans la BD, et ça autant de fois que il a a de nombre de resultats donc tu n'as pas a faire une autre boucle for sur le numberResult
et on cree une variable dynamique diff pour chaque ligne avec $i

ensuite page 2 partant du principe que $_POST est un array, tu le parcours par une boucle
foreach ($_POST as $cle=>$value){
//test sur le debut du nom
if(substr($cle,0,18)=='donnees_Fourn_type'){
$indice=substr($cle,19);
$array_donnees_Fourn_type[$indice]=$value;

idem pour les deux autres, et tu obtiens 3 array contenant tes valeurs, tu les expoite par des boucles fro sachant qu'ils ont la même longueur
}
}
0
Je vais essayer ceci.... par contre pourrais tu m'expliquer comment fonctionne les substr() je vois pas trop leur utilité....
0