Script - appel a une base de données distante

WRInaute passionné
Bonjour,

J'ai une petite question technique...

J'ai un site "A" qui possède une base de données "A1" et je souhaiterai utiliser cette base "A1" à partir d'un site "B" simplement en insérant un code HTML du genre "<script ...>taratata</script>"

Ce serait pour développer un widget. Le site "B" serait un site tiers sur lequel je ne pourrais pas faire de php... Quelle solution s'offre à moi...?

Je sais que cela doit être possible car les annonces adsense doivent (à mon sens) fonctionner de la même façon non?

Mon widget serait un formulaire de recherche avec une petite fonction ajax qui suggère des résultats avant que le formulaire soit soumis (résultats qui seraient tirés de ma base de données "A1"...

Un grand merci par avance!
 
WRInaute accro
Plusieurs options:
- ton script crée un iframe avec une source sur ton serveur A qui fait ce qu'il veut (c'est comme ça que fonctionnement Adsense)
- ton script est directment sur ton serveur A (i.e. <script src=url_sur_serveur_a></script>), et fait ce qu'il veut

Il y en a d'autres. Par contre tu ne peux pas dans ton script utiliser XMLHttpRequest vers le serveur A (pas le même domaine, bloqué). Et si tu utilises des frames, le contenu du frame ne pourra pas accéder à la page qui le contient et vice-versa (i.e. une fois créé, le frame est totalement indépendant de la page qui le contient).

Jacques.
 
WRInaute accro
Suivant ce que tu veux faire exactement, les deux méthodes ont des avantages et des inconvénients. L'appel du script chez toi sans créer d'iframe te laisse plus de souplesse pour t'intégrer dans la page (y compris laisser la possibilité à celui qui intègre de contrôler l'affichage via du CSS si tu fais bien les choses), mais c'est à double tranchant: tu es dans une autre page que tu ne contrôles pas du tout, il peut y avoir du CSS qui rentre en conflit avec le tien (faire bien attention à utiliser des styles avec des noms qui te sont spécifiques, bien réinitialiser tous les styles, i.e. ne pas considérer que tu as forcément les stytes par défaut du navigateur, etc.). Il y a aussi la problématique des pages en (vrai) XHTML servies comme telles à FF, dans lesquelles tu ne pourras pas utiliser document.write (il faut que tu passes par le DOM pour ajouter ton contenu). Dans un iframe, tu es dans un document complètement à part, donc tu contrôles beaucoup mieux l'environnement. Si ton contenu met du temps à se charger, l'iframe permet aussi de faire en sorte que ça ne bloque pas le reste de l'affichage de la page.

Evidemment, avec l'iframe, tu peux avoir le script chez toi aussi (c'est en fait ça la méthode Adsense: le script est chez eux, et il crée un iframe pour y mettre la pub).

Jacques.
 
WRInaute passionné
Merci Jacques,

En fait, je souhaiterai que mon widget soit considéré comme du contenu propre au site tiers. Par exemple, pour obtenir des backlinks.

Il sera comme cela:

Sur le site tiers (site "B"):

Code:
<form>
Ici un formulaire avec un petit script ajax qui me propose des résultats issus ma base de données "A1"
<inputbox recherche></inputbox>
</form>
Ici un petit message avec un lien vers le site "A"

Quand l'utilisateur commence à a chercher dans le formulaire on aura:

Code:
<form>
<inputbox recherche>Début de recherche</inputbox>
</form>
<div>
Suggestion 1 => Lien 1
Suggestion 2 => Lien 2
</div>
Ici un petit message avec un lien vers le site "A"

Bien sur, je suis conscient que Google ne verra pas les liens "Lien 1" et "Lien 2" (car il n'a pas de petites mains pour faire des recherches dans les formulaires mais le but du jeu est de proposer du contenu et de la valeur ajouté aux sites tiers (en échange de visiteurs car les personnes qui cliqueront sur les liens se retrouveront sur mon site).

Par ailleurs, je pense également faire "tourner" les ancres du lien qui se trouve en dessous du formulaire (à partir des résultats de la base de données "A1" Ainsi, je gagnerai des backlinks diversifiés et en rapport avec mon contenu...

En tout cas, merci pour ton aide... :-)

Anto
 
WRInaute passionné
Anto1982 a dit:
Par ailleurs, je pense également faire "tourner" les ancres du lien qui se trouve en dessous du formulaire (à partir des résultats de la base de données "A1" Ainsi, je gagnerai des backlinks diversifiés et en rapport avec mon contenu...

quel intérêt si de toute façon ce n'est pas vu par google (bien que oui ça peut être un intérêt pour toi de tracker les meilleurs ancres qui t'amènent du trafic, mais sinon niveau SEO, ???)

sinon comment on appelle une iframe en javascript ??? (question sûrement bête mais là je vois pas trop ...)
 
WRInaute passionné
quel intérêt si de toute façon ce n'est pas vu par google (bien que oui ça peut être un intérêt pour toi de tracker les meilleurs ancres qui t'amènent du trafic, mais sinon niveau SEO, ???)

Si, pour le lien en dessous du formulaire, cela a un intérêt car il ne dépend pas des recherches effectuées par les utilisateurs. Il sera affiché même si le formulaire n'est pas utilisé...

sinon comment on appelle une iframe en javascript ??? (question sûrement bête mais là je vois pas trop ...)

En fait je pense que c'est pas javascript qui appelle ton iframe, ce serait plutot un truc du genre:
Code:
<iframe>ta page ici qui contient ton javascript</iframe>
 
WRInaute passionné
Je pense que si car le code a insérer (en html) sera du type:

<script taratata></script>

ce qui donnera:

<form>
formulaire
</form>
+ 1 lien.

non?
 
WRInaute passionné
Il y en a d'autres. Par contre tu ne peux pas dans ton script utiliser XMLHttpRequest vers le serveur A (pas le même domaine, bloqué). Et si tu utilises des frames, le contenu du frame ne pourra pas accéder à la page qui le contient et vice-versa (i.e. une fois créé, le frame est totalement indépendant de la page qui le contient).

Zut...! j'essayais justement d'utiliser XMLHttpRequest... Existe-t-il un autre moyen...?
 
WRInaute passionné
La solution avec l'Iframe:
http:// www . adverts-portal.com / test . html

Fait de la façon suivante:
<script qui appelle un fichier .js sur le serveur A>
le fichier .js sur le serveur A contient juste une ligne (iframe contenant mon code fonctionant avec httprequest)

Cette solution fonctionne pour le widget mais:

La div qui contient les suggestions de recherche ne peut pas dépasser les limites de l'iframe
Impossible de générer des liens (à partir de la base de "A") en dehors de l'iframe (du coup ils ne servent à rien dans l'iframe!)

---
Adsense fonctionne pourtant différemment non?
avec un simple script du type <script></script>, quand on regarde le code html généré sur la page, on obtient quelque chose de plus détaillé avec des lien "a href"....!

Je cale............. mais je pense que la solution de l'iframe n'est pas la bonne...
 
WRInaute passionné
J'ai regardé du coté de PERL avec les CGI. le problème, c'est que mon hébergement ne les autorise pas (dommage, cela semblait fonctionner sur le papier...!)

Une autre solution acceptable pour moi serait de faire un "snapshot" partiel de ma base (mis à jour par exemple chaque semaine) et de l'inclure dans un fichier .txt.
Avec le script (javascript) j'interroge ce fichier txt et retourne en temps réel les résultats (de la même façon que le httprequest avec la base de données mais ce coup ci sur un fichier txt).

[Edit:] Ca ne fonctionnera pas, visiblement, j'aurais également besoin de httprequest...[/edit]

La ou je cale, c'est de générer du code avec mon script pour que celui-ci soit visible dans le code de la page du site tiers:
<mon script></monscript>
donnerait:
<du html et encore du html>

comme disaient les Beatlles... "Help meeeeeeee....."

Un grand merci par avance!
 
WRInaute accro
J'arrive un peu en retard, j'avais loupé un des messages de notification...

Comme déjà dit, si dans la page qui contient ton script tu ne mets que ça, tout ce que tu crées avec ton script sera totalement invisible par les moteurs, donc ça ne fait absolument pas le moindre backlink. Donc si c'est la seule raison pour laquelle tu veux préfères la méthode "intégrée" plutôt que la méthode iframe, oublie.

Ensuite, pour ton contenu:
- soit ton script est dynamique (i.e. tu fais ton script habituel d'affichage de ce que tu veux, mais au lieu de cracher une page HTML, tu craches un script JS qui va générer le HTML en question, à coups de document.write si tu es flemmard et que tu te moques des pages XHTML servies comme telles qui ne le supporteront pas, ou à coups de createNode/appendChild etc.)
- soit ton script est statique, et crée un iframe (pareil que ci-dessus, document.write ou createNode/appendChild), qui va ensuite faire ce qu'il veut sur ton serveur (source de l'iframe directement sur ton serveur, et tu peux même faire du xmlhttprequest en plus par dessus si tu veux)
- soit ton script est statique et génère un autre tag <script> qui lui sera dynamique, mais ça ce n'est utile que si ton script commence à devenir un peu trop complexe et que ça simplifie la maintenance de séparer les parties statiques et les parties dynamiques.

Attention, le chemin est parsemé d'embuches pour la compatibilité avec tous les browsers. Bon courage...

Jacques.
 
WRInaute passionné
Merci Jacques pour ces précisions.

Je vais finalement opter pour l'iframe.

=> Le script à insérer contiendra:
- Un lien
- Le widget

J'ai conditionné l'affichage du widget sur l'existence du lien. Si le webmaster tente d'afficher uniquement le widget, celui-ci n'apparaîtra pas.
Pour la compatibilité cross-browsers... ça va être coton mais je vais me débrouiller! Merci!
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut