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

Eléphant du PHP | 183 Messages

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
_________
Fabien

Eléphant du PHP | 288 Messages

03 juin 2009, 23:22

oui c'est possible.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

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 ? ;)

Eléphant du PHP | 183 Messages

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:
_________
Fabien

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

04 juin 2009, 08:16

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

Eléphant du PHP | 183 Messages

04 juin 2009, 19:06

Bonjour,

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

Mammouth du PHP | 991 Messages

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
DevOps, Symfony4, Hoa

Eléphant du PHP | 183 Messages

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";
?>
_________
Fabien

Eléphant du PHP | 183 Messages

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
_________
Fabien

Eléphant du PHP | 65 Messages

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

Mammouth du PHP | 991 Messages

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
DevOps, Symfony4, Hoa