Bonsoir,

J'ai une nouvelle fois besoin de votre aide...



J'ai une petite BDD access pour une gestion de collection. On va dire de disques, pour simplifier la description. Plusieurs milliers d'entrées.

Un formulaire m'affiche une sélection d'entrées de ma collection (selon les critères demandés : tel auteur, telle année, etc), avec en regard de chacune, un bouton qui permet d'envoyer sur une page web (en intranet) à laquelle sont transmis le titre, le nom de l'auteur, l'année, etc, par méthode GET.

Cette page web aura pour but d'éditer une étiquette :
- à chaque fois qu'elle est appelée, les données sont stockées dans une autre BDD (MySQL)
- quand j'en ai un certain nombre, je lance l'impression de toutes les étiquettes en attente, puis je purge la BDD MySQL

(Ca peut sembler tordu, mais ça me permet de faire une mise en page beaucoup plus fine en utilisant les CSS que ce que je suis capable de faire avec un état Access. Et puis je n'ai besoin de faire d'étiquettes que de manière ponctuelle pour telles ou telles entrées, jamais pour la BDD au complet)

Voilà pour l'idée globale.



Question code, voici le script VBA appelé par clic sur le bouton dans Access :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Private Sub BtSendWeb_Click()
On Error GoTo Err_BtSendWeb_Click
 
    Etik_Titre = Me.Titre.Value
 
    Etik_Genre = Me.Genre.Value
 
    Etik_Annee = Me.Annee.Value
 
    Etik_Auteur = Me.Auteur.Value
 
    ' Préparation de l'URL
        URL = "http://127.0.0.1/etiquettes_form.php?Titre=" & Etik_Titre & "&Genre=" & Etik_Genre & "&Annee =" & Etik_Annee & "&Auteur=" & Etik_Auteur
 
    ' On appelle l'URL
        Application.FollowHyperlink URL
 
Exit_BtSendWeb_Click:
    Exit Sub
 
Err_BtSendWeb_Click:
    MsgBox Err.Description
    Resume Exit_BtSendWeb_Click
 
End Sub

Et côté page intranet, un truc bête comme choux du genre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
if (isset($_GET['Titre'])) {$Titre=$_GET['Titre'];} else { $Titre=""; }
if (isset($_GET['Auteur'])) {$Auteur=$_GET['Auteur'];} else { $Auteur=""; }
if (isset($_GET['Genre'])) {$Genre=$_GET['Genre'];} else { $Genre=""; }
if (isset($_GET['Annee'])) {$Annee=$_GET['Annee'];} else { $Annee=""; }
 
$qadd="INSERT INTO etiq(titre, auteur, genre, annee) VALUES (".$Titre.", ".$Auteur.", ".$Genre.", ".$Annee.")";
$rvalid=mysql_query($qadd));

Et c'est là que se trouve le côté rigolo du truc :
- si je clique sur le bouton de mon formulaire Access, ça marche, et même trop : chaque entrée est mémorisée en double dans la BDD MySQL
- alors que si je copie-colle l'URL générée par mon script VBA dans mon navigateur, il n'y a bien qu'une seule nouvelle entrée mémorisée à chaque fois dans ma BDD MySQL.


Le problème vient donc manifestement de mon script VBA, comme s'il appelait ma page web en double, mais je ne trouve pas ni ne comprends pourquoi...

Qui aurait une idée ?...
(pour l'instant, par défaut, petite "rustine" : avant mon INSERT INTO dans ma page web, je fais un SELECT pour m'assurer que l'entrée n'existe pas déjà dans ma base MySQL (si elle vient d'être insérée). Mais ça fait le double de requêtes, c'est pas très classe, et surtout, j'aimerais comprendre !...)

BM