Controle valeur select js avec valeur php [Résolu]

bubbledesavon 66 Messages postés samedi 21 février 2004Date d'inscription 6 mars 2015 Dernière intervention - 8 mars 2011 à 08:47 - Dernière réponse : bubbledesavon 66 Messages postés samedi 21 février 2004Date d'inscription 6 mars 2015 Dernière intervention
- 10 mars 2011 à 12:36
Bonjour ,
Je possede un select qui se remplit avec une requete sql ( select "boissons"), j aimerais lors d une selection (onchange) que la valeur selectionnée envoie une requete sql qui controle si les boissons sont en commande,je crois savoir que ce nest pas possible js et php ne sont pas les meme languages.
Donc je pense charger dans un tableau php invisible sur la page toutes les boissons en commande puis de recuperer la valeur du select et de la comparer au tableau php en javascript .
Exemple:les bieres sont en stock et le wisky en commande.
Je choisi dans la liste deroulante biere, rien ne se passe je continue, je choisi wisky et la une alerte me dit attention wisky intel en commande ( avec lien vers la fiche du wisky en question)
J espere etre avoir ete clair dans mes expliquations et attends avec impatience vos aides
Merci d avance
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
007Julien 279 Messages postés mercredi 22 septembre 2010Date d'inscription 8 janvier 2014 Dernière intervention - 9 mars 2011 à 01:23
3
Merci
Il conviendrait d'abord de disposer d'un identifiant ou d'un champs commun aux deux tables pour pouvoir faire le raccord entre les deux requêtes (je suppose dans la suite que ces deux tables partagent le champ boisson bien que l'identifiant idboisson paraisse a priori mieux approprié).

Ensuite, plutôt que toutes ces imbrications multiples de php et d'HTML, je travaillerais d'abord en PHP pour construire des chaînes à inclure dans le HTML.

Je ferais alors la requête sur les boissons en commande pour définir un tableau associatif de celles-ci (la valeur affectée aux boissons en commande, ici 1, est indifférente seule son existence importe).
$bsnCmd=array();
while($sqlencours=mysql_fetch_array($reqencours)){
  $bsnCmd[$sqlencours['boisson']]=1;}

Puis construirais le select après requête sur les boissons du bar en renseignant la value à 1 pour les boissons disponibles et 2 pour celles en commande.
$chnSlc='<select name="boisson" size="1" id="chxBsn" onchange="vogueLaGalere()">';
while($sql = mysql_fetch_array($req)){
   if (!isset($bsnCmd[$sql['boisson']])) $chnSlc.='<option  value="1">'.$sql['boisson'].'</option>';
   else $chnSlc.='<option  value="2">'.$sql['boisson'].'</option>';
}
$chnSlc.='</select>';


Maintenant indépendamment de l'insertion du select dans la page avec un <?php echo $chnSlc ?>, il ne reste plus qu'à prévoir un peu de javascript...

function vogueLaGalere(){
   var o=document.getElementById('chxBsn'),s=o.value,n=o.options[o.selectedIndex].text;
   // Le plus simple à titre de vérification  
   if (s==2) alert ("Boisson "+n+" en commande");
   // Avec un container initialement vide repéré par son id (rsp)
   document.getElementById('rsp').innerHTML="Nous sommes vraiment désolé, mais devant le succès de cette boisson nous venons précisément de passer une commande ... etc.

";}

Pour un éventuel lien il conviendrait que le nom de la fiche correspondante soit construit sur le nom de la boisson.
L'utilisation de jQuery pourrait permettre des présentations variées telle que celle de l'exemple 5 au bas de cette page démonstration

Merci 007Julien 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 119 internautes ce mois-ci

Commenter la réponse de 007Julien
007Julien 279 Messages postés mercredi 22 septembre 2010Date d'inscription 8 janvier 2014 Dernière intervention - 8 mars 2011 à 11:43
0
Merci
Plusieurs méthodes sont envisageables, la plus simple consisterait à construire en php, lors de la construction du select, une chaîne des valeurs indexées comme les options du select et décrivant les boissons avec un code préétabli (1: boisson disponible,2: en commande,3: épuisée ... etc.).
$chnTbl='0';// avec un zéro pour la première ligne choix de la commande
// Boucle de construction du select
switch ($etatBoisson) {
case "disponible" :$chnTbl.=',1';break;
case "commande" :$chnTbl.=',2';break;
case "épuisée" :$chnTbl.=',3';break;
// ...
}

Il serait facile ensuite de construire, à partir de cette chaîne, un tableau dans une variable javascript
var tblSlc=new Array=("<?php $tblSlc ?>");

pour ensuite procéder aux test indispensables à partir d'un selectedIndex voir les exemples de code de w3schools.com.

L'on pourrait également se passer du code si le select gardait des dimensions modestes...
Commenter la réponse de 007Julien
007Julien 279 Messages postés mercredi 22 septembre 2010Date d'inscription 8 janvier 2014 Dernière intervention - 8 mars 2011 à 11:47
0
Merci
Toutes mes excuses. Il y a un signe = parasite après le new Array() dans le code javascript !
Commenter la réponse de 007Julien
bubbledesavon 66 Messages postés samedi 21 février 2004Date d'inscription 6 mars 2015 Dernière intervention - 8 mars 2011 à 23:50
0
Merci
merci de ta reponse
voici un peu de code de ma page pour comprendre mon souci.

je charge dans un tableau les boissons en commande <?php include ('connect.php');
$tabencours= array();
$reqencours = mysql_query ('select * from fondstock where encommande="encommande"');
while($sqlencours=mysql_fetch_array($reqencours))
{
array_push($tabencours,$sqlencours['idboisson'].'-'.$sqlencours['boisson'].'-'.$sqlencours['marqueboisson']);
}
mysql_close();
?>
je cree ma liste deroulante <select name ="boisson" size= "1" id="choixboisson" onchange="c'est la que je galere"> <?
echo "<option> - </option>";
include ('connect.php');
$req mysql_query("SELECT boisson FROM bar WHERE categorieboisson 'liqueur' ORDER BY boisson ");
while($sql = mysql_fetch_array($req))
{
je rempli ma liste deroulante avec toutes les boissons du bar echo "<option>".$sql['boisson']."</option>";
}
mysql_close();
?>
</select>
</label>


j'aimerais quand je choisi dans la liste deroulante une boisson qui est dans le tableau des boissons en commande que cela m'affiche une alertbox en me disant attention cette boisson est en commande (avec si possible un lien vers la fiche de la boisson).

merci d'avance pour l'aide
Commenter la réponse de bubbledesavon
bubbledesavon 66 Messages postés samedi 21 février 2004Date d'inscription 6 mars 2015 Dernière intervention - 10 mars 2011 à 12:36
0
Merci
merci beaucoup ,
cela fonctionne tres bien,
je te remercie, j'essai actuellement de faire un popin comme dans l'exemple.

merci
Commenter la réponse de bubbledesavon

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.