Formulaire

Signaler
Messages postés
20
Date d'inscription
vendredi 10 février 2012
Statut
Membre
Dernière intervention
20 août 2013
-
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
-
bonjour,
je suis hyper novice! je gère "petitement" un site associatif hébergé sur un serveur mutualisé windows et nos besoins sont de faire un formulaire qui envoie les champs dans un fichier txt (1 ligne par saisie) avec un séparateur entre les champs (par ex le pipe).
Sur aspfr, j'ai trouvé un bout de code qui envoie sur la m^ page les champs.
j'espère être clair.
Merci
Alain

15 réponses

Messages postés
389
Date d'inscription
dimanche 7 avril 2002
Statut
Membre
Dernière intervention
23 septembre 2016
2
Et vous coincez à quelle étape ?

Megafan

Développeur de http://www.o10c.eu (Lien)


La nouvelle référence en matière de jeu de stratégie spatiale.
Messages postés
20
Date d'inscription
vendredi 10 février 2012
Statut
Membre
Dernière intervention
20 août 2013

bonjour,
je fais un formulaire qui contient des champs texte (nom, prénom, adresse,...) des cases à cocher, une liste de choix et je souhaite que ces saisies soient envoyée dans un fichier.
donc faire les champs OK mais récupérer les données, pb pour moi
Merci
Alain
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Salut,

j'ai des doutes sur le fait qu'il s'agisse d'ASP.NET. Sinon tu te poserais pas ces questions. Quand tu crées un formulaire (plein de contrôles ASP dont un Button) ils sont directement déclarés côté code. De la même manière, l'EventHandler sur le click de ton -futur- submit est déjà implémenté (ou presque). Il ne te reste alors qu'à y écrire le code d'écriture dans le fichier.

Alors, ASP "tout court" ? Si oui, je vais pas pouvoir t'aider, sinon montre nous ton code C# (ou VB.NET) et l'ascx/aspx associé, on pourra te guider plus facilement.

Attention, un souci un peu plus important peut t'attendre : les accès concurrents. Cela risque de foutre le while lors de l'ouverture/écriture/fermeture de ton fichier à plat.

Bon courage
Messages postés
20
Date d'inscription
vendredi 10 février 2012
Statut
Membre
Dernière intervention
20 août 2013

salut,
voilà le bout de code trouvé sur ce site écrit par Skyride. le résultat est envoyé sur la m^ page au dessus des champs alors que mon souhait est d'envoyer ces infos dans un fichier txt de préference ( une ligne par saisie)

---------------
<%@ Page Language="VB" %>

<script runat="server">
sub Submit(obj as object, e as eventargs)

lblMessage.Text = "Votre nom : " & txtNom.Text & "
" & _
"Votre civilité : " & radCivilite.SelectedItem.Text & " (item = " & radCivilite.Selectedindex & ")
" & _
"Votre profession : " & listProfession.SelectedItem.Text & " (item = " & listProfession.Selectedindex & ")
"

if checkMajeur.Checked then
lblMessage.Text += "Vous êtes majeur !" & "

"
else
lblMessage.Text += "Vous n'êtes pas majeur !" & "

"
end if
end sub
</script>

<html>
<form runat="server">

Votre nom :



Veuillez sélectionner votre civilité :


Mr
Mme
Mlle




Votre profession :


Développeur
Cuisinier



Etes vous majeur ?






</form>
</html>
-------------------------------------------
merci,
du courage , j'en ai bye
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Re,

tu as donc tout ce qu'il te faut sous la main pour faire ta page. Il ne te manque qu'à réécrire le corps de la fonction submit. Pour écrire dans un fichier il existe une classe bien pratique qui s'appelle StreamWriter (namespace System.IO), je t'invite à y jeter un oeil (suis le lien).

Je rappellerai juste que le code est côté serveur : ton fichier sera donc sur le serveur, et pas sur le poste client (on a pas le droit d'écrire sur le poste client, il faut qu'il nous donne son autorisation, ce qui n'est possible qu'avec des Applet/ActiveX).

Enfin, si plusieurs utilisateurs décident d'uploader des données en même temps (accès concurrents) tu risques d'avoir quelques soucis d'accès au fichier.

PS : "bon courage" est une formule de politesse, dans ton cas je la voyais plus opportune que "bon dev"

Bon Noël (rien à voir, mais ça change)
Messages postés
20
Date d'inscription
vendredi 10 février 2012
Statut
Membre
Dernière intervention
20 août 2013

re salut,
merci pour cette info, je vais voir, concernant l'accès au fichier, je n'avais pas penser à la saisie en simultané, donc voir avec une bd access ou sql fourni par l'hebergeur.
pour le courage, pas d'arrière pensée, je veux juste dire que je fais ça avec plaisir donc les batteries sont toujours chargées à fond!!!!
merci encore, je regarde streamwriter bye
Alain
Messages postés
20
Date d'inscription
vendredi 10 février 2012
Statut
Membre
Dernière intervention
20 août 2013

bojour,
j'ai évolué dans mes recherches! j'ai abandonné le code précédent et je souhaite plutôt utiliser celui là. Il ,me convient mieux car utilisation d'une base de données access, mais la structure me semble lourde.
Est-il possible de faire en 2 partie; un fichier avec les champs, un autre qui récupère les données et traite les données vers la base.
--------------------------
<%@ Page Language="VB" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.OleDb" %> <script runat="server">
' On définit la connection
Dim Conn As New OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Server.MapPath("\data\test1.mdb"))

sub Page_Load(obj as Object, e as EventArgs)
if Not Page.IsPostBack then
FillDataGrid()
end if
end sub

sub Submit(obj as object, e as eventargs)
' Insertion d'un enregistrement
dim i, j as integer
dim tabInsert(3) as string
dim strText as string
dim TraitError as boolean = true
j = 0
for i = 0 to PanelInsert.Controls.Count - 1
if PanelInsert.controls(i).GetType Is GetType(TextBox) then
strText = Ctype(PanelInsert.Controls(i), TextBox).Text
if strText <> "" then
tabInsert(j) = strText
else
TraitError = false
lblMessage.Text = lblMessage.Text & "Entrer une valeur pour " & PanelInsert.Controls(i).ID & "
"
end if
j = j + 1
end if
next
if not TraitError then
exit sub
end if

dim strSQL as string = "INSERT INTO CLIENT (NOM, PRENOM, adresse, VILLE ) VALUES (" & _
"'" & tabInsert(0) & "'" & "," & "'" & tabInsert(1) & "'" & "," & "'" & tabInsert(2) & "'" & "," & "'" & tabInsert(3) &"')"
'lblMessage.Text = strSQL
ExecuteSQL(strSQL)
FillDataGrid()
end sub

sub FillDataGrid()
'Ouverture de la connexion
dim objCmd as new OleDbCommand _
("select * from CLIENT", Conn)
dim objReader as OleDbDataReader

try
objCmd.Connection.Open()
objReader = objCmd.ExecuteReader()
catch ex as Exception
lblMessage.Text = "Erreur de liaison avec la base de données."
end try
objCmd.Connection.Close()
end sub
function ExecuteSQL(strSQL)
dim objCmd as new OleDbCommand(strSQL, Conn)
try
objCmd.Connection.Open()
objCmd.ExecuteNonQuery()
catch ex as Exception
lblMessage.Text = "Erreur de mise à jour." & _
" Vérif les saisies."
end try

objCmd.Connection.Close()
end function
</script>

<html><form runat="server">

Nom :,
,

----

Prénom :,
,
----

Adresse :,
,

Ville:,
,

----


</form></html>
--------------------------------------

Merci si vous avez de l'info pour moi
Alain
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Re,

déjà pour que ce soit plus lisible pour nous tu devrais utiliser les balises [ code ][ /code ], là c'est imbittable. Surtout pour du VB qui est bien verbeux.

Pour ce qui est de faire plusieurs fichiers, c'est évidemment possible. D'ailleurs je travaille toujours avec des fichiers codes et des fichiers ascx séparés, beaucoup plus simple à écrire/lire/maintenir, puis d'autres cs contenant différentes classes.
Messages postés
20
Date d'inscription
vendredi 10 février 2012
Statut
Membre
Dernière intervention
20 août 2013

salut,
ok, illisible m^ pour moi!!!!
Mes souhaits:
un formulaire avec des champs texte, cases à cocher, liste de choix, mail. Le tout, après contrôle de remplissage et d'exactitude, envoyé dans une base de données access. Le code ci-dessus fonctionne mais tout dans le m^ fichier *.aspx. 2 fichiers semble + simple; 1 html avec les champs et l'autre qui gère. si tu as un exemple!!
merci
Alain
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Re,

je suppose que tu travailles pas avec Visual Studio, nop ?
Voilà comment VS me découpe automatiquement un formulaire :
- un fichier ascx contenant le "HTML",
- un fichier ascx.cs contenant le code "utile",
- un fichier ascx.designer.cs pour la définition, côté code, des objets HTML.
Je viens d'en créer un à l'instant, voilà ce que ça donne :

Le fichier ascx :




















le fichier ascx.designer.cs (généré à la volée par VS que j'ai un peu nettoyé) :

namespace MonNamespace {

public partial class Exemple {

protected global::System.Web.UI.HtmlControls.HtmlForm form1;
protected global::System.Web.UI.WebControls.TextBox txtValue;
protected global::System.Web.UI.WebControls.Button btnDoIt;
}
}

et enfin le fichier de "code utile", le ascx.cs :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace MonNamespace {

public partial class Exemple : System.Web.UI.Page {

protected void Page_Load (object sender, EventArgs e) {
// ici le code lancé au moment du chargement de la page
}
protected void btnDoIt_Click(object sender, EventArgs e) {
// ici on fait ce qui doit être fait sur l'event click
// par exemple ouvrir une alert JS
Page.ClientScript.RegisterClientScriptBlock(
this.GetType(),
"alert_doit",
"alert('you wrote : " + txtValue.Text + "');",
true);
}
}
}

En espérant que ça te sera utile ;)
Messages postés
20
Date d'inscription
vendredi 10 février 2012
Statut
Membre
Dernière intervention
20 août 2013

re salut,
Je ne travaille avec rien.
les pages htm avec NVU, mais les organisateurs de courses pédestres souhaitent un formulaire de préinscription pour gestion des sportifs le jour de la course.
j'ai pris à droite et à gauche sur le net des codes mais je n'ai aucune connaissance. donc soit j'utilise un site qui fournit des formulaire mais PUB, soit des champs envoyé dans une base access. le précédent code trouvé fonctionne mais je souhaite le fractionner et le sécuriser.
le site est www.flrlemonteil.com est nous sommes une petite assoc. Si celà est très compliqué pour moi, je verrais avec les organisateur.
Merci pour ton aide.
Alain
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Salut,

es-tu sûr que tes clients ont un serveur HTTP qui fait tourner du .NET ? (ex. IIS). Si non, il faut leur demander ce qu'ils ont. Il est possible que tu te fourvoies avec du .NET alors qu'ils ont juste une serveur qui fait du PHP.

Si c'est bien du .NET, tu ne compiles pas ton code (il est compilé à la volée par IIS) ce qui explique l'usage du code inline. Il existe toutefois une façon d'avoir des fichiers séparés en se servant du compilateur à la volée. Voici le même exemple que plus haut mais sans compilation préalable :

le fichier Exemple.aspx :
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Exemple.aspx.cs" Inherits="Exemple" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>

    <form id="form1" runat="server">
    

        
        
    

    </form>

</html>


le fichier Exemple.aspx.cs :
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Exemple : System.Web.UI.Page {

public void Page_Load (object sender, EventArgs e) {}

public void btnDoIt_Click(object sender, EventArgs e) {

Page.ClientScript.RegisterClientScriptBlock(
this.GetType(),
"alert_doit",
"alert('you wrote : " + txtValue.Text + "');",
true);
}
}


Exemple fonctionnel testé par mes soins sous IIS, sans compilation.
Les deux fichiers doivent être dans le même répertoire.

Bon dev
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
J'ai oublié de dire :
- cette méthode est plus lente à l'exécution qu'avec du code compilé,
- tu peux télécharger Visual Studio Web Express gratuitement depuis le site de Microsoft. Il te permettra de compiler ton code si tu le souhaites, mais surtout il offre des fonctionnalités sympathiques pour l'écriture du code (ex. proposition, auto-complétion, marquage des erreurs à la volée ...)

Perso je travaille qu'avec du code compilé et via Visual Studio, d'où mes difficultés pour te répondre jusque là ;)
Messages postés
20
Date d'inscription
vendredi 10 février 2012
Statut
Membre
Dernière intervention
20 août 2013

re salut,
le code que j'ai me convient; saisie des champs, contrôle, ouverture base de donnée access et écriture des données. Je souhaite le fractionner en 2 fichiers. 1 HTML qui contient les champs de saisie
*****************************************

<html><form runat="server">

Nom :,
,

----

Prénom :,
,
----

Adresse :,
,

Ville:,
,

----


</form></html>
******************************************************
et 1 autre qui contient le code qui récupère les données inscrites dans les champs, contrôle et remplie la base.
******************************************************
<%@ Page Language="VB" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.OleDb" %> <script runat="server">
' On définit la connection
Dim Conn As New OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Server.MapPath("\data\test1.mdb"))

sub Page_Load(obj as Object, e as EventArgs)
if Not Page.IsPostBack then
FillDataGrid()
end if
end sub

sub Submit(obj as object, e as eventargs)
' Insertion d'un enregistrement
dim i, j as integer
dim tabInsert(3) as string
dim strText as string
dim TraitError as boolean = true
j = 0
for i = 0 to PanelInsert.Controls.Count - 1
if PanelInsert.controls(i).GetType Is GetType(TextBox) then
strText = Ctype(PanelInsert.Controls(i), TextBox).Text
if strText <> "" then
tabInsert(j) = strText
else
TraitError = false
lblMessage.Text = lblMessage.Text & "Entrer une valeur pour " & PanelInsert.Controls(i).ID & "
"
end if
j = j + 1
end if
next
if not TraitError then
exit sub
end if

dim strSQL as string = "INSERT INTO CLIENT (NOM, PRENOM, adresse, VILLE ) VALUES (" & _
"'" & tabInsert(0) & "'" & "," & "'" & tabInsert(1) & "'" & "," & "'" & tabInsert(2) & "'" & "," & "'" & tabInsert(3) &"')"
'lblMessage.Text = strSQL
ExecuteSQL(strSQL)
FillDataGrid()
end sub

sub FillDataGrid()
'Ouverture de la connexion
dim objCmd as new OleDbCommand _
("select * from CLIENT", Conn)
dim objReader as OleDbDataReader

try
objCmd.Connection.Open()
objReader = objCmd.ExecuteReader()
catch ex as Exception
lblMessage.Text = "Erreur de liaison avec la base de données."
end try
objCmd.Connection.Close()
end sub
function ExecuteSQL(strSQL)
dim objCmd as new OleDbCommand(strSQL, Conn)
try
objCmd.Connection.Open()
objCmd.ExecuteNonQuery()
catch ex as Exception
lblMessage.Text = "Erreur de mise à jour." & _
" Vérif les saisies."
end try

objCmd.Connection.Close()
end function
</script>
*****************************************************

Si possible celà me va dans un premier temps très bien.

merci
Alain
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
ça vaut le coup de se casser la tête ... bonne chance.