Controle d'une champs aprés appuis sur le clavier

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Controle d'une champs aprés appuis sur le clavier

par thehawk » 07 juin 2009, 14:48

en effet je serais plus d'avis a faire :

Code : Tout sélectionner

function verifnom(nom_orga) { var verif = file('http://www.site.com/verifnom.php?nomlist='+escape(nom_orga)); if(texte == verif)) { writediv(verif); } }
J'ai un gros doute : if(texte == verif)) tu fait une vérification sur la source html généré par le fichier verifnom.php, donc pour moi la vérification ne sera jamais atteinte.

Bye Hawk

par micetf » 07 juin 2009, 12:23

Bonjour,

Je ne sais si ça t'apporteras la solution à tous tes soucis,
mais à première vue il y a au moins un problème dans :

Code : Tout sélectionner

function verifnom(nom_orga) { if(texte = file('http://www.site.com/verifnom.php?nomlist='+escape(nom_orga))) { writediv('<?php echo $res; ?> '); } }
Remplace '<?php echo $res; ?> ' par texte.
En effet,
dans ce script js,
tu n'as pas accès à $res qui n'existe que sur le serveur où s'exécute le script php verifnom.php,
mais en revanche ta requête Ajax te le renvoie et tu le récupères justement dans texte.

Enfin... je ne crois pas dire de bêtises.

Fred

par fabien_14 » 07 juin 2009, 11:57

Bonjour,

J'ai modifié un peu ma requête en mettant l'événement ONBLUR mais je n'arrive pas a afficher le résultat $res dans le INNERHTML...
function writediv(texte)
{
document.getElementById('nombox').innerHTML = texte;
}
 
 
function verifnom(nom_orga)
{
if(texte = file('http://www.site.com/verifnom.php?nomlist='+escape(nom_orga)))
{
writediv('<?php echo $res; ?> ');
 
}
}
Voici le fichier verifnom.php.

Code : Tout sélectionner

<?php $res ="<ul id=\"navlistm\">"; mysql_connect("xxxxx", "xxxx", "xxxxx"); mysql_select_db("xxxxxxx"); $result = mysql_query("SELECT * FROM nom WHERE nom_orga = '".$_GET["nomlist"]."' "); while ($c=@mysql_fetch_array($result)) { $res .= "<li >.$c[nom_orga].<strong>.$c[telo].</strong></a></li>"; } $res .= "</ul><p class=\"last\"></p></dd></dl></div>"; echo $res; ?>
Merci de votre aide

par fabien_14 » 05 juin 2009, 23:26

Bonjour,

J'ai regardé et j'ai essayé d'adapter un script qui fonctionne a peu prêt.

Si je met le nom dans le INPUT il me dit que le pseudo est utilisé cependant moi je voudrais que sa m'affiche via un while ($c=@mysql_fetch_array($result)) { les résultats différent dans le DIV... mais je bloque complètement

Si vous pourriez m'aider
<form method="post" name="formulaire" >

	<p class="double">
		<label>Nom :</label>
<input type="text" name="nom_orga" onKeyUp="verifnom(this.value)" >	</p>
<div id="nombox"></div>


<script type="text/javascript">
function writediv(texte)
{
document.getElementById('nombox').innerHTML = texte;
}

function verifnom(nom_orga)
{
if(nom_orga != '')
{
if(nom_orga.length<2)
writediv('<span style="color:#cc0000"><b>'+nom_orga+' :</b> ce pseudo est trop court</span>');
else if(nom_orga.length>30)
writediv('<span style="color:#cc0000"><b>'+nom_orga+' :</b> ce pseudo est trop long</span>');
else if(texte = file('http://www.site.com/verifnom.php?nomlist='+escape(nom_orga)))
{
if(texte == 1)
writediv('<span style="color:#cc0000"><b>'+nom_orga+' :</b> ce pseudo est deja pris</span>');
else if(texte == 2)
writediv('<span style="color:#1A7917"><b>'+nom_orga+' :</b> ce pseudo est libre</span>');
else
writediv(texte);
}
}

}

function file(fichier)
{
if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
if(xhr_object.readyState == 4) return(xhr_object.responseText);
else return(false);
}
</script>


Et voici le fichier verifnom.php
<?php

// CONNECION SQL
mysql_connect("xxxxx", "xxxxx", "xxxxx");
mysql_select_db("xxxxxx");

// VERIFICATION

$aujourdui = date('Y-m-d');	
$result = mysql_query("SELECT nom_orga FROM nom WHERE nom_orga = '".$_GET["nomlist"]."' AND (date_fin >= '$aujourdui' OR nodate='1') ORDER BY id DESC LIMIT 1 ");

if(mysql_num_rows($result)>=1)
echo "1";
else
echo "2";
?>

par thehawk » 04 juin 2009, 19:56

Je pense que cette article peut t'interesser :

http://www.ajaxdaddy.com/mootools-autocomplete.html
ou encore
http://demos.mootools.net/Request#

ceci est en utilisant un framework

Bye Hawk

par fabien_14 » 04 juin 2009, 19:06

Bonjour,

Si qlq peux me donner un coup de main :) Merci

par albat » 04 juin 2009, 08:16

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "Javascript, AJAX".

par fabien_14 » 03 juin 2009, 23:56

Bonsoir,

Les données peuvent etre lourde a traité effectivement il fraudais déplacer le sujet dans le forum AJAX.

Voici le formulaire :

Code : Tout sélectionner

<form method="post" name="formulaire" > <p class="double"> <label>Nom </label> <input type="text" name="nom" > </p> <p class="double"> <label>URL :</label> <textarea rows="5" name="URL" ></textarea> </p> </form>
Je souhaiterai faire en sorte qu'en fonction de la personne ecrit le nom apparaisse les résultat pour voir les résultats de la requete a partir de la table TEST
CREATE TABLE `test` (
  `id` int(11) NOT NULL auto_increment,
  `nom` varchar(200) collate latin1_german2_ci NOT NULL default '',
  `URL` text collate latin1_german2_ci NOT NULL,
  `adresse` text collate latin1_german2_ci NOT NULL,
  PRIMARY KEY  (`id`)
) ;

Admettons dans le champs nom il existe une entrée qui est égal a Maurice si la personne ecrit Maurice je voudrais que sa m'affiche dans un DIV toutes les enregistrement ou il y a maurice comme nom.

Merci de votre aide :arrow:

par albat » 03 juin 2009, 23:27

Plusieurs possibilités :

1. MySQL + JS
Dans ta page formulaire.php, tu précharges les données
enregistrées dans ta base et tu les stockes dans un tableau JS.
Dès que l'internaute entre une valeur, tu la compares à celles
que tu as recopiées de ta table dans la BD vers ton tableau JS.

:) Agréable pour l'utilisateur
:( peut être très lourd selon le volume de données et les tests à effectuer

2. Ajax
On déplace le sujet vers le forum idoine ? ;)

par damaskinos » 03 juin 2009, 23:22

oui c'est possible.

Controle d'une champs aprés appuis sur le clavier

par fabien_14 » 03 juin 2009, 23:07

Bonjour,

J'ai un simple formulaire dans lequel j'ai un champs NOM et URL, je voudrais savoir si il est possible de vérifier si le nom est deja dans une table SQL et pareil pour URL si c'est aussi dans une autre table.

Et d'afficher un div afin de nous afficher les différent résultat ?


Merci de votre aide