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

Langage PHP Discussion :

Combobox + textbox modifier données


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 40
    Points : 29
    Points
    29
    Par défaut Combobox + textbox modifier données
    Bonjour à tous, je vous explique mon petit problème.

    Je souhaite à l'aide d'une textbox saisir le numéro de dossier d'archive et le service dans lequel je souhaite l'affecter à l'aide d'une combobox.
    J'affiche la liste de tout les patients et à l'aide du numéro de dossier d'archive je veux sélectionner le patient et lui modifier son service.
    Par défaut chaque patient est affecté au service 1 donc service des archives.

    Je ne sais pas du tout comment faire, au niveau du code je suis perdu.

    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
    <!DOCTYPE html>
    <html>
    <head>
    	<title>Transferer archives</title>
    	<meta charset="utf-8">
    </head>
    <body>
    	<header>
    		<h1>Transferer un dossier</h1>
    	</header>
    	<?php
    		include "connect_bdd.php";
    		$sql = "SELECT libelleService FROM service";
    		$result = mysqli_query($lienBd, $sql);
    	?>
    		<select name="service">
    			<?php while($row2 = mysqli_fetch_array($result)):;?>
    				<option value="<?php echo $row2[0];?>"><?php echo utf8_decode($row2[0]);?></option>
    			<?php endwhile;?>
    		</select>
    		<br><br>
    	<form method="POST">
    		<input type="text" name="numDossier" placeholder="Numéro de dossier">
    		<input type="submit" value="Transferer"> <br><br><hr><br>
    	</form>
    	<table>
                    <tr>
                        <th>Identifiant</th>
                        <th>Date de naissance</th>
                        <th>Sexe</th>
                        <th>Nom</th>
                        <th>Prénom</th>
                        <th>Numéro d'archive</th>
                    </tr>
                <?php //On affiche les lignes du tableau une à une à l'aide d'une boucle
        			$sql3 = "SELECT * FROM patient;";
    				$exec = mysqli_query($lienBd, $sql3);	
        		// echo "aaaaa";	
                while($donnees = mysqli_fetch_array($exec))
                {
                    echo "<tr>";
                    echo "<td>".$donnees['id']. "</td>";
                    echo "<td>" .$donnees['dateNaissance']. "</td>";
                    echo "<td>" .$donnees['sexe']. "</td>";
                    echo "<td>" .$donnees['nom']. "</td>";
                    echo "<td>" .$donnees['prenom']. "</td>";
                    echo "<td>" .$donnees['idDossierPatient']. "</td>";
                    echo "</tr>";
                }
                ?>
           </table>
    <?php
     
    		$requete = "SELECT * FROM patient WHERE idDossierPatient = :numDossier";
    		$exec=mysqli_query($lienBd, $requete);
    //après je ne sais pas comment faire
    ?>
    </body>
    </html>
    Je vous remercie par avance de votre aide précieuse.
    Bonne soirée
    Images attachées Images attachées     

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Si tu as du code poste le.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    ce que veut dire badaze, c'est que tu peux/dois coller directement ton code DANS le contenu du message (au lieu d'une image).

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par badaze Voir le message
    Si tu as du code poste le.
    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
    <!DOCTYPE html>
    <html>
    <head>
    	<title>Transferer archives</title>
    	<meta charset="utf-8">
    </head>
    <body>
    	<header>
    		<h1>Transferer un dossier</h1>
    	</header>
    	<?php
    		include "connect_bdd.php";
    		$sql = "SELECT libelleService FROM service";
    		$result = mysqli_query($lienBd, $sql);
    	?>
    		<select name="service">
    			<?php while($row2 = mysqli_fetch_array($result)):;?>
    				<option value="<?php echo $row2[0];?>"><?php echo utf8_decode($row2[0]);?></option>
    			<?php endwhile;?>
    		</select>
    		<br><br>
    	<form method="POST">
    		<input type="text" name="numDossier" placeholder="Numéro de dossier">
    		<input type="submit" value="Transferer"> <br><br><hr><br>
    	</form>
    	<table>
                    <tr>
                        <th>Identifiant</th>
                        <th>Date de naissance</th>
                        <th>Sexe</th>
                        <th>Nom</th>
                        <th>Prénom</th>
                        <th>Numéro d'archive</th>
                    </tr>
                <?php //On affiche les lignes du tableau une à une à l'aide d'une boucle
        			$sql3 = "SELECT * FROM patient;";
    				$exec = mysqli_query($lienBd, $sql3);	
        		// echo "aaaaa";	
                while($donnees = mysqli_fetch_array($exec))
                {
                    echo "<tr>";
                    echo "<td>".$donnees['id']. "</td>";
                    echo "<td>" .$donnees['dateNaissance']. "</td>";
                    echo "<td>" .$donnees['sexe']. "</td>";
                    echo "<td>" .$donnees['nom']. "</td>";
                    echo "<td>" .$donnees['prenom']. "</td>";
                    echo "<td>" .$donnees['idDossierPatient']. "</td>";
                    echo "</tr>";
                }
                ?>
           </table>
    <?php
     
    		$requete = "SELECT * FROM patient WHERE idDossierPatient = :numDossier";
    		$exec=mysqli_query($lienBd, $requete);
    //après je ne sais pas comment faire
    ?>
    </body>
    </html>

  5. #5
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Voici une interprétation. Plus que ce qui est fait, car j'ai écrit tout ça de tête donc ce n'est sûrement pas optimal, regarde l'idée qui est de mettre à jour les données sans avoir à recharger la page.

    Nom : 20170529_001.JPG
Affichages : 558
Taille : 25,2 Ko

    Tu sélectionnes le service et tu cliques sur Modifier.

    Nom : 20170529_002.JPG
Affichages : 576
Taille : 25,0 Ko

    Ne pas oublier de changer les paramètres d'accés à la BDD.
    Code php : 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
     
    <?php
    define('DB_HOST', '127.0.0.1');
    define('DB_NAME', 'tests');
    define('DB_USER', 'root');
    define('DB_PWD' , '');
    $bdd       = new PDO('mysql:host='.DB_HOST.'; dbname='.DB_NAME,DB_USER,DB_PWD, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    //-------------- Services
    include('test9276b.php');
    $combo = getServices($bdd);?>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
    <script>
    function modifier(id_patient) {
     var id_service = document.getElementById('service_'+id_patient).value;
     
     var tdId = "#cmb_"+id_patient;
     $.ajax({            
            type: "POST",            
            url: "test9276c.php",      
      data: {id_patient: id_patient, id_service: id_service}, 
            dataType: "html",            
            success: function(msg){     
       if (msg =="ko") {
        alert("Paramètres mal passés !!!");
        return;
       }
       $(tdId).html(msg);    
            }        
     });
     
    }
    </script>
    </head>
    <body>
    <table border="1">
    <tr><td>Nom</td><td>Prénom</td><td>Service</td><td></td></tr>
    <?php
    //------------- Patients - j'utilise query parce que j'ai récupéré du code déjà écrit
    $requete = "SELECT `id_patient`, `nom`, `prenom`, `id_service`  FROM patients ORDER BY nom, prenom";
    $query   = $bdd->query($requete);
    while($row=$query->fetch(PDO::FETCH_OBJ))
    {
            //Mettre la ligne dans le tableau
     $id_patient = $row->id_patient;
     $nom_pat    = $row->nom;
     $prenom_pat = $row->prenom;
     $service_pat= $row->id_service;
     $sav_combo  = newCombo($combo,$id_patient,$service_pat);
     ?>
     <tr>
      <td><?php print $nom_pat;?></td>
      <td><?php print $prenom_pat;?></td>
      <td id="cmb_<?php print $id_patient;?>">
      <?php print $sav_combo;?>
      </td>
      <td>
      <input type="button" value="Modifier" onclick="modifier(<?php print $id_patient;?>)"/>
      </td>
     
     </tr><?php
    }?>
    </table>
    </body>
    </html>

    test9276b.php
    Code php : 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
     
     
    <?php
    function getServices($bdd) {
     //-------------- Services
     $query     = "SELECT `id_service`, `nom`  FROM `service` order by `nom`";
     $prepared  = $bdd->prepare($query);
     $prepared->execute();
     $result    = $prepared->fetchAll();
     $combo     = "<select id='service_$$$'>";
     foreach($result as $subArray) {
      $id_service = $subArray['id_service'];
      $nom        = trim($subArray['nom']);
      $combo .= "<option value='$id_service'>$nom  </option>";
     }
     $combo    .= "</select>";
     return $combo;
    }
    function newCombo($combo,$id_patient,$service_pat ) {
     $sav_combo  = str_replace('_$$$',"_$id_patient",$combo);
     $sav_combo  = str_replace("value='$service_pat'","value='$service_pat' selected",$sav_combo); 
     return $sav_combo;
    }
    ?>

    test9276c.php
    Code php : 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
     
     
    <?php
    define('DB_HOST', '127.0.0.1');
    define('DB_NAME', 'tests');
    define('DB_USER', 'root');
    define('DB_PWD' , '');
    if (isset($_POST['id_patient']) && isset($_POST['id_service'])) {
     $bdd        = new PDO('mysql:host='.DB_HOST.'; dbname='.DB_NAME,DB_USER,DB_PWD, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
     $id_patient = $_POST['id_patient'];
     $id_service = $_POST['id_service'];
     $query      = "update `patients` set `id_service` = $id_service where `id_patient` = $id_patient";
     $prepared   = $bdd->prepare($query);
     $prepared->execute();
     include('test9276b.php');
     $combo      = getServices($bdd);
     $sav_combo  = newCombo($combo,$id_patient,$id_service);
     print $sav_combo;
    } else {
     print "ko";
    }

    table service
    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
     
     
    -- phpMyAdmin SQL Dump
    -- version 4.7.0
    -- <a href="https://www.phpmyadmin.net/" target="_blank">https://www.phpmyadmin.net/</a>
    --
    -- Hôte : 127.0.0.1
    -- Généré le :  lun. 29 mai 2017 à 00:52
    -- Version du serveur :  5.7.17
    -- Version de PHP :  7.1.3
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    SET AUTOCOMMIT = 0;
    START TRANSACTION;
    SET time_zone = "+00:00";
     
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8mb4 */;
    --
    -- Base de données :  `tests`
    --
    -- --------------------------------------------------------
    --
    -- Structure de la table `service`
    --
    CREATE TABLE `service` (
      `id_service` int(11) NOT NULL,
      `nom` varchar(50) CHARACTER SET latin2 NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_bin;
    --
    -- Déchargement des données de la table `service`
    --
    INSERT INTO `service` (`id_service`, `nom`) VALUES
    (1, 'Archives'),
    (2, 'Urgences'),
    (3, 'Chirurgie'),
    (4, 'Maternite');
    --
    -- Index pour les tables déchargées
    --
    --
    -- Index pour la table `service`
    --
    ALTER TABLE `service`
      ADD UNIQUE KEY `id_service` (`id_service`);
    COMMIT;
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    table patients
    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
     
     
    -- phpMyAdmin SQL Dump
    -- version 4.7.0
    -- <a href="https://www.phpmyadmin.net/" target="_blank">https://www.phpmyadmin.net/</a>
    --
    -- Hôte : 127.0.0.1
    -- Généré le :  lun. 29 mai 2017 à 00:53
    -- Version du serveur :  5.7.17
    -- Version de PHP :  7.1.3
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    SET AUTOCOMMIT = 0;
    START TRANSACTION;
    SET time_zone = "+00:00";
     
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8mb4 */;
    --
    -- Base de données :  `tests`
    --
    -- --------------------------------------------------------
    --
    -- Structure de la table `patients`
    --
    CREATE TABLE `patients` (
      `id_patient` int(11) NOT NULL,
      `nom` varchar(50) COLLATE latin1_bin NOT NULL,
      `prenom` varchar(50) COLLATE latin1_bin NOT NULL,
      `id_service` int(11) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_bin;
    --
    -- Déchargement des données de la table `patients`
    --
    INSERT INTO `patients` (`id_patient`, `nom`, `prenom`, `id_service`) VALUES
    (1, 'GINA', 'Laurent', 1),
    (2, 'NANA', 'Judas', 1),
    (3, 'EYMARD', 'Jean', 2),
    (4, 'HOCHON', 'Paul', 1);
    COMMIT;
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  6. #6
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    @davT27.

    Tu as marqué la discussion comme étant résolue.

    Mais ce serait sympa de ta part de dire comment tu as résolu et si le code que j'ai posté t'a aidé ou pas.

    • Si tu as résolu d'une autre manière poste ta solution qui sera utile à d'autres qui auront ce problème dans le futur.
    • Si tu as résolu en utilisant ce que j'ai posté cela me ferait plaisir de le savoir. Non pas que j'aie un ego surdimensionné (quoique) mais qu'au moins je n'aie pas l'impression d'avoir perdu mon temps.


    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    Bonsoir, j'ai posté 3fois un message pour te remercier mais on me disait qu'il fallait que les modo valident mon message.
    Donc je te remercie énormément badaze, le code est parfait. Maintenant j'essaye de rechercher dans la liste une personne en particulier, pour cela je dois saisir un nom dans une combobox.
    Encore merci

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

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