Accueil > > > ASSISTANT DE SAISIE SEMI-AUTOMATIQUE (GRE LIST)
ASSISTANT DE SAISIE SEMI-AUTOMATIQUE (GRE LIST)
Information sur la source
Description
Cette source est une excuse pour m'essayer à XMLHTTPREQUEST. A savoir que je n'ai rien inventé mais que je me suis basé sur l'excellent article présent sur http://www.webpasties.com/xmlHttpRequest/index.htm l. Je conseille à tous ceux qui veulent faire du XMLHTTPREQUEST de lire cet article! Je me demandais comment marche le système de saisie assistée du moteur de recherche de phpcs... alors voili voilà un code qui fait la même chose: lorsqu'on tape des mots, dès qu'il y a trois caractères, si il y a des mots commencant par ces trois caractères sont connus par la bd, des propositions sont faites. En cliquant sur "definition", on obtient... la définition! Je me suis basé sur une GRE List de 1162 mots pour m'essayer. Ce code a pour seul but de présenter XMLHTTPREQUEST.
Source
*************** LE FICHIER INDEX.PHP
<html>
<head>
<title>XMLHTTPREQUEST GRE WORDS QUERY</title>
<style type="text/css">
div.prop {
height: auto;
width: 150px;
//overflow: auto;
border: 1px solid #666;
background-color: #ccc;
padding: 8px;
font-size: 10px;
font-family:verdana;
font-weight: bold;
visibility:hidden;
}
input{
border-right : 1px solid #669;
border-top : 1px solid #669;
font-size : 10px;
border-left : 1px solid #669;
color : #000;
border-bottom : 1px solid #669;
font-family : verdana, arial, helvetica, sans-serif;
background-color : #f3f3f9;
}
</style>
<script type="text/javascript">
var isWorking = false; // est-ce que le canal est occupé
function getHTTPObject() {
var xmlhttp;
/*@cc_on
@if (@_jscript_version >= 5)
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
@else
xmlhttp = false;
@end @*/
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp = false;
}
}
return xmlhttp;
}
var http = getHTTPObject(); // on crée un objet HTTP
function treatquery(){ // la requête
if (!isWorking && http) {
ch = document.send.abr.value;
if (ch.length>2){
http.open("GET", "treat.php?abr=" + escape(ch), true);
http.onreadystatechange = handleHttpResponse;
isWorking = true;
http.send(null);
}
if ((ch.length<3) && (document.getElementById('res').style.visibility == 'visible'))
document.getElementById('res').style.visibility = 'hidden';
}
}
function handleHttpResponse() { // traitement de la demande
if (http.readyState == 4) {
if (http.responseText.indexOf('invalid') == -1) {
var xmlDocument = http.responseXML;
var res = xmlDocument.getElementsByTagName('name').item(0).firstChild.data;
var elements = res.split(";");
var result;
if (elements[0] != ''){
result = "<font color=\"darkblue\">Do you mean...</font><br />";
for (var i=0;i<elements.length;i++){
result = result + "<a style=\"text-decoration:none;color:red;\" href=\"javascript:setQuery('" + elements[i] + "');\">" + elements[i] + "</a><br />";
}
result = result + "<hr /><center><a href=\"http://www.noisy.ch\" style=\"text-decoration:none;color:darkgrey;\">pub ici</a></center>";
document.getElementById('res').innerHTML = result;
document.getElementById('res').style.visibility = 'visible';
}
else document.getElementById('res').style.visibility = 'hidden';
isWorking = false;
}
}
}
function setQuery(ch){
document.getElementById('abr').value = ch;
document.getElementById('res').style.visibility = 'hidden';
}
</script>
</head>
<body>
<form name="send" style="display:inline; position: relative;" action="" method="POST">
<div style="display:inline; position: relative;">
<input type="text" id="abr" name="abr" value="<?php echo $_POST['abr'];?>" style="width: 150px;font-family:verdana; font-size:8pt;color:darkblue;" onkeyup="treatquery();" />
<input type="submit" value="definition" style="font-family:verdana; font-size:8pt;" name="submit" />
<div id="res" style="background-color:white;position: absolute; top: 22px;left: 0px;" class="prop" onmousemove="this.style.visibility='visible';" onmouseout="this.style.visibility='hidden';">
</div>
</div>
</form>
<?php
if ((isset($_POST)) && ($_POST['abr']!='')){
include('config.php');
$q = 'SELECT definition FROM dico_gre WHERE name = \''.$_POST['abr'].'\';';
$r = mysql_query($q);
if (mysql_num_rows($r)>0){
$res = mysql_fetch_assoc($r);
$def= $res['definition'];
}
else $def = 'no definition known...';
echo '<br /><br /><font face="verdana" size="1" color="darkblue"><b>'.$_POST['abr'].'</b></font><font face="verdana" size="1" color="black">: '.$def.'</font>';
}
else echo '<br /><br /><font face="verdana" size="1" color="darkblue"><b> </b></font><font face="verdana" size="1" color="black"> </font>';
?>
</body>
</html>
*************** LE FICHIER TREAT.PHP
<?php
if ((isset($_GET)) && ($_GET['abr'] != '')){
include('config.php');
$abr = $_GET['abr'];
$q = 'SELECT name from dico_gre WHERE name LIKE \''.$abr.'%\'';
$r = mysql_query($q);
$return = '<?xml version="1.0" standalone="yes"?><result>';
if ((mysql_num_rows($r)>0)){
$name = '';
while ($rep=mysql_fetch_array($r)){
$name .= $rep['name'].';';
}
$return .= '<name>'.$name.'</name>';
}
if (mysql_num_rows($r)==0) $return .= '<name>;</name>';
$return .= '</result>';
header('Content-Type: text/xml');
echo $return;
}
?>
Conclusion
La base de donnée est
CREATE TABLE dico_gre (name VARCHAR(50) NOT NULL, definition TEXT NOT NULL);
INSERT INTO dico_gre VALUES ('abacus','frame with balls for calculating'); INSERT INTO dico_gre VALUES ('abate','to lessen to subside'); INSERT INTO dico_gre VALUES ('abdication','giving up control authority'); ...
La liste fait plus d'un mega (1162 entrées), donc je ne peux pas la mettre ici! Elle est PROVISOIREMENT disponible sur http://www.noisy.ch/xmlhttprequest/gre/gre.xls, sinon vous pouvez trouver des listes équivalentes via google.
Historique
- 04 août 2005 22:28:05 :
- Démo retirée pour pas devoir me battre contre des injections... une petite animation est disponible sur:
http://www.noisy.ch/xmlhttprequest/gre/demo.gif
- 05 août 2005 13:56:13 :
- Ajout d'un zip pour faire plaisir a MATHIS49 ;)
Le fichier xls ne contient que 90 lignes, la lettre 'a' en fait
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
saisie semi automatique [ par zied86 ]
Salut , je cherche un script en php me permettant en tapant un lettre ou plus d'un mot enregistrer dans une base de donnée MYSQL de faire apparaître c
saisie semi automatique [ par el_bassir ]
Bonjour;j'aimerai faiire un script dans ma page web permettant de faire la meme chose que la saisie semi automatique. en fait j'ai une zone de t
Problème formulaire Google Chrome [ par Hellooow ]
Bonjour à tous, J'ai rencontré quelques problèmes à cause de la saisie automatique des formulaires sur Google Chrome. En effet cette option de saisi
Script mail invitation automatique [ par chichipool ]
Bonjour Dernièrement j'ai vus sur la plupart des site web le script d'invitation des amis. quand en s'inscrit sur le site par exemple FaceBook une
format de formulaire de saisie dédié au numero INSEE [ par rachidphp93 ]
bonjour tout le monde je suis debutant en php;Je souhaiterai savoir s'il ya un format text du formulaire pour saisir un INSEE, en fait un cham
Un formulaire de saisie qui boucle [ par amewole ]
Comment fait on un formulaire de saisie qui boucle càd qui ne disparait pas à chaque validation ?Quand j'ai fini de saisir et que je v
automatique [ par dodji_phpcs ]
Slt a tous . j'ai un formaulaire qui a trois champs de type texte (nom prenom et matricule).J'aimerais savoir comment faire pour que les champs prenom
Problème de côtes [ par SPLeeN86 ]
J'aimerai faire cela pour pouvoir transmettre la variable uti par la méthode GET et faire une vérification sur la saisie avec une fonction j
delete automatique [ par speedylol ]
Bonjour , voici que j 'ai le delete fonction très bien ;-) mais cela fonction directement je voix pas l'erreur que j'ai fait seriez vous m'eclair
Envoi d'email automatique d'alerte [ par rafff01 ]
Bonjour,J'ai un site de petites annonces et je cherche à faire un système qui envoi automatiquement chaque jours un email aux annonceurs don
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Forum
RE : SONDAGE..RE : SONDAGE.. par phpAnonyme
Cliquez pour lire la suite par phpAnonyme RE : SONDAGE..RE : SONDAGE.. par TychoBrahe
Cliquez pour lire la suite par TychoBrahe
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|