Page 1 sur 3

Vérifier un champ avec requete sql suite à un onchange...

Posté : 09 août 2006, 16:12
par laplumaencre
Salut a toutes et tous !!
J'ai besoin de vérifier dans une base de donnée sql ce que l'utilisateur a taper dans un champ "ref. base" dès qu'il sort du champ (onchange), pour lui dire ok voici le libelle correspondant à la ref ou ref inconnue !
Voila j'ai bidouillé mais j'arrive pas... Qui as une solution?
Merci

Posté : 09 août 2006, 17:05
par faber8
Je pense qu'il faut que tu utilise un popup

(javascript qui ouvre un popup en lui passant en paramètre la référence à rechercher)

qui se chargera de faire la vérification

(ajax ou php)

et renverra à la première fenêtre la réponse

(javascript qui appellera une fonction javascript de la fenêtre opener avec comme paramètre le libellé de la référence).

Si tu pioche un peu sur le javascript n'hésite pas à demander conseil sur le forum de toutjavascript.com

Bye

Posté : 09 août 2006, 17:08
par faber8
Heu ... Si tu veux pas utiliser de popup tu as une autre solution si ta base de référence n'est pas énorme :

Tu passe à javascript un tableau contenant les références et libellés correspondants pour qu'ensuite javascript puisse se débrouiller tout seul pour afficher le libellé correspondant a la référence entrée.

Voila c'est tout se que j'ai comme idée.

Bye

Posté : 09 août 2006, 17:59
par cari
je ne sais pas si c'est ce dont tu as besoin, mais essaye de faire le test dans le champ "recherche".

http://robloche.free.fr/javascript/ajax ... /test.html

En tout cas, moi j'ai essayé ce code et cela marche bien chez moi! :lol:

Posté : 10 août 2006, 08:27
par laplumaencre
Salut !!
Merci pour vos réponse, mais la solution de charger les ref ds javascript, j'ai dfes milliers de ref, donc on n'y pense plus :-)
La solution de cari, non c'est pas ça que je veux, je veux envoyer une requete sql qui verifie que la ref taper est correct et renvoie le libelle au passage. Donc la popup est peut etre la solution, mais ça fait une fenetre a fermer pour l'utilisateur....

Posté : 10 août 2006, 08:33
par Tictac
tu peux simplement afficher le message dans un div plutot que de faire un popup ! comme ça , ca reste sur la meme page ;)

Posté : 10 août 2006, 08:46
par laplumaencre
Oui tictac j'y ai bien pensé mais pour activer le php coté serveur , il faut bien charger une page, soit une popup ou la principale et la principale je veux pas .
Voici ce que j'ai fais mais le onchange ne m'envois l'id en post pour activer le php...
<input type="text" id="zone_realisation"  value="Préciser réf. S5"size="15" style="visibility:hidden" onChange="window.open('controle_ref.php','ref','width=500,height=100,scrollbars=no')">
Et sur la page php qui controle la ref.
<html>


<?php
//------------------CONTROLE DE LA REF S5--------------------------
//include ("fichedes.php");
if ($_POST["zone_realisation"]) {
	$ref_base=$_POST["zone_realisation"];
	echo $reff_base;
	$connexion2=mssql_connect("host",".....","...") or die("<p>Echec de connexion!");
	mssql_select_db("base", $connexion2) or die ("<p>Echec de connexion à la base de donnée!");
	if ($connexion2){
		$SQL=mssql_query("SELECT GA_CODEARTICLE, GA_LIBELLE FROM ARTICLE WHERE GA_CODEARTICLE='".$ref_base."'", $connexion2);
			if ($SQL){
				$result=mssql_fetch_array($SQL); 
				$art_ref=$result["GA_ARTICLE"];	
				$art_libelle=$result["GA_LIBELLE"];
				$message="<p>Ref.base : ".$art_ref." correspond à ".$art_libelle."</p>";
				}else {
				$message="<p>Réf saisie inexistante ou érronée...</p>";
				} 
			
	   } 
}
?>
<div><?php echo $message; ?></div>
</html>

Posté : 10 août 2006, 09:05
par Tictac
C'est normale , ta variable ne passe pas en $_POST !

Pour preuve , fais un print_r($_POST) dans ta page 'controle_ref.php !

tu vas devoir la passer en $_GET

je ne suis pas certain de la justesse de mon exemple , mais ca doit etre qqch du genre
<input type="text" name="zone_realisation" id="zone_realisation" value="Préciser réf. S5" size="15" onChange="window.open('controle_ref.php?id='+this.value,'ref','width=500,height=100,scrollbars=no')">

Posté : 10 août 2006, 10:09
par laplumaencre
Salut j'ai essayé ton code
<?php <input type="text" name="zone_realisation" id="zone_realisation" value="Préciser réf. S5" size="15" onChange="window.open('controle_ref.php?id='+this.value,'ref','width=500,height=100,scrollbars=no')
Mon formulaire principal est en $_POST mais j'ai quand meme essayé comme tu dis en GET mais ça genre rien ;-/
La valeur de l'input n'est pas envoyer au php...[/php]

Posté : 10 août 2006, 10:16
par Tictac
je viens de tester ! ca fonctionne

ce que tu veux , c'est bien afficher dans ton popup si la référence donnée est correct ou pas ?

Je récupère bien la reference en $_GET dans la page controle_ref de la manière que je t'ai donné.

Posté : 10 août 2006, 10:35
par laplumaencre
Moi j'ai bien la popup mais tte blanche meme pas de message d'erreur..

mon input :
<input type="text" id="zone_realisation"  value="Préciser réf. S5" size="15" style="visibility:hidden" onChange="window.open('controle_ref.php?id='+this.value,'ref','width=500,height=100,scrollbars=no')">


fichier php :
<?php
//------------------CONTROLE DE LA REF S5--------------------------
		 
if ($_GET["zone_realisation"]) {
	$ref_base=$_GET["zone_realisation"];
	echo $ref_base;
	$connexion2=mssql_connect("","","") or die("<p>Echec de connexion!");
	mssql_select_db("DB", $connexion2) or die ("<p>Echec de connexion à la base de donnée!");
	if ($connexion2){
		$SQL=mssql_query("SELECT GA_CODEARTICLE, GA_LIBELLE FROM ARTICLE WHERE GA_CODEARTICLE='".$ref_base."'", $connexion2);
			if ($SQL){
				$result=mssql_fetch_array($SQL); 
				$art_ref=$result["GA_ARTICLE"];	
				$art_libelle=$result["GA_LIBELLE"];
				echo "<p>Ref.base : ".$art_ref." correspond à ".$art_libelle."</p>";
			} else {
				echo "<p>Réf saisie inexistante ou érronée...</p>";
			} 
	} 
}
?>

Posté : 10 août 2006, 10:41
par Tictac
tu travailles bien avec un serveur MS SQL server ?

dans ton input ajoute name="zone_realisation" sinon , c'est normale ! c'est ce parametre qui nomme ta variable ;) et non pas id

Posté : 10 août 2006, 10:43
par cari
ben moi j'ai adapté ce code, de sorte que selon mes recherches, la personnes puisses entrer soit
-une référence qui commence par "9" par exemple et je lui donne une liste de tous les libellés dont les références comment par "9"
-un libellé qui commence par "l" par exemple je lui donne une liste de toutes les références dont les libellés comment par "l"

l'avantage, c'est que ta page n'est pas rechargée!!! :wink:

Posté : 10 août 2006, 10:55
par laplumaencre
Cari comment t'as fais ça? avec mon code?? en ajax??

Bon Tictac oui cette requete ce fait sur un serveur MS SQL SERVER et les autres du site sont sur un serveur mysql, pour le input id et name il me semble que c'est pareil mais au cas ou, je l'ai changé en name et ça marche tjs pas j'ai tjs ma popup tte blanche ;-/ SOS...

Posté : 10 août 2006, 11:02
par Tictac
essaye comme ça pour voir ! s'il ya bien une valeur
<?php
//------------------CONTROLE DE LA REF S5--------------------------
echo "Voici la référence:" .$_GET["zone_realisation"] ;

if ($_GET["zone_realisation"]) {
$ref_base=$_GET["zone_realisation"];
echo $ref_base;