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

Messages postés
66
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
6 mars 2015
- - Dernière réponse : bubbledesavon
Messages postés
66
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
6 mars 2015
- 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 

5 réponses

Meilleure réponse
Messages postés
279
Date d'inscription
mercredi 22 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2014
2
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 127 internautes nous ont dit merci ce mois-ci

Commenter la réponse de 007Julien
Messages postés
279
Date d'inscription
mercredi 22 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2014
2
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
Messages postés
279
Date d'inscription
mercredi 22 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2014
2
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
Messages postés
66
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
6 mars 2015
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
Messages postés
66
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
6 mars 2015
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