Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/08/2007, 20h49   #1
Membre confirmé
 
Avatar de zemeilleurofgreg
 
Inscription : mars 2006
Messages : 469
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : mars 2006
Messages : 469
Points : 271
Points : 271
Par défaut appel de fonction avec boutton

Bonjour à tous,

J'ai un petit souci pour l'appel de ma fonction !

Quand je clique sur le boutton, il devrait normalement exécuter le code de celle-ci, mais rien.
C'est une erreur de code mais je sais pas la quelle.

voici mon code.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<%@ LANGUAGE="VBSCRIPT" %> 
<%
 sub function1()
	Set conn = Server.CreateObject("ADODB.Connection")
	conn.Provider="Microsoft.Jet.OLEDB.4.0"
	con.ConnectionString="C:\Inetpub\wwwroot\db1.mdb"
	conn.open()
 
	Set RC=CreateObject("ADODB.RECORDSET")
	RC.execute "insert table1 (champ2) values(textfield)",conn
 	alert("test")
 
	RC.Close
	conn.Close
	Set RC = Nothing
	Set conn = Nothing
end sub
%>
 
<html>
<head></head>
<title>Untitled Document</title>
<body>
<form name="form" method="post" action="">
<p>
    <input type="text" name="textfield">
    <input type="button" onclick=function1() name="Button" value="ajouter">
</p>
</form>
</body>
</html>
merci d'avance
zemeilleurofgreg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2007, 22h03   #2
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
Salut,

Je n'ai pas vérifié si ton code marché mais, sinon je pense que cela ira mieux pour appeler ta fonction comme ceci, j'ai quand même un doute :

Code :
 <input type="button" onclick=<% function1() %> name="Button" value="ajouter">
__________________
Ne dites pas Java pour dire Javascript ! Ces deux codes n'ont rien à voir ! // Essayez d'expliquer, de la façon la plus claire possible votre problème. // Parfois une image vaut mieux qu'un long discours

FAQ ASP
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2007, 22h47   #3
Membre confirmé
 
Avatar de Cpas2latarte
 
Inscription : janvier 2006
Messages : 238
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 238
Points : 217
Points : 217
ça ne peut pas fonctionner de la sorte
Le "onclick" est un évènement généré par le client à partir du navigateur.
Or la fonction elle est défini pour le traitement coté serveur (les balise <% et %>)

Dans le code il y a une confusion entre le traitement coté serveur et le traitement coté client.
Ex :
Citation:
Server.createObjet
ceci est fait du coté serveur , c'est a dire par le serveur web
et apres tu fais
Citation:
alert("test")
Or alerte est un fonction du coté client (inconnu d'asp).
Dans ton code le traitement coté serveur et client sont mélangés, ça ne peut pas fonctionner.

Pour faire ce que tu veux faire il y a plusieurs manières de procéder.
La plus simple est d'utiliser un formulaire ex
quand le client clique : le formulaire est envoyé (client -> serveur) le serveur va faire la requête dans la base de données et générer une page html resultat qui contiendra le script du alert (serveur -> HTML -> ALERT)
Inconvénient, ça recharge la page.
2 emme méthode, tu fais une requete ajax sur le onclick (client -> serveur -> client)
Inconvénient c'est un peu plus compliqué que la précédente, et il te faut 2 pages, alors que la précédant tu t'en sort avec une seul
__________________
Il n'y a que 2 choses infinies dans le monde :
L'univers et la bétise humaine...
Mais pour l'univers, je n'ai pas de certitude (A.E.)
Cpas2latarte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2007, 11h39   #4
Membre confirmé
 
Avatar de zemeilleurofgreg
 
Inscription : mars 2006
Messages : 469
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : mars 2006
Messages : 469
Points : 271
Points : 271
conclusion : je me mélange les pinceaux entre serveur et client ! ça, ok j'ai bien compris !

concrètement, est-ce que je peux remplacer le onclick par autre chose ?
zemeilleurofgreg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2007, 12h22   #5
Membre confirmé
 
Avatar de Cpas2latarte
 
Inscription : janvier 2006
Messages : 238
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 238
Points : 217
Points : 217
je vais te faire un exemple simple (par formulaire) si tu veux je te fait la même chose via ajax
dans une page asp :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 
<%
' txtResultat est un variable serveur contenant un résulat
Dim varResultatServeur
  ' test si formulaire soumis CAD si le champ textfield <> ""
  If Request.Form("textfield") <> "" Then
    ' traitement divers
    ' le traitement n'est fait que si kk chose à été soumis 
    ' apres le traitemnt on stock le résultat dans une variable 
    varResultatServeur = "quelquechose"
  Else
    ' si pas de traitement -> une chaine vide
    varResultatServeur = "" 
  End if
%>
<html>
<head>
  <script>
    // scripts clients
    // ici une variable client, dans lequelle on copie le resultat du serveur
    var varResultatClient = "<%=varResultatServeur%>";
    // attention au caractere spéciaux genre les " \ ' etc
    // utiliser si besoin la fonction Replace (coté ASP)
 
    // la fonction function1 va soumetre le formulaire
    function function1 () {
      // verification divers, puis on soumet
      document.monForm.submit();
    }
    // une fonction appelé lors du chargement de la page  
    function actionSiBesoin() {
      // on test si on a un résultat (<> "")
      // si oui on fait kk chose
      if(varResultatClient != "") {
        alert(varResultatClient);
      } 
    }
 
  </script>
</head>
<title>Untitled Document</title>
<!-- on fait en sorte que actionSiBesoin soit appelé au chargement de la page  -->
<body onload="actionSiBesoin()">
<form name="monForm" method="post" action="">
<p>
    <input type="text" name="textfield">
    <input type="button" onclick="function1()" name="Button" value="ajouter">
</p>
</form>
</body>
</html>
__________________
Il n'y a que 2 choses infinies dans le monde :
L'univers et la bétise humaine...
Mais pour l'univers, je n'ai pas de certitude (A.E.)
Cpas2latarte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2007, 13h01   #6
Membre confirmé
 
Avatar de zemeilleurofgreg
 
Inscription : mars 2006
Messages : 469
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : mars 2006
Messages : 469
Points : 271
Points : 271
Citation:
je vais te faire un exemple simple (par formulaire)
je suis désolé, mais je comprend rien !!

est-il possible de regarder à mon code du début à la fin siouplé ????
Pour l'instant, je travail en local. Donc je tape "http://localhost/test.asp" dans mon browser. J'ai une page avec un champ text et un bouton mais lorque je clique sur ce bouton .....RIEN ne s'insert dans la DB.

voici mon code complet

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<%
   If Request.Form("textfield") <> "" Then 
	Set conn = Server.CreateObject("ADODB.Connection")
	conn.Provider="Microsoft.Jet.OLEDB.4.0"
	con.ConnectionString="C:\Inetpub\wwwroot\db1.mdb"
	conn.open()
 
	Set RC=CreateObject("ADODB.RECORDSET")
	RC.execute "insert table1 (champ2) values(textfield)",conn
 
	RC.Close
	conn.Close
	Set RC = Nothing
	Set conn = Nothing
   else
	varResultatServeur = "" 
   End if
%>
 
<html>
<head>
  <script>
    // scripts clients
    // ici une variable client, dans lequelle on copie le resultat du serveur
    var varResultatClient = "<%=varResultatServeur%>";
    // attention au caractere spéciaux genre les " \ ' etc
    // utiliser si besoin la fonction Replace (coté ASP)
 
    // la fonction function1 va soumetre le formulaire
    function function1 () {
 
      alert("passage dans la function1")
      document.Form.submit();
 
    }
 
  </script>
</head>
<title>Untitled Document</title>
<body>
<form name="form" method="post" action="">
<p>
    <input type="text" name="textfield">
    <input type="button" onclick=function1() name="Button" value="ajouter">
</p>
</form>
</body>
</html>
zemeilleurofgreg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2007, 22h26   #7
Membre confirmé
 
Avatar de Cpas2latarte
 
Inscription : janvier 2006
Messages : 238
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 238
Points : 217
Points : 217
Code :
je suis désolé, mais je comprend rien !!
Bah t'inquiète, même le meilleur développeur du monde a été au départ un débutant , pi si ça m'embêtait d'aider, je vois pas ce que je ferait sur ce forum
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
<%
' je te recommande de déclarer tes variables
Dim conn  ' l'objet conneciton
Dim RC    ' l'objet recordset
Dim query ' une variable pour la requête
 
  If Request.Form("textfield") <> "" Then 
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Provider="Microsoft.Jet.OLEDB.4.0"
    con.ConnectionString="C:\Inetpub\wwwroot\db1.mdb"
    conn.open()
    ' je construit ma requête d'insertion
    ' pour spécifier la valeur, je concatène dans ma requête
    ' la valeur envoyé par mon formulaire
    ' le replace, est utilisé au cas ou l'utilisateur à saisie un '
    ' 
    query = "insert table1 (champ2) values('" &  _
            Replace(RequestForm("textfield"), "'", "''") & _ 
            "')"
    Set RC=CreateObject("ADODB.RECORDSET")
    RC.execute query,conn
 
  	RC.Close
  	conn.Close
  	Set RC = Nothing
  	Set conn = Nothing
 
  	' dans ton tout 1er exemple tu voulais afficher test, alors je fait pareille
  	varResultatServeur = "test"
 
  else
    varResultatServeur = "" 
  End if
%>
 
<html>
<head>
  <script>
    // scripts clients
    // ici une variable client, dans lequelle on copie le resultat du serveur
    var varResultatClient = "<%=varResultatServeur%>";
    // attention au caractere spéciaux genre les " \ ' etc
    // utiliser si besoin la fonction Replace (coté ASP)
 
    // la fonction function1 va soumetre le formulaire
    function function1 () {
 
      alert("passage dans la function1")
      document.Form.submit();
 
    }
    function actionSiBesoin() {
      // on test si on a un résultat (<> "")
      // si oui on fait kk chose
      if(varResultatClient != "") {
        alert(varResultatClient);
      } 
    }
 
  </script>
</head>
<title>Untitled Document</title>
<body onload="actionSiBesoin()">
<form name="form" method="post" action="">
<p>
    <input type="text" name="textfield">
    <input type="button" onclick=function1() name="Button" value="ajouter">
</p>
</form>
</body>
</html>
J'ai juste un doute car j 'ai plus ça en tête. tu fait ta requête update via un recordset (rs.execute query, cnn)
Je me demande si on à la droit de faire des uppate de la sorte et je me demande si cette syntaxe la n'est pas reservé à des select uniquement. J'avoue avoir sur ce point un trou de mémoire.
Bref si ça marche comme ça, ben c'est cool, si ça marche pas, essai comme ça
Code :
1
2
 
Conn.execute query
__________________
Il n'y a que 2 choses infinies dans le monde :
L'univers et la bétise humaine...
Mais pour l'univers, je n'ai pas de certitude (A.E.)
Cpas2latarte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2007, 11h59   #8
Membre confirmé
 
Avatar de zemeilleurofgreg
 
Inscription : mars 2006
Messages : 469
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : mars 2006
Messages : 469
Points : 271
Points : 271
Salut Cpas2latarte !

Merci beaucoup pour ton aide.
Je test tout ça et je te dis quoi.

@+
zemeilleurofgreg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 16h51   #9
Membre confirmé
 
Avatar de zemeilleurofgreg
 
Inscription : mars 2006
Messages : 469
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : mars 2006
Messages : 469
Points : 271
Points : 271
Super, j'ai ma connection !!

Merci Cpas2latarte

@+
zemeilleurofgreg est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h49.


 
 
 
 
Partenaires

Hébergement Web