Controle valeur select js avec valeur php

Résolu
bubbledesavon Messages postés 66 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 6 mars 2015 - 8 mars 2011 à 08:47
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

5 réponses

007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
9 mars 2011 à 01:23
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
3
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
8 mars 2011 à 11:43
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...
0
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
8 mars 2011 à 11:47
Toutes mes excuses. Il y a un signe = parasite après le new Array() dans le code javascript !
0
bubbledesavon Messages postés 66 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 6 mars 2015
8 mars 2011 à 23:50
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
merci beaucoup ,
cela fonctionne tres bien,
je te remercie, j'essai actuellement de faire un popin comme dans l'exemple.

merci
0
Rejoignez-nous