pgu83
Messages postés17Date d'inscriptionjeudi 21 février 2008StatutMembreDernière intervention30 avril 2009
-
29 avril 2009 à 10:08
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 2015
-
30 avril 2009 à 13:58
Bonjour,
Je n'arrive pas à faire marcher mon contrôle de saisie sur un input text.
Mon formulaire affiche la liste des commandes à valider à partir d'une requête en base, donc autant d'input type"text" que de commandes à valider
j'ai extrait de mon script juste ce qui me pose problème pour ne pas alourdir le post :
Mon contrôle de saisie :
<script language="JavaScript" type="text/javascript">
function Verif_order_valide(){
for(i=0;i<document.forms[0].confirm_order.length;i++)
{
if (document.forms[0].confirm_order[i].value!="")
{
return true;
}
}
alert ("Indiquez un N° de commande");
return false;
}
</script>
L'input dans le formulaire :
<form method="POST" action="traitement_manager_order.php" onSubmit="return Verif_order_valide()">
<?php
while( $data=mysql_fetch_array($req) ){
echo '';
}
?>
</form>
Ce que j'ai compris c'est que "confirm_order.length" ne me permet pas de tester l'input vu que je génère un numéro pour chacun des input.
Par contre je ne trouve pas comment faire.
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 29 avril 2009 à 10:36
Bonjour,
les noms générés doivent être confirm_order['1'], confirm_order['2'],... confirm_order['n']
ou tu testes confirm_order, donc : inconnu
met le même name, et comme je suppose que ça va retourner au php, met des []
fais : ...echo '';...
met un name au formulaire, ça évite d'obliger à ce que ce soit le 1er
<form method="POST"
name="frm"
action="traitement_manager_order.php"
onSubmit="return Verif_order_valide()">
dans le script :
<script type="text/javascript">
function Verif_order_valide(){
for( i=0; i<document.frm["confirm_order[]"].length; i++ )
{ if (document.frm["confirm_order[]"][i].value!="")
{ return true; }
}
alert ("Indiquez un N° de commande");
return false;
}
là il suffit que l'un des champs soit renseigné, on est bien d'accord...
je ne vois pas pourquoi générer n champs de saisie, sans value,
et n'en faire remplir qu'1.... avec quoi?
si c'est un choix à faire, il vadrait mieux mettre un select ?
ou des radio associé aux input text en readonly,
ou...
mais je n'ai peut-être pas percuté.....
pgu83
Messages postés17Date d'inscriptionjeudi 21 février 2008StatutMembreDernière intervention30 avril 2009 29 avril 2009 à 12:05
Merci pour les conseils; je vais tester dès que possible.
Quelques précisions sur mon script :
Mon formulaire affiche la liste des commandes à valider à partir d'une requête en base, donc autant d'input type"text" que de commandes à valider. C'est pourquoi j'ai n champs de saisie dans lesquelles j'attendes un N° de commande à compléter.
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 29 avril 2009 à 12:12
>>j'ai n champs de saisie dans lesquelles j'attend un N° de commande à compléter.
ben oui.... c'est bien la ma question !
n champs pour un n° de commande à saisir qu'on trouve où ?
pgu83
Messages postés17Date d'inscriptionjeudi 21 février 2008StatutMembreDernière intervention30 avril 2009 29 avril 2009 à 15:13
C'est une personne qui gère les commandes qui saisie le N° dans le champ :
$data['order_id'] est l'id (index de ma table commande en base) de la commande en cours mais pas encore validée par la création d'un N° de commande.
C'est pour un intranet, c'est donc pa évident de montrer un exemple pour que ce soit plus clair.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 29 avril 2009 à 15:20
certes.. ce que tu m'expliques, ce que tu veux faire je comprend...
je te demande comment veux-tu réaliser cela tel que te le fais ?
( et intranet ou pas, ça génère du html ! )
ce que tu fais au fond, c'est ( simplifions ):
bon, l'utilisateur voit 3 champs de saisie, rien d'autre...
comment tu fais pour qu'il sache quel n° de commande saisir ?
et toi, tu compte récupérer quoi coté serveur ?
pgu83
Messages postés17Date d'inscriptionjeudi 21 février 2008StatutMembreDernière intervention30 avril 2009 29 avril 2009 à 15:49
C'est l'utilisateur qui donne le N° de commande, c'est fonction d'un certain nombre de paramètres que je ne connais pas précisement, mois, jour et N° dans le jour il me semble. Pour ma part je sais que c'est numérique et sur au maximum 11 chiffres.
Je récupère dans ma base un order_at_number qui correspond au confirm_order['.$data['order_id'].'].
Dans mon traitement je change aussi l'état de la commande pour quelle n'apparaisse plus dans les commandes à valider.
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 29 avril 2009 à 16:08
>>C'est l'utilisateur qui donne le N° de commande
oui, ça aussi j'ai compris.....
mais alors pourquoi plusieurs champs de saisie ?
il peut en saisir plusieurs ?
et dans ce cas, tu dois tous les récupérer sur le serveur je suppose.
mettre un nom significatif est impossible à gérer !
puisque c'est avec le name qu'on récupère les saisies,
et sans le connaitre.... comment faire ?
coté serveur, en php, par exemple on récupère les saisies avec
$_POST['name du champ dans le formulaire'] ou $_GET
alors, si tu ne le connais pas...
pgu83
Messages postés17Date d'inscriptionjeudi 21 février 2008StatutMembreDernière intervention30 avril 2009 30 avril 2009 à 12:27
Je comprends mieux les difficultés à comprendre mon problème, j'ai trop voulu simplifier.
En fait mon formulaire est formé par n ligne de commandes de produits et à chaque ligne il faut donner un N° de commande pour la valider.
J'aurais dû mettre, pour être plus précis :
<form method="POST" action="traitement_manager_order.php" onSubmit="return Verif_order_valide()">
<?php
while( $data=mysql_fetch_array($req) ){
echo '<tr class="order_complet">
<td width="35">' . $data['quantity']. '</td>
<td width="50">' . $data['product']. '</td>
<td width="50">' . $data['date']. '</td>
<td width="70">' . $data['address']. '</td>
<td width="40"></td>
</tr>';
}
?>
</form>
Ce qui est plus proche de la vérité.
Est-ce plus clair ?
J'espère car en fait le problème est plus complexe. Il n'y a pas que le champ confirm_order qui est à compléter et contrôler mais aussi la date (de livraison) et la quantité. Ce qui donne :