Formulaire

ap24dp Messages postés 20 Date d'inscription vendredi 10 février 2012 Statut Membre Dernière intervention 20 août 2013 - 11 févr. 2012 à 09:53
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 - 17 févr. 2012 à 10:54
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

cs_Megafan Messages postés 389 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 23 septembre 2016 2
11 févr. 2012 à 10:41
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.
0
ap24dp Messages postés 20 Date d'inscription vendredi 10 février 2012 Statut Membre Dernière intervention 20 août 2013
12 févr. 2012 à 09:34
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
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
13 févr. 2012 à 15:04
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
0
ap24dp Messages postés 20 Date d'inscription vendredi 10 février 2012 Statut Membre Dernière intervention 20 août 2013
13 févr. 2012 à 17:21
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
0

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

Posez votre question
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
13 févr. 2012 à 17:50
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)
0
ap24dp Messages postés 20 Date d'inscription vendredi 10 février 2012 Statut Membre Dernière intervention 20 août 2013
13 févr. 2012 à 18:04
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
0
ap24dp Messages postés 20 Date d'inscription vendredi 10 février 2012 Statut Membre Dernière intervention 20 août 2013
16 févr. 2012 à 12:58
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
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
16 févr. 2012 à 14:41
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.
0
ap24dp Messages postés 20 Date d'inscription vendredi 10 février 2012 Statut Membre Dernière intervention 20 août 2013
16 févr. 2012 à 16:07
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
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
16 févr. 2012 à 17:18
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 ;)
0
ap24dp Messages postés 20 Date d'inscription vendredi 10 février 2012 Statut Membre Dernière intervention 20 août 2013
16 févr. 2012 à 17:54
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
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
17 févr. 2012 à 09:20
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
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
17 févr. 2012 à 09:25
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à ;)
0
ap24dp Messages postés 20 Date d'inscription vendredi 10 février 2012 Statut Membre Dernière intervention 20 août 2013
17 févr. 2012 à 10:07
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
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
17 févr. 2012 à 10:54
ça vaut le coup de se casser la tête ... bonne chance.
0
Rejoignez-nous