Bonjour à tous,
je suis en train de réaliser un formulaire qui contient 2 listes déroulantes dont la première est liée à la 2ème liste, j'ai remarqué que les données de la première liste (joursemaine) s'affiche sous forme de point d'intérrogation mais étant à peine débutante dans ce cas j'ai pas compris qu'est ce que cela veut dire, je vais posté une imprime écran de mon formulaire pour mieux clarifier
ci-dessous est le code source que j'ai utilisé
le script update.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
|
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link href="css/bootstrap.min.css" rel="stylesheet">
<script src="js/bootstrap.min.js"></script>
<meta name="Description" content="Exemple d'une liste liée en AJAX." />
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript" src="fonctions.js"></script>
</head>
<body>
<div class="container">
<div class="span10 offset1">
<form class="form-horizontal" action="updateChauf.php?id=<?php echo $id?>" method="post">
<div class="control-group
<label class="control-label"> identifiant</label>
<div class="controls">
<input readonly name="id_personnel" type="text" placeholder= " identifiant " value="<?php echo !empty($id)?$id:'';?>">
</div>
</div>
<!--service-->
<div class="control-group
<label class="control-label"> service</label>
<div >
<?php
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT servicelog FROM servicelog ORDER BY id DESC";
$q = $pdo->prepare($sql);
$q->execute();
$data = $q->fetchAll(PDO::FETCH_ASSOC);
Database::disconnect();
?>
<select size=1 name="service" id="service">
<option value="-1">--service--</option>
<?php foreach($data as $value): ?>
<option value="<?php echo $value['servicelog'] ?>"> <?php echo $value['servicelog'] ?></option>
<?php endforeach; ?>
</select>
</div>
</div>
<!--service-->
<!--joursemaine-->
<label> joursemaine: </label>
<select name="joursemaine" id="joursemaine" onchange="Departements(this.value);">
<option value="vide">- - -joursemaine - - -</option>
<?php
//Variable de connexions BDD
$nom_du_serveur ="localhost";
$nom_de_la_base ="ges_tache";
$nom_utilisateur ="root";
$passe ="";
//Connexion à la base de données
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
//Vérification d'accès à la base de données
mysql_select_db("$nom_de_la_base") or die ('Erreur :'.mysql_error());
//On sélectionne toutes les régions
$selectregion = mysql_query("SELECT id_joursemaine,joursemaine FROM joursemaine ORDER BY joursemaine") or die (mysql_error());
while($donnees = mysql_fetch_array($selectregion))
{
echo '<option value="'.$donnees['id_joursemaine'].'"';
if(isset($_POST["joursemaine"]) && $_POST["joursemaine"]==$donnees['id_joursemaine']){echo " selected";}
echo '>'.$donnees['joursemaine'].'</option>';
}
?>
</select><br/>
<!--joursemaine-->
<!-- Dans ce bloc sera affiché la liste des scores -->
<div id="blocDepartements">
<?php
/*Pour garder la sélection de la seconde liste, on l'inclue directement dans la page lors de la validation du formulaire*/
if(isset($_POST['joursemaine'])){
//on créer une variable utilisé dans la page "traitement.php"
$include = 1;
//on inclue la page
include('traitement.php');
}
?>
</div>
<!-- Fin du bloc des scores -->
<div class="form-actions">
<button type="submit" class="btn btn-success">تعيين</button>
<a class="btn" href="chaufAffect.php">رجوع</a>
</div>
</form> |
le script fonctions.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| //Fonction d'Instance
function objet_XMLHttpRequest()
{
var xhr = null;
if (window.XMLHttpRequest || window.ActiveXObject){
if(window.ActiveXObject){
try{
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e){
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else{
xhr = new XMLHttpRequest();
}
}
else{
alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
return null;
}
return xhr;
}
//Fonction permettant d'envoyer les données
function Departements(id)
{
//On déclare un objet
var objet1 = objet_XMLHttpRequest();
//On défini ce qu'on va faire quand on aura la réponse
objet1.onreadystatechange = function(){
//On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(objet1.readyState == 4 && objet1.status == 200){
//On envoie la réponse dans le div "blocDepartements"
document.getElementById('blocDepartements').innerHTML = objet1.responseText;
}
//côté ajax ça merde
else{
//on contrôle le statut. Si 404, le fichier ouvert par "open" n'existe pas
if(objet1.status == 404){
alert('Erreur ' +objet1.status + '! Le fichier php semble être absent...');
}
}
}
//Ouverture : méthode, fichier, mode (true=asynchrone | false=synchrone)
objet1.open("POST", "traitement.php" , true);
objet1.setRequestHeader("Content-type","application/x-www-form-urlencoded");
//envoie
objet1.send("joursemaine=" + id);
} |
le script traitement.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| <?php
//Numéro de la région
if(isset($_POST["joursemaine"]) && $_POST["joursemaine"] != 'vide'){
/*Si la variable $include n'existe pas c'est que le numéro de la région passe par AJAX. On a donc besoin d'avoir une connexion avec la base de données.*/
/*Quand on poste le formulaire, cette page est inclue directement dans le div "blocDepartements", donc la connexion est inutile.*/
/*Si on inlcue cette page au moment de la validation, c'est uniquement pour garder la sélection "selected" de la liste.*/
if(!isset($include)){
//On indique le Content-Type utilisé
header('Content-Type: text/html; charset="iso-8859-1"');
//Variable de connexion BDD
$nom_du_serveur ="localhost";
$nom_de_la_base ="ges_tache";
$nom_utilisateur ="root";
$passe ="";
//Connexion à la base de données
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
//Vérification d'accès à la base de données
mysql_select_db("$nom_de_la_base") or die ('Erreur :'.mysql_error());
echo '<div id="reponse">La variable $_POST["joursemaine"] provient d\'AJAX.</div>';
}
else{
echo '<div id="reponse">La variable $_POST["joursemaine"] provient de l\'include.</div>';
}
?>
<label>score : </label>
<select name="score" id="score">
<option value="vide">- - - score- - -</option>
<?php
//On sélectionne les score en fonction du numéro de la journée choisi
$selectdepartement = mysql_query("SELECT score FROM scorejour WHERE id_joursemaine=".mysql_real_escape_string($_POST["joursemaine"])." ORDER BY score") or die (mysql_error());
//On boucle
while($donnees = mysql_fetch_assoc($selectdepartement))
{
echo '<option value="'.$donnees['id_score'].'"';
if(isset($_POST["score"]) && $_POST["score"]==$donnees['id_score']){ echo " selected"; }
echo '>'.$donnees['score'].'</option>';
}
?>
</select><br/>
<?php } ?> |
J'éspère que quelqu'un peut m'aider, merci d'avance
Partager