Aide - Recherche - Membres - Calendrier
Version complète : J'essaye de faire un formulaire de pétition en ligne
Les Forums de PalmAttitude.org > HORS-SUJET > Divers (non PalmOS)
Franck_W
Voilà, je pose ma question ici, à tout hasard les logiciels de développement de Microsoft, Visual Studio.

Je cherche à faire une pétition en ligne. J'utilise les versions express de visual studio (web developer et sqlexpress)
J'ai presque tout déjà. Une BD avec une table poll, et 5 champs : nom, prénom, email, fonction, ID.
ID est bien entendu la clé primaire de la table. J'ai besoin de la définir son paramètre auto_increment sur true mais je n'arrive pas à trouver ce paramètre dans le logiciel.

Qqn sait-il comment j'accède à ce réglage ?




Ensuite on est bien d'accord que :
- sur la page de signature, la requete SQL doit être formulée ainsi : "INSERT INTO poll (Nom,Prénom,Email,Fonction) VALUES (@Nom,@Prenom,@Email,@Fonction)" ?
Cette requête va créer une entrée supplémentaire dans la base, et renseigner le champ ID en l'incrémentant de 1 (une fois le réglage bien fait) ?
- sur la page de consultation des signatures : la requête est ainsi : "SELECT [Nom], [Prénom], [Fonction] FROM [poll]" ?

Je veux faire une page admin qui affiche en plus l'email des signataires et qui permettent de modifier un enregistrement ou de le supprimer.
Les requêtes doivent donc être ainsi formulées ou je me plante ?

"SELECT [Nom], [Prénom], [Email], [Fonction], [ID] FROM [poll]"

"UPDATE [poll] SET [Nom] = @Nom, [Prénom] = @Prénom, [Email] = @Email, [Fonction] = @Fonction WHERE [ID] = @ID"

et pour la suppression d'un enregistrement : "DELETE FROM [poll] WHERE [ID] = @ID"

Est-ce que qqn sait si je touche au but, ou si j'ai rien compris à la syntaxe sql ? (pas frapper si je raconte trop de carabistouilles, je suis pas informaticien du tout du tout... siffle.gif )
snark
Je suis pas un expert SQL Server mais apparemment, c'est comme ça que se déclare un champ auto-incrémenté:

CODE
CREATE TABLE [dbo].[poll] (
    [ID] [int] IDENTITY (1, 1) NOT NULL
) ON [PRIMARY]

Sinon, le SQL m'a l'air bon (mais je suis vachement rouillé en SQL). Il y a 10 ans, je bossais sur des scripts SQL de 3 ou 4 pages A4, des stored procedures, ...
Jack Skellington
Ben tes requetes SQL ont l'air bien formees. Et effectivement, si ton champs ID est de type auto-increment, tu n'as pas besoin de le preciser dans ton INSERT.

Par contre, si ton SGBD est SQLexpress, ca, je ne connais pas, donc pour l'auto incrementation, je ne peux pas te dire icon_cry2.gif
Patrice
HS, mais pas tant que ça : et tu penses à faire ta déclaration CNIL ? anim_wink.gif
Franck_W
Merci pour vos réponses, elles me rassurent un peu !

Snark, c'est bien ce qui me semble, mais ce que je ne comprends pas, c'est où je le mets ce morceau de code... je ne veux pas créer une table à chaque fois que quelqu'un signe !!!

Jack, oui, c'est SQLExpress... Microsoft offre gentiment aux étudiants une licence pour Visual Studio Pro et SQL Server Standard, mais vues mon niveau en informatique, ça m'a l'air un peu surdimensionné ! anim_wink.gif

Et Patrice, oups... je n'y aurais pas pensé, en effet ! Scandaleux pour le juriste que je suis ! icon_bla.gif
(Mais là, c'est pour m'entrainer... on m'avait demandé de faire ça, j'ai dit que je savais pas... mais j'ai quand même voulu essayer !!! anim_wink.gif )
Jack Skellington
Ce que Snark t'a donne, c'est le script de creation de la table, que tu ne dois executer qu'une fois. SQL te permet en fait aussi de creer et de manipuler les tables.

Mais je le repete, ce script n'est a executer qu'a la creation de la table, sauf si tu es passe par un assistant, qui tient lieu de script de creation.
pjl
Qu'est ce qui t'a fait choisir de faire celà en ASP ? le serveur de ta boite ou parce que Microsoft offre les outils ?
Franck_W
Simplement parce que j'avais les outils sous la main, et que, n'ayant aucune formation en informatique, ceux-ci, accompagnés d'une bonne documentation et d'une interface relativement intuitive me semblaient assez adaptés à une entrée en matière...

Ceci-dit, pour des raisons d'hébergement, j'aurais préféré savoir le faire en php, même si, finalement à l'usage, je pense qu'avec un peu de compétence en plus on fait facilement (relativement) des choses assez élaborées avec ce visual studio... cool.gif

Au fond, j'ai réglé mon problème d'auto_incrémentation... L'option n'était disponible qu'en paramétrant la table en mettant le champ ID dans un réglage qui s'appelle "est identité". (le script de Snark m'a mis sur la voie anim_wink.gif)

Ceci dit, pour des raisons qui m'échappent, ça ne marche toujours pas.
La fonction modifier ne modifie rien, et la fonction supprimer me dit que la variable @ID n'est pas déclarée je crois...

Bref, c'est pas si facile que ça...
Snark, avec tes requêtes de plusieurs pages, je suis impressionné !

Merci à tous pour votre aide...
Franck_W
J'ai repris calmement la page, et c'est bon, tout marche !!! anim_wink.gif
snark
Bravo! anim_bravo.gif
Franck_W
Merci Merci !!
cool.gif

Par contre une question, théorique pour l'heure, mais que je voudrais savoir.
Je ne vais pas mettre en ligne cette pétition, puisqu'il n'y en a plus besoin. mais elle me servira peut-être un jour.

Pour qu'elle fonctionne, je n'ai qu'à l'uploader sur un serveur qui fait tourner de l'asp.net ou mes connexions à la base de données vont être rompues et devront être reparamétrées ? (et si oui, c'est pas trop compliqué pour un profane ?)

Merci encore !
Franck_W
finalement, je crois que mes essais vont servir !

Ils sont en ligne, tout fonctionne, sauf l'envoi du mail de remerciement, qui fonctionne pourtant bien en local.

CODE
        Dim emailMsg As System.Net.Mail.MailMessage = New System.Net.Mail.MailMessage()
        emailMsg.From = New System.Net.Mail.MailAddress("contact@nomdedomaine.org")
        emailMsg.To.Add(Email.Text)
        emailMsg.Subject = "Merci de votre soutien"
        emailMsg.IsBodyHtml = True
        emailMsg.Body = "<html>" & _
     "<head>" & _
     "<meta http-equiv=""Content-Language"" content=""fr"">" & _
     "<meta http-equiv=""Content-Type"" content=""text/html; charset=windows-1252"">" & _
     "</head>" & _
     "<body>" & _
     "<p>Texte du mail</p>" & _
     "</body>" & _
     "</html>"
        Dim emailSnd As System.Net.Mail.SmtpClient = New System.Net.Mail.SmtpClient()
        emailSnd.Host = "mail.nomdedomaine.org"
        emailSnd.Port = 25
        emailSnd.Credentials = New System.Net.NetworkCredential("contact", "******")
        emailSnd.Send(emailMsg)



J'obtiens ça :
Bad sequence of commands. The server response was: This mail server requires authentication when attempting to send to a non-local e-mail address. Please check your mail client settings or contact your administrator to verify that the domain or address is defined for this server.

Je ne comprends pas puisque j'ai bien défini mon compte et mon mot de passe non ?

Un pro de passage aurait-il une idée..?

pliiiizzz !! sourire.gif
snark
Difficile à dire sans avoir plus de détails. L'erreur est claire: "This mail server requires authentication when attempting to send to a non-local e-mail address. Please check your mail client settings or contact your administrator to verify that the domain or address is defined for this server."

Une supposition : ça marche en local car tu es connecté au Net via ton FAI, et le mail server voit que tu es un client (via ton IP) et donc t'autorise à envoyer le mail. Par contre, si ton site est hosté chez quelqu'un d'autre, le mail server ne reconnait pas l'IP comme étant un de ses clients et, pour éviter l'envoi de Spam, il demande une authentification SMTP icon_arrow.gif si c'est le cas, il faut utiliser le serveur SMTP du provider qui fournit le hosting du site ASP.NET.

Mais bon, sans savoir plus, c'est dur à dire.
Franck_W
Merci snark pour ton aide...

Oui quand je suis chez moi je met le smtp de mon FAI (noos icon_bla.gif )
Mais quand je mets en ligne ma page, je modifie le code ci-dessus en mettant le smtp fourni lors de mon achat de domaine/hebergement, et je veux envoyer le mail depuis une adresse que j'ai créée depuis le site de gestion de domaine.
Je renseigne d'ailleurs le login et password dans l'instance que je crée de la classe networkCredential. (j'ai bon ? anim_grin.gif )

Donc je vois pas ce que je peux identifier de plus !

Qu'est-ce que je pourrais donner comme information supplémentaire, pour que ça marche ou au moins pour qu'une âme charitable puisse m'aider ?

Merci sourire.gif
snark
Je n'y connais rien en .NET, mais tu ne dois pas rajouter un
CODE
emailSnd.EnableSsl = True
avant le Send? Et éventuellement utiliser un autre port (25 = SMTP, ?? pour le SMTP en SSL?) ?

Ou bien, vu que tu ne fais peut-être pas du SSL:

Je vois aussi qu'il y a une propriété .UseDefaultCredentials à l'objet SmtpClient.
Essaye en la mettant à False avant le Send icon_confused2.gif .
Franck_W
Merci Snark !
Non, je ne fais pas de ssl...

je pense que je vais essayer d'abord ce usedefaultcredential.
Je vais essayer même de le mettre avant de déclarer le mien !

je te dirai si ça marche ! (j'espère... asp.net, c'est simple à développer, mais quelle galère pour le mettre en ligne...) anim_wink.gif

EDIT : en tout cas, pour le ssl, fausse piste...

message d'erreur : Server does not support secure connections. huh.gif
Franck_W
EDIT 2 : le use default credential false ne marche pas non plus... j'ai toujours le même message... blink.gif
snark
anim_sorry.gif , je passe la main!
Franck_W
c'est sympa d'avoir essayé ! anim_wink.gif
Franck_W
Fin mot de l'histoire : ça marche !

J'ai trouvé dans la faq de sanbs doute un autre hebergeur qqch qui ressemble à mon cas.

CITATION
AspSmartMail 503 Authentication Error
Written by Website Tutorials

If you are using the AspSmartMail component to send emails on a Windows server and set mySmartMail.Server = "mail.yourdomain.com" you will receive the following error-:

Error: Error when check Recipient address : 503 This mail server requires authentication when attempting to send to a non-local e-mail address. Please check your mail client settings or contact your administrator to verify that the domain or address is defined for this server.

This is because of the tight security settings we run on our servers to reduce spam and email hijacking. To send emails from AspSmartMail use the following in your script.

mySmartMail.Server = "127.0.0.1"


http://tutorials.ausweb.com.au/web/Tutoria...tication-Error/

J'ai donc essayé de mettre

emailSnd.Host = "127.0.0.1" au lieu de emailSnd.Host = "mail.monnomdedomaine.org"

et voilà !

anim_wink.gif

Merci à tous (et snark en particulier pour son aide d'aujourd'hui ! anim_wink.gif )
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.