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

Eléphant du PHP | 183 Messages

09 août 2006, 16:12

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

Eléphanteau du PHP | 27 Messages

09 août 2006, 17:05

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

Eléphanteau du PHP | 27 Messages

09 août 2006, 17:08

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

Eléphant du PHP | 99 Messages

09 août 2006, 17:59

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:

Eléphant du PHP | 183 Messages

10 août 2006, 08:27

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....

Eléphant du PHP | 353 Messages

10 août 2006, 08:33

tu peux simplement afficher le message dans un div plutot que de faire un popup ! comme ça , ca reste sur la meme page ;)

Eléphant du PHP | 183 Messages

10 août 2006, 08:46

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>

Eléphant du PHP | 353 Messages

10 août 2006, 09:05

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')">

Eléphant du PHP | 183 Messages

10 août 2006, 10:09

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]

Eléphant du PHP | 353 Messages

10 août 2006, 10:16

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é.

Eléphant du PHP | 183 Messages

10 août 2006, 10:35

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>";
			} 
	} 
}
?>

Eléphant du PHP | 353 Messages

10 août 2006, 10:41

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

Eléphant du PHP | 99 Messages

10 août 2006, 10:43

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:

Eléphant du PHP | 183 Messages

10 août 2006, 10:55

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...

Eléphant du PHP | 353 Messages

10 août 2006, 11:02

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;