IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Prendre la valeur d'une balise select et la tester avec le resultat d'une requete pour charger un autre select [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de luthor_06
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 30
    Par défaut Prendre la valeur d'une balise select et la tester avec le resultat d'une requete pour charger un autre select
    Bsr a tous!
    Ca fait quelques jours que je m'entraine sur ce bout de code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
     
    mysql_select_db($database_projectConnect, $projectConnect);
    $query_sql = "SELECT IDEmp, CONCAT(firstname, lastname) AS name FROM employees ORDER BY IDEmp ASC";
    $sql = mysql_query($query_sql, $projectConnect) or die(mysql_error());
    $row_sql = mysql_fetch_assoc($sql);
    $totalRows_sql = mysql_num_rows($sql);
     
     
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    <meta name="robots" content="none">
    <link rel="stylesheet" href="css/style.css" type="text/css" />
    </head>
     
    <body>
    <p>&nbsp;</p>
    <form method="POST" action="register.php">
    <table align="center" class="table" border="0">
    <tr>
    <td>
    <table>
    <tr>
    	<td><label for="emp">EMPLOYEE</label></td>
    	<td><select name="emp" id="emp" >
    	  <option value=""></option>
    	  <?php
    do {  
    ?>
    	  <option value="<?php echo $row_sql['IDEmp']?>"><?php echo $row_sql['name']?></option>
    	  <?php
    } while ($row_sql = mysql_fetch_assoc($sql));
      $rows = mysql_num_rows($sql);
      if($rows > 0) {
          mysql_data_seek($sql, 0);
    	  $row_sql = mysql_fetch_assoc($sql);
      }
    ?>
        </select></td>
    </tr>
    <tr>
    	<td><label for="title">TITLE</label></td>
    	<td><select name="title" id="title" >
    	  <option value=""></option>
    	  <?php
    	  if ( $row_sql['emp'] != "") {
    mysql_select_db($database_projectConnect, $projectConnect);
    $query_sql1 = "SELECT IDnot, title FROM notifs WHERE notifs.IDemp1=".$row_sql['emp'];
    $sql1 = mysql_query($query_sql1, $projectConnect) or die(mysql_error());
    $row_sql1 = mysql_fetch_assoc($sql1);
    $totalRows_sql1 = mysql_num_rows($sql1);
    do {  
    ?>
    	  <option value="<?php echo $row_sql1['IDnot']?>"><?php echo $row_sql1['title']?></option>
    	  <?php
    } while ($row_sql1 = mysql_fetch_assoc($sql1));
      $rows = mysql_num_rows($sql1);
      if($rows > 0) {
          mysql_data_seek($sql1, 0);
    	  $row_sql1 = mysql_fetch_assoc($sql1);
      }
    	  }
    ?>
        </select></td>
    </tr>
    <tr>
    	<td><label for="mot">TEXT</label></td>
    	<td><textarea name="motive" id="mot" cols="38" rows="10" readonly ></textarea></td>
    </tr>
    </table>
    </td>
    <td>
    <table>
    <tr>
    	<td><label for="mot">RESPONSE</label></td>
    	<td><textarea name="motive" id="mot" cols="38" rows="10">Type Your Text </textarea></td>
    </tr>
    </table>
    </td>
    </tr>
    </table>
    <table align="center">
    <tr>
    <td width="50%"></td>
    <td align="center" ><input id="input-btn" name="save" type="submit" value="save" onClick="ask();"/></td>
    </tr>
    </table>
    </FORM>
    </body>
    </html>
    <?php
    mysql_free_result($sql);
     
    mysql_free_result($sql1);
    ?>
    En fait je voudrai afficher dans le <select> TITLE uniquement les titres de toutes les notifications qui ont ete envoye a l'employe X choisi dans le <select> EMPLOYEES. J'y arrive pas et j'ai besoin d'aide svp.
    Merci!

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    La première chose à faire serait de présenter ton code proprement avec une belle identation.
    La deuxième, abandonner l'extension mysql qui est obsolète pour passer à PDO.
    En même temps, revoir ton code pour remettre de la logique.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $row_sql = mysql_fetch_assoc($sql);
    do {  
    ?>
    	  <option value="<?php echo $row_sql['IDEmp']?>"><?php echo $row_sql['name']?></option>
    	  <?php
    } while ($row_sql = mysql_fetch_assoc($sql));
    devient simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while ($row_sql = mysql_fetch_assoc($sql)) {
              ?>
    	  <option value="<?php echo $row_sql['IDEmp']?>"><?php echo $row_sql['name']?></option>
    	  <?php
    }
    Un exemple de liste liées en utilisant Ajax :
    http://siddh.developpez.com/articles/ajax/

    Si tu ne veux pas utiliser Ajax, il faut faire ton formulaire en plusieurs temps :
    1 - premier <select> seul
    2 - soumission du formulaire
    3 - création du deuxième <select> à partir de la valeur envoyée en 2.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti Avatar de luthor_06
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 30
    Par défaut
    Merci pour les conseils. Je vais essaye

  4. #4
    Membre averti Avatar de luthor_06
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 30
    Par défaut
    Voici la nouvelle version

    response.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
    include("includes/identifiants.php");
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    <meta name="robots" content="none">
    <link rel="stylesheet" href="css/style.css" type="text/css" />
    <script type="text/javascript" src="js/inputTest.js"></script> 
    <script type="text/javascript" src="js/liste.js"></script> 
    </head>
     
    <body>
    <p>&nbsp;</p>
    <?php
    if (empty($_POST['title'])){
    ?>
    <form >
    <table align="center" class="table" border="0">
    <tr>
    <td>
    <table>
    <tr>
    	<td><label for="emp">EMPLOYEE</label></td>
    	<td><select name="emp" id="emp" onchange="return go()">
    	  <option value="">NONE</option>
    <?php
    //Chargement des employes
    $query=$db->query('SELECT IDEmp, names FROM employees') or die(print_r($db->errorInfo()));;
    while ( $donnees=$query->fetch()){
    	?>
    	  <option value="<?php echo $donnees["IDEmp"]; ?>"><?php echo $donnees["names"]; ?></option>
    <?php
    }
    $query->CloseCursor();
    ?>
        </select></td>
    </tr>
    <tr>
    	<td><label for="title">TITLE</label></td>
    	<td>
        <select name="title" id="title" >
    	  <option value="-1">Choose an Employee</option>
        </select></td>
    </tr>
    <tr>
    	<td><label for="motive">TEXT</label></td>
    	<td><textarea name="motive" id="motive" cols="38" rows="10" readonly ></textarea></td>
    </tr>
    </table>
    </td>
    <td>
    <table>
    <tr>
    	<td><label for="resp">RESPONSE</label></td>
    	<td><textarea name="resp" id="resp" cols="38" rows="10">Type Your Text </textarea></td>
    </tr>
    </table>
    </td>
    </tr>
    </table>
    <table align="center">
    <tr>
    <td width="50%"></td>
    <td align="center" ><input id="input-btn" name="save" type="submit" value="save" onClick="ask();"/></td>
    </tr>
    </table>
    </FORM>
    <?php
    } else {
    ?>
    <?php
    //récupération des valeurs des champs:
      $temps = time();
      $IDemp1  = $_POST['emp'] ;
      $response = $_POST["resp"] ;
     
      echo'Enregistrement de la reponse a'.stripslashes(htmlspecialchars($_POST['title'])).' termine <br/>
      Cliquez pour <a href="./response.php">revenir</a></p>';
        //Chargement des donnees
      $query=$db->prepare('UPDATE notifs SET resp=:response, DateResponse=:temps WHERE IDnot='.$_POST["IDnot"]);
        $query->bindValue(':resp', $response, PDO::PARAM_STR);
        $query->bindValue(':DateResponse', $temps, PDO::PARAM_STR);
        $query->execute();
    	$query->CloseCursor();
    }
    ?>
    </body>
    </html>
    liste.js

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    // JavaScript Document
    function getXhr(){
    var xhr = null;
    if(window.XMLHttpRequest) // Firefox et autres
       xhr = new XMLHttpRequest();
    else if(window.ActiveXObject){ // Internet Explorer
    		try {   
    			xhr = new ActiveXObject("Msxml2.XMLHTTP");
    		} catch (e) {
            	xhr = new ActiveXObject("Microsoft.XMLHTTP");
    		}
    	} else { // XMLHttpRequest non supporté par le navigateur
    		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
           	xhr = false;
    }
    return xhr;
    }
    /**
    * Méthode qui sera appelée sur le click du bouton
    */
    function go(){
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
    // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    if(xhr.readyState == 4 && xhr.status == 200){
          leselect = xhr.responseText;
    // On se sert de innerHTML pour rajouter les options a la liste
    document.getElementById('title').innerHTML = leselect;
    }
    }
    // Ici on va voir comment faire du post
        xhr.open("POST","ajaxTitle.php",true);
    	// ne pas oublier ça pour le post
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
    // ici, l'id de l'auteur
        sel = document.getElementById('emp');
        IDemp = sel.options[sel.selectedIndex].value;
        xhr.send("IDemp1="+IDemp);
    }
    ajaxTitle.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    echo "<select name='title'>";
    if(isset($_POST["IDEmp"])){
    	$query=$db->query("SELECT IDnot, title FROM notifs WHERE IDemp1=".$_POST["IDemp1"]." ORDER BY title") or die(print_r($db->errorInfo()));;
    while ( $donnees=$query->fetch()){
    echo "<option value='".$donnees["IDnot"]."'>".$donnees["title"]."</option>";
    }
    $query->CloseCursor();
    }
    echo "</select>";
    ?>
    Les tables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    --
    -- Table structure for table `employees`
    --
     
    CREATE TABLE IF NOT EXISTS `employees` (
      `IDEmp` int(11) NOT NULL AUTO_INCREMENT,
      `names` varchar(50) NOT NULL,
      `statut` varchar(10) NOT NULL,
      `service` varchar(50) NOT NULL,
      `admin` varchar(5) DEFAULT NULL,
      PRIMARY KEY (`IDEmp`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ;
     
    --
    -- Table structure for table `notifs`
    --
     
    CREATE TABLE IF NOT EXISTS `notifs` (
      `IDnot` int(11) NOT NULL AUTO_INCREMENT,
      `IDemp1` int(11) NOT NULL,
      `title` varchar(50) NOT NULL,
      `priority` int(11) NOT NULL,
      `color` int(11) NOT NULL,
      `note` varchar(500) NOT NULL,
      `resp` varchar(500) NOT NULL,
      `DateCreation` datetime NOT NULL,
      `DateResponse` datetime NOT NULL,
      PRIMARY KEY (`IDnot`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
    Le premier select marche bien mais le deuxieme ne charge pas les titres.
    J'arrive pas a trouve le probleme. Besoin d'aide
    Et merci pour le conseil Sabotage ca fais tres longtemps que j'ai plus programme en php et vraiment le PDO est bcp plus dynamique.
    J'ai refais toute mes fenetres en PDO

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu as bien mis la connexion à la base de données dans ajaxTitle ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre averti Avatar de luthor_06
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 30
    Par défaut
    Ollaa oui jsuis bete! j'y avait mem pas pense.
    Ok je regarde ca

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.6] Problème avec le nom d'une balise select
    Par devalender dans le forum Langage
    Réponses: 6
    Dernier message: 07/03/2016, 10h46
  2. Souci avec le setInterval sur une balise <button>
    Par jep33 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 28/09/2009, 13h50
  3. Réponses: 1
    Dernier message: 05/10/2008, 22h05
  4. Réponses: 25
    Dernier message: 10/12/2007, 19h28
  5. Valoriser un tableau avec le resultat d'une liste multiple
    Par christophe_j dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/11/2005, 11h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo