Affectation d'un variable javascript a un vri

Résolu/Fermé
InchRay Messages postés 58 Date d'inscription vendredi 26 août 2011 Statut Membre Dernière intervention 17 février 2014 - 20 juin 2012 à 12:30
InchRay Messages postés 58 Date d'inscription vendredi 26 août 2011 Statut Membre Dernière intervention 17 février 2014 - 21 juin 2012 à 15:26
Bonjour,
j'utilise actuellement un bibliotheque jquery jqwidgets. Celui ci permet nottament de faire un combobox(liste deroulante) a partir de données mysql.J'aimerai bien savoir comment recuperer l'element selectionné dans ce combobox et l'affecter dans un variable php pour une utilisation plus tard.


12 réponses

Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 209
20 juin 2012 à 13:28
Bonjour,
Tu ne confondrais pas
- traitement cote serveur (php)
- et presentation de données CotéClient (balise Html)

Quoiqu il en soit, ton combobox fesant parti d un formululaire (balise <form>), lorsque tu valides ce formualire (evenement onsubmit="self") tu apelles une page Php ...

Tu a joutes un traitement sur les variables $_GET ou $_POST ....

if (sizeof($_GET)>0){
if (isset($_GET['Ok'])) echo "ma valeur est ".$_GET['Ok'];
}
0
InchRay Messages postés 58 Date d'inscription vendredi 26 août 2011 Statut Membre Dernière intervention 17 février 2014 2
20 juin 2012 à 15:36
C'est la mon probleme, je t'explique:
il y a un fichier nommer data.php qui fait la requete vers la base de données . Voici le code:
<?php
#Include the connect.php file
include('connect.php');
#Connect to the database
//connection String
$connect = mysql_connect($hostname, $username, $password)
or die('Could not connect: ' . mysql_error());
//select database
mysql_select_db($database, $connect);
//Select The database
$bool = mysql_select_db($database, $connect);
if ($bool === False){
	print "can't find $database";
}
// get data and store in a json array
$query = "SELECT * FROM customers";
$from = 0; 
$to = 30;
$query .= " LIMIT ".$from.",".$to;

$result = mysql_query($query) or die("SQL Error 1: " . mysql_error());
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
	$customers[] = array(
        'CompanyName' => $row['CompanyName'],
        'ContactName' => $row['ContactName'],
	'ContactTitle' => $row['ContactTitle'],
	'Address' => $row['Address'],
	'City' => $row['City']
      );
}

echo json_encode($customers);
?>


puis on l'utilise a partir d'un fichier index.php comme suit:
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="../../jqwidgets/styles/jqx.base.css" type="text/css" />
<link rel="stylesheet" href="../../jqwidgets/styles/jqx.energyblue.css" type="text/css" />
<script type="text/javascript" src="../../scripts/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxcore.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxbuttons.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxscrollbar.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxdata.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxlistbox.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxcombobox.js"></script>
<script type="text/javascript">
$(document).ready(function () {
// prepare the data
var source =
{
datatype: "json",
datafields: [
{ name: 'CompanyName'},
{ name: 'ContactName'},
{ name: 'ContactTitle'},
{ name: 'Address'},
{ name: 'City'},
],
url: 'data.php'
};

var dataAdapter = new $.jqx.dataAdapter(source);

$("#jqxcombobox").jqxComboBox(
{
source: dataAdapter,
theme: 'energyblue',
width: 200,
height: 25,
selectedIndex: 0,
displayMember: 'CompanyName',
valueMember: 'ContactName'
});
});
</script>
</head>
<body class='default'>
<div id="jqxcombobox"></div>
</body>
</html>


Bref, le combo box fonctionne bien mais je sais pas maintenant comment recuperer les valeurs selectionner de la liste deroulante. Voici le lien dont j'ai trouver ce tutoriel:https://www.jqwidgets.com/jquery-widgets-documentation/documentation/phpintegration/bind-jquery-combobox-to-mysql-database-using-php.htm
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
20 juin 2012 à 18:43
provisoirement mets une trace de ce que tu reçoit en créant un petit formulaire dans ta page index.php
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="../../jqwidgets/styles/jqx.base.css" type="text/css" />
<link rel="stylesheet" href="../../jqwidgets/styles/jqx.energyblue.css" type="text/css" />
<script type="text/javascript" src="../../scripts/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxcore.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxbuttons.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxscrollbar.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxdata.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxlistbox.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxcombobox.js"></script>
<script type="text/javascript">
$(document).ready(function () {
// prepare the data
var source =
{
datatype: "json",
datafields: [
{ name: 'CompanyName'},
{ name: 'ContactName'},
{ name: 'ContactTitle'},
{ name: 'Address'},
{ name: 'City'},
],
url: 'data.php'
};

var dataAdapter = new $.jqx.dataAdapter(source);

$("#jqxcombobox").jqxComboBox(
{
source: dataAdapter,
theme: 'energyblue',
width: 200,
height: 25,
selectedIndex: 0,
displayMember: 'CompanyName',
valueMember: 'ContactName'
});
});
</script>
</head>
<body class='default'>
<?php
if(isset($_POST['envoyer'])){
	echo 'Valeurs recues dans le POST: <pre>';
	print_r($_POST); //la tu verra le name de ta liste
	echo '</pre>';

}

?>
<form name="form1" method="post" action="">
<div id="jqxcombobox"></div>
<input type="submit" name="envoyer" value="Envoyer" />
</form>
</body>
</html> 
:
0
InchRay Messages postés 58 Date d'inscription vendredi 26 août 2011 Statut Membre Dernière intervention 17 février 2014 2
21 juin 2012 à 09:06
bojour, ca me donne ca lorsque je clique sur le bouton:

Valeurs recues dans le POST:

Array
(
    [envoyer] => Envoyer
)

Est ce que ca veut dire que j'ai recuperer la variable selectionner ou pas?? Est ce que ce ne doit pas etre la valeur selectionner qui sera afficher??
0

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

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 juin 2012 à 11:55
je viens de tester ce script sur mon serveur wamp, même problème, je ne comprend pas comment est créee cette liste par JQ

quel name=

essayes peut être de poser la question sur le forum de JQuery ?
0
InchRay Messages postés 58 Date d'inscription vendredi 26 août 2011 Statut Membre Dernière intervention 17 février 2014 2
21 juin 2012 à 12:19
daccord;
moi je pense que c'est $("#jqxcombobox").jqxComboBox qui creer le combo box et dans l'api il est dit que pour recuperer l'element selectionner si j'ai bien compris est: $("#jqxComboBox").jqxComboBox('getSelectedItem');
mais je sais plus comment affecter ce valeur recuperer vers un variable de php
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 juin 2012 à 13:05
$("#jqxComboBox").jqxComboBox('getSelectedItem'); renvoie null
0
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
21 juin 2012 à 13:11
je crois que le seul moyen de passer les paramètres du javascript vers le php, c'est par les $_GET et $_POST (vu que le php est executé coté serveur, il faut bien que les variables javascript soit envoyé au serveur pour que ça marche.


au faite, j'ai remarqué que tu faisait un include('connect.php'); et qu'ensuite tu te connectais à la base de données. tu n'aurais pas fait une double connexion par hasard ?
0
InchRay Messages postés 58 Date d'inscription vendredi 26 août 2011 Statut Membre Dernière intervention 17 février 2014 2
21 juin 2012 à 14:37
le fichier connect.php permet seulement d'enumerer le host, user et password, il n'y a pas de double connection.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 juin 2012 à 13:25
j'ai remarqué que tu faisait un include('connect.php'); et qu'ensuite tu te connectais à la base de données. tu n'aurais pas fait une double connexion par hasard ?
Non car connect.php ne contient que les codes de la BDD, pas d'instructions de connexion.

je crois que le seul moyen de passer les paramètres du javascript vers le php, c'est par les $_GET et $_POST

oui ça on sait ok mais comment, car apparemment lors de la génération de la liste par JQuery on n'a pas les arguments habituels du HTML notamment le name= dans la balise <select

le print_r ($_POST) nous dit qu'il n'y a que le bouton qui est posté ??
0
Il va falloir créer un champ type='hidden' pour transporter la valeur dans le <form/> (l'API ne semble pas le supporter par défaut ... ).

Ajout de JS :
$('#jqxcombobox').bind('select', function (event) {
var args = event.args;
var item = $('#jqxcombobox').jqxComboBox('getItem', args.index);
$('#jqxComboBox_input').value = item;
// $('#jqxComboBox_input').value = args.index;
});

Ajout dans le <form>
<input type="hidden" id="jqxComboBox_input" name="jqxComboBox_input" />
0
InchRay Messages postés 58 Date d'inscription vendredi 26 août 2011 Statut Membre Dernière intervention 17 février 2014 2
21 juin 2012 à 14:47
J'ai fait le meme type hidden mais comme suit:
$("#jqxcombobox").bind('select', function (event) {
if (event.args) {
var item = event.args.item;
if (item) {
var valueelement = item.value;

$("#selectionlog").children().remove();

$("#selectionlog").append('<input type="hidden" name="selection">'+valueelement+'</input>');
}// #selectionlog est le div contenant le resultat
}


puis dans le body:

<body class='default'>
<?php
if(isset($_POST['selection'])){
echo 'Valeurs recues dans le POST: <pre>';
echo $_POST['selection'];
echo '</pre>';
};
?>

Resultat: la valeur selectionnée est bien inseré dans l'input.
0
C'est donc résolu ? :)
0
InchRay Messages postés 58 Date d'inscription vendredi 26 août 2011 Statut Membre Dernière intervention 17 février 2014 2
21 juin 2012 à 15:26
on peut dire ca; :) merci
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 juin 2012 à 14:38
C'était mon idée aussi de passer par un champ caché, mais impossible de récupérer l'item sélectionné même avec la partie de code event que tu as donné

on a toujours:
Valeurs recues dans le POST:

Array
(
[jqxComboBox_input] =>
[envoyer] => Envoyer
)



j'ai l'impression de l'event n'est pas "capté"
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 juin 2012 à 15:02
bizarre chez moi ça ne marche pas, même avec le code de InchRay

je l'ai pourtant bien mis dans la partie $(document).ready(function () {

tant mieux si tu t'en est sorti

au passage qui peut me dire l'intéret de jqxcombox sachant que l'on peut faire une liste déroulante directement avec du php et une BDD, ou même en Ajax
et un peu de CSS pour la rendre plus jolie
0
InchRay Messages postés 58 Date d'inscription vendredi 26 août 2011 Statut Membre Dernière intervention 17 février 2014 2
21 juin 2012 à 15:23
Si tu a bien visiter le site que j'ai referencer en haut, c'est deja un plugin complet avec differents theme css, l'avantage est donc de reduire le temps de developpement, et aussitu peut voir qu'on peut utiliser aussi ajax pour completer le combobox donc c'est encore mieux. :)
0
InchRay Messages postés 58 Date d'inscription vendredi 26 août 2011 Statut Membre Dernière intervention 17 février 2014 2
21 juin 2012 à 15:25
Pour ton pbm verifier bien si le name dans le input est egale a celui du$-POST dans le PHP
0