verifcation des champs d un formulaire

Jib
Eléphanteau du PHP | 39 Messages

01 avr. 2006, 16:59

Bonjour,


j'ai un formulaire créer en php qui a cette tete la :
<?PHP
$nbescale=$_POST['nbescale']; 
       echo "<form method=\"post\" name=\"formulaire\" action=\"abis.php?nbescale=$nbescale\" onSubmit=\"return compare($nbescale);\" >";

while ($j <= $nbescale)
{
?>
<tr class="escale">
<td colspan=6>
<u>Création de l'escale pour ce vol :</u> 
<br />
<label>arrive </label>
<input size=8 type=text name="arr_e<? echo $j;?>" />
<label>depart</label>
<input size=8 type=text name="dep_e<? echo $j;?>" /><br />
</td>
</tr>
<?
$j++;
}
echo "</form>";
?>
et j aimerai que lorsque je clique sur le bouton valider du formulaire, une fonction javascript ne vérifie que l'heure de d'arrivée sur l escale est inférieur à l'heure de départ de l'escale.

Voila le debut de ma fonction javascript:

Code : Tout sélectionner

function compare(nb){ for (i=0; i<nb; i++) { if (document.formulaire.arr_e.value < document.formulaire.dep_e.value) alert ("votre heure de depart pour l escale est superieur à celle d'arrivée"); } }
Pour le moment, cette fonctio ne fait rien car je n'ai pas encore trouver le moyen de concatener arr_e à i.

Quelqu un sait comment on fait.


Merci.[/code]
Modifié en dernier par Jib le 01 avr. 2006, 17:12, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

01 avr. 2006, 17:07

Salut,

Quel est le type (format) des valeurs dans les champs

Essaie avec ce genre de code, plus de détail ICI
function compare(nb)
{
for (i=0; i<nb; i++) 
{
   var elem_arr = 'rr_e'+i;
   var elem_dep = 'dep_e'+i;
   if (document.forms['formulaire'].elements['elem_arr '].value < document.forms['formulaire'].elements['elem_dep'].value)
    alert ("votre heure de depart pour l escale est superieur à celle d'arrivée");
  }
} 

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Jib
Eléphanteau du PHP | 39 Messages

01 avr. 2006, 17:08

dans la base de donnée, j ai dis que c'etait des heures.
Merci pour ton code, je vais tester ceci.

Jib
Eléphanteau du PHP | 39 Messages

01 avr. 2006, 17:13

Alors j 'ai testé ton code et la fonction ne fait rien.
Je ne suis pas du tout connaisseur du javascript mais je peense que le 1 er pb vient de la ligne php qui fait ceci:
/*php 
<?PHP
$nbescale=$_POST['nbescale']; 
       echo "<form method=\"post\" name=\"formulaire\" action=\"abis.php?nbescale=$nbescale\" onSubmit=\"return compare($nbescale);\" >";
?>
 /php*/

est ce qu on peut mettre $nbescale en argument d une fonction?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

01 avr. 2006, 17:25

On peut, mais tu peux isoler les variables des chaines de caratère:
<?
echo '<form method="post" name="formulaire" action="abis.php?nbescale='.$nbescale.'"  onSubmit="compare('.$nbescale.');" >';
ou encore:
<form method="post" name="formulaire" action="abis.php?nbescale=<?php echo $nbescale; ?>" onSubmit="compare(<?php echo$nbescale; ?>);" >
ne met pas de return pour l'instant, appel la fonction et affiche le paramètre (1er test à effectuer :wink: )
function compare(nb)
{
   alert(nb);
}

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Jib
Eléphanteau du PHP | 39 Messages

01 avr. 2006, 17:37

Alors 1er test reussi, la fonction alert affiche bien la valeur $nbescale.
Par contre elle ne fait pas la comparaison des heures

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

01 avr. 2006, 17:59

Par contre elle ne fait pas la comparaison des heures
certainement logique si tu saisie des dates au format jj/mm/aaaa ou autre il va certainement falloir passer par les fonctions date pour comparer les dates. Regarde la fonction "parse".

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Jib
Eléphanteau du PHP | 39 Messages

01 avr. 2006, 18:04

Ok


mais si ma fonction est ceci :
function compare2(nb)
{
i=1;
	var elem_arr = 'arr_e'+i;
	var elem_dep = 'dep_e'+i;
	var baba=document.formulaire.elem_arr.value;
   alert(baba);
}
en cliquant sur le bouton, rien en se passe

par contre avec alert(elem_arr) j obtiens bien arr_e1.
il semble que la ligne var baba ne marche pas....

Mammouth du PHP | 19672 Messages

01 avr. 2006, 19:58

À quoi te sert donc le paramètre de la fonction : tu ne l'utilises nulle part :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Jib
Eléphanteau du PHP | 39 Messages

01 avr. 2006, 20:13

A la base c pour ma boucle for.
En gros, dans une page j'ai un 1er formulaire où je dois renseigner une destination, une h de depart, une h d arrivée, un modele d'avion et un fabricant (ce sont les champs de la relation vol de ma base de donnée). On m'a demandé de permettre la creation d'escales sur la meme page. Donc j'ai aussi un champs qui correspond aux nombres d'escales a créer.
Si la reponse est zero, je n'affiche aucun autre formulaire. Par contre, si la reponse est deux, j'affiche deux nouveaux formulaires pour créer 2 escales.
Chaque formulaire escales porpose de renseigner une ville escale, une heure de d'arrivée et une heure de départ.
donc j'aimerai verifier que les heures d'arrivée sur la ville escale sont bien inférieur aux heures de départ de la ville d'escale. J'aimerai vérifier ceci via le javascript, c'est pour ca que je met la variable nbescale dans la fonction javascript.
Mais ne sachant pas faire de javascript, tu as lu un essai de fonction.

Merci.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

01 avr. 2006, 21:46

en cliquant sur le bouton, rien en se passe
ça signifie qu'il y a une erreur Javascript.

remplace
var baba=document.formulaire.elem_arr.value;
par:
var baba = document.forms['formulaire'].elements['elem_arr'].value;
et refait un test

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Jib
Eléphanteau du PHP | 39 Messages

01 avr. 2006, 22:24

Salut,

Bah ma fonction en javascript ne fonctionne pas.
Si tu veux, je te montre mon code. Ce que tu m'as dis de faire ne fait rien du tout.


voila le code :

<p class="ecrit">Vous avez décidez d'ouvir un vol
<?PHP
if (isset($_POST['nbescale']))
{
   $nbescale=$_POST['nbescale']; 
 echo "<form method=\"post\" name=\"formulaire\" action=\"abis.php?nbescale=$nbescale\" onSubmit=\"return compare2($nbescale);\" >"; 
}
else
{
    echo "<form method=\"post\" name=\"formulaire\" action=\"index.php\" onSubmit=\"return check();\" >";
}

<table>
	<tr>
		<!--<td>Continent</td>-->
		<td>ville</td>
		<td>heure départ</td>
		<td>heure arrivée</td>
		<td>modele-fabricant</td>
		<td>fréquence</td>
		<td>&nbsp;&nbsp;</td>
	</tr> 
	<tr class="ecrit">
		<!--<td>
			<select name="continent" style="width:110px;" onKeyUp="javascript:couleur(this);">
<? if (isset($_POST['continent'])){	?><option><?echo $_POST['continent'];?></option><? }?>
              
            <option value="1">Europe</option>
				<option value="2">Asie</option>
				<option value="3">Océanie</option>
				<option value="4">Amerique du Sud</option>
				<option value="5">Amerique du Nord</option>
			</select>
		</td>-->
		<td>
		
			<select name=ville onKeyUp="javascript:couleur(this);">
		  <? if (isset($_POST['ville'])){ ?><option><?echo $_POST['ville'];?></option><? }?>
          
          
        <?php
        $result=pg_exec($db,"select nom_ville from ville_desservie;");
			$max=pg_numrows($result);
			for($i=0 ; $i<$max  ;$i++)
			{
				$vil=pg_fetch_array($result,$i);
				$ville=$vil[0];
				echo "<option value=$ville>$ville</option>";
			}
			echo "</select>";
		?>
		</td>
		<td>
			<input size="9"  type="text" name="h_depart" value="<?=$_POST['h_depart'];?>" onKeyUp="javascript:couleur(this);">
		</td>
		<td >
			<input size="9" type="text" name="h_arrive" value="<?=$_POST['h_arrive'];?>" onKeyUp="javascript:couleur(this);" >
		</td>
		<td>
		
		<SELECT name=Type onKeyUp="javascript:couleur(this);"   >
          <? if (isset($_POST['Type'])){ ?><option><?echo $_POST['Type'];?></option><? }?>
          
          

        <?

			$resulttype=pg_exec($db,"select distinct modele, fabricant from type_avion;");
			$max=pg_numrows($resulttype);          
			for($i=0 ; $i<$max  ;$i++)
			{
				$type=pg_fetch_array($resulttype,$i);
				$Type=$type[0].'-'.$type[1];	
				echo "<OPTION VALUE='$Type'> $Type</OPTION>";
			}
		echo "</SELECT>";
		?>
		</td>
		<td >
			<select name=frequence tabindex=40 onKeyUp="javascript:couleur(this);"   >
            <?PHP if (isset($_POST['frequence'])){?> <option><? echo
            $_POST['frequence']; ?></option><?}
            else
            {
            ?>
                   <option value="lundi">Lundi </option>
					<option value="mardi">Mardi </option>
					<option value="mercredi">Mercredi </option>
					<option value="jeudi">Jeudi </option>
					<option value="vendredi">Vendredi </option>
					<option value="samedi">Samedi </option>
					<option value="dimanche">Dimanche </option>
            <?PHP 
            }
            ?>
            </select>
		</td>
		<td>
	</tr>
    <tr><td>mois</td><td></tr>
    <tr>
                <td>
            <select name=mois>
            <?PHP
		  if (isset($_POST['mois'])){ ?><option><?echo $_POST['mois'];?></option><? }
          else
          {
            ?>
                <option value="janvier"> janvier </option>
                <option value="fevrier"> fevrier </option>
                <option value="mars"> mars </option>
                <option value="avril"> avril </option>
                <option value="mai"> mai </option>
                <option value="juin"> juin </option>
                <option value="juillet"> juillet </option>
                <option value="aout"> aout </option>
                <option value="septembre"> septembre </option>
                <option value="octobre"> octobre </option>
                <option value="novembre"> novembre </option>
                <option value="decembre"> decembre </option>
            <?PHP
          }
            ?>
            </select>
        </td>
    </tr>
	<?PHP
	if (!isset($nbescale))
	{
		?>
		<tr>
			<td colspan=6>
				nombre d'escales  ? :
					<input id="liste_1" size=4 type=text name=nbescale />
					<input type=submit VALUE=valider /></form>
			</td>
		</tr>
		<?PHP
	}
	else
	{
// on recupere le type de l'avion
//$modele=$_POST['modele'];
//$fabricant=$_POST['fabricant'];
list($modele, $fabricant) = explode("-",$_POST['Type']);
$Rnum_type=pg_exec($db,"select n_type from type_avion where fabricant='$fabricant' and modele='$modele';");
$num_type=pg_fetch_array($Rnum_type,0);
$Ntype= $num_type[0];
$ville=$_POST['ville'];

$ville=trim($ville);

    //generation du numero de vol
	//on va d abord recuperer le continent en fonction de la ville choisie
	$reque=pg_exec("select code_continent from ville_desservie where nom_ville='$ville';");
	$cont=pg_fetch_array($reque,0);
      $continent=$cont[0];
	$requ=pg_exec("select num_dernier_vol from continent where code_continent=$continent;");
	$num=pg_fetch_array($requ,0);
	echo "<input type=hidden name=continent value=$continent />";
	$n_vol=$num[0];
	//ici, on va traiter la variable recuperée
	$len=strlen($n_vol);
	$rest = substr($n_vol, 1, $len);
	
	$rest=$rest+1;
	if ($rest<10){ $rest='00'.$rest;}
	else if ($rest<100) {$rest='0'.$rest;}
	$n_vol=$continent.$rest;
	   

//$n_vol=$_POST['continent'].date('d').date('s');
echo" <input type=hidden name=n_vol value=$n_vol />";
/*
pas besoin finalement
$requeteNA=pg_exec("select n_avion from avion where n_type=$Ntype;");
$maw=pg_numrows($requeteNA);

echo "<tr><td colspan=6> choisir le numéro d'avion pour le vol
$n_vol<select name=n_avion>";
for($k=0 ; $k<$maw ; $k++)
{
    $nA=pg_fetch_array($requeteNA,$k);
    $n_avion=$nA[0];
    echo "<option value=$n_avion> $n_avion </option>";
}
echo "</select></td></tr>";
*/
echo" <input type=hidden name=Ntype value=$Ntype />";

if ($nbescale !=0)
			echo "<tr><td colspan=6>vous pouvez creer jusqu'à $nbescale escale";
		else
			echo "<tr><td colspan=6>Aucune escale n'est a créer";
		echo " pour le vol de num $n_vol : </td></tr>";
// on va rechercher le type de l avion
        
        $j=1;
    while ($j <= $nbescale)
		{
			?>
			<tr class="escale">
				<td colspan=6>
					<u>Création de l'escale pour ce vol :</u> 
					<br />
						<label>continent</label>
							<select name="continent_e<? echo $j;?>" style="width:110px;">
								<option value=""></option>
								<option value="1">Europe</option>
								<option value="2">Asie</option>
								<option value="3">Océanie</option>
								<option value="4">Amerique du Sud</option>
								<option value="5">Amerique du Nord</option>
							</select>
						<label>ville</label>
						<select name=ville_e<? echo $j;?>>
						<?PHP
							$result=pg_exec($db,"select nom_ville from ville_desservie;");
							$max=pg_numrows($result);
							for($i=0 ; $i<$max  ;$i++)
							{
								$vil=pg_fetch_array($result,$i);
								$ville=$vil[0];
							?>	
							
                            <option value="<? echo $ville;?> "><?echo $ville;?></option>
                           <? 
						}
                        echo "</select>";
						?>
						<br />         
						<label>arrive &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label>
							<input size=8 type=text name="arr_e<? echo $j;?>" />
						<label>depart</label>
							<input size=8 type=text name="dep_e<? echo $j;?>" /><br />
				</td>
			</tr>
			<?
            $j=$j+1;
            //echo "j: ".$j."<br/>";
           // echo "nbescale: ".$nbescale."<br/>";
		}
		echo "</table><br /><input class=bouton type=submit value=Envoyer /></form>";
	}

	?>


?>

et la fonction javascript:

Code : Tout sélectionner

function compare2(nb) { for (i=1; i<=nb; i++) { var elem_arr = 'arr_e'+i; var elem_dep = 'dep_e'+i; if (document.forms['formulaire'].elements['elem_arr'].value > document.forms['formulaire'].elements['elem_dep'].value) alert ("votre heure d'arrivee pour l escale est superieur à celle de depart"); else alert ("ok"); } }
ps: J'ai fai un test avec des valeurs numeriques mais cela ne fais rien.
Alors a defaut de reussir le javascript je teste de le faire en php mais je dois savoir comment comparer des heures.

ps2: dans une autre page, je dois additionner des heures de vols et soustraires d autres heures de vols.

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

01 avr. 2006, 23:24

les apostrophes pour "elements" sont de trop:
elements[elem_arr].value

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Jib
Eléphanteau du PHP | 39 Messages

01 avr. 2006, 23:31

Merci.
Ca fonctionne, c'est bon je vais pouvoir faire une bonne verification.

Jib
Eléphanteau du PHP | 39 Messages

03 avr. 2006, 00:24

Bonsoir,

J'ai un enorme probleme, ce matin et meme y a de ca 2 h ma fonction de vérification fonctionnait tres bien.
La je sais pas ce que j'ai fait mais rien ne se passe:

voila la fonction

Code : Tout sélectionner

function check() { var msg = ""; if (document.formulaire.h_depart.value == "") { msg += "Veuillez saisir une heure de départ\n"; document.formulaire.h_depart.style.backgroundColor = "#F3C200"; } if (document.formulaire.h_arrive.value == "") { msg +="Veuillez saisir une heure d'arrivée \n"; document.formulaire.h_arrive.style.backgroundColor = "#F3C200"; } else{ if (document.formulaire.h_arrive.value < document.formulaire.h_depart.value){ msg +="l'heure de d'arrivée doit etre antérieure à l'heure de depart\n"; document.formulaire.h_depart.style.backgroundColor= "#FF0000"; document.formulaire.h_arrive.style.backgroundColor = "#FF0000"; } if (msg == "") return(true); else { alert(msg); return(false); } }
et voila le code php qui va avec
<?

 $nbescale=$_POST['nbescale']; 
 echo "<form method=\"post\" name=\"formulaire\" action=\"abis.php?nbescale=$nbescale\" onSubmit=\"return compare2($nbescale);\" >";
}
else
{
    echo "<form method=\"post\" name=\"formulaire\" action=\"index.php\" onSubmit=\"return check();\" >";
} 
?>
		<td>
			<input size="9"  type="text" name="h_depart" value="<? echo $_POST['h_depart'];?>" onKeyUp="javascript:couleur(this);" />
		</td>
		<td >
			<input size="9" type="text" name="h_arrive" value="<? echo $_POST['h_arrive'];?>" onKeyUp="javascript:couleur(this);" />
		</td>
?>
Pouvez vous m aider je dois rendre mon projet demain matin 8h precise.

Je vois pas pk ca marche plus.