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 :

Recherche par nom (combobox)


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 Recherche par nom (combobox)
    Bonjour à tous, je souhaite à l'aide d'une combobox saisir le nom d'une personne et afficher les données la concernant pour enfin pouvoir les modifier.
    Voici mon code :

    transferer.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
    $bdd = new PDO('mysql:host=localhost; dbname=archivesv1', 'root', '');
    //-------------- Services
    include('transfererB.php'); 
    $combo = getServices($bdd);
    ?>
     
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="design.css">
    <title>Transférer</title>
     
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
     
    <script>
    function modifier(id) 
    {
      var id_service = document.getElementById('service_'+id).value;
     
      var tdId = "#cmb_"+id;
      $.ajax
      ({            
        type: "POST",            
        url: "transfererC.php",      
        data:{id: id, 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>
    <?php
    	include "nav.php";
    	nav()
    ?>
    <form method="POST" action="">
    		<input type="text" name="nom" placeholder="Nom du patient" class="textbox">
    		<input type="submit" value="Chercher" class="bouton">
    </form>
    	<br><br>
    <h1 align="center">Transférer un patient</h1><br><hr><br>
    	<table border="1" align="center" class="table">
      		<tr>
      			<th>Nom</th>
      			<th>Prénom</th>
      			<th>Service</th>
      			<th></th>
      		</tr>
      <?php
      //------------- Patients - j'utilise query parce que j'ai récupéré du code déjà écrit
      $requete = "SELECT `id`, `nom`, `prenom`, `id_service` FROM patient 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;
        $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" class="boutonTransferer" onclick="modifier(<?php print $id_patient;?>)"/>
        </td>
     </tr><?php
     
    }?>
    </table>
    </body>
    </html>
    transfererB.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
     <?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;
    }
    ?>
    transfererC.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
    <?php
     
    if (isset($_POST['id']) && isset($_POST['id_service'])) 
    {
    	$bdd = new PDO('mysql:host=localhost; dbname=archivesv1', 'root', '');
     
     	$id_patient = $_POST['id'];
     	$id_service = $_POST['id_service'];
     
     	$query	= "update `patient` set `id_service` = $id_service where `id` = $id_patient";
     	$prepared = $bdd->prepare($query);
     	$prepared->execute();
     
     	include('transfererB.php');
     	$combo = getServices($bdd);
     	$sav_combo = newCombo($combo,$id_patient,$id_service);
     	print $sav_combo;
    } 
    else 
    {
     print "ko";
    }
    Merci par avance de votre aide

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Et qu'est ce qui ne fonctionne pas avec ce code ? Quel problème ou point de blocage rencontres-tu ?

    Au passage tout de même, quand on fait un "prepare", il faut utiliser des paramètres, sinon ça n'apporte rien et ne donne aucune sécurité.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    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
    Au passage tout de même, quand on fait un "prepare", il faut utiliser des paramètres, sinon ça n'apporte rien et ne donne aucune sécurité.[/QUOTE]

    Bonjour, merci de ta réponse, le code fonctionne pour les modifications. Le problème c'est que je ne sais pas comment faire pour l'affichage dans la liste des infos de la personne saisie dans la combobox. Je souhaite en gros saisir le nom d'une personne dans la combobox, ensuite afficher cette personne dans la liste et pouvoir modifier le service. Actuellement j'ai seulement accès a toute la liste, je veux toujours pouvoir avoir accès à toute la liste mais une fois le nom saisie afficher seulement la personne concerné.

    Merci

  4. #4
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut ajoutant un filtre WHERE à ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $requete = "SELECT `id`, `nom`, `prenom`, `id_service` FROM patient";
    $param = array();
    If (isset($_POST['nom'])) {
        $requete .= " WHERE nom = :nom";
        $param = array(':nom'=>$_POST['nom']);
    }
    $requete .= " ORDER BY nom, prenom";
     
    $query = $bdd->prepare($requete);
    $query->execute($param);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    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
    Merci beaucoup sabotage, depuis hier je suis coincé. Le code marche parfaitement.

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

    merci d'utiliser le bouton "+ Répondre à la discussion" (ci-dessous à gauche), au lieu de "répondre avec citation".

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/03/2009, 12h31
  2. une recherche par nom independante de la casse
    Par zineb dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/02/2008, 12h53
  3. recherche par nom
    Par bakato dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/07/2007, 17h53
  4. [VB.Net]recherche par nom
    Par souaddemaroc dans le forum Windows Forms
    Réponses: 7
    Dernier message: 30/03/2006, 10h40
  5. Requête sélection : recherche par nom
    Par leeloo77 dans le forum Access
    Réponses: 7
    Dernier message: 17/02/2006, 15h39

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