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 :

Lien entre html et php? [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2016
    Messages : 73
    Par défaut Lien entre html et php?
    Bonjour,


    J'aimerai afficher dans un tableau une série de médicaments avec leurs heures de prise. Mais bon, avant de faire ça, je dois commencer par sélectionner le patient pour lequel je souhaite voir la fiche de traitement (=l'ensemble des médicaments qu'il prend). Et je n'y parviens pas. Le soucis doit venir de cette ligne $reponse = $bdd->query('SELECT * FROM abonnes where nom = "$nom"'); , car quand je met $reponse = $bdd->query('SELECT * FROM abonnes where nom = "Bertrand"'); cela fonctionne correctement.

    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
     
    <div id="body">
    
     <div id="content">
    
    <h2>Traitement</h2>
    <p>
    <br />
    <br/ >
      <form method="post" action="repos.php">                                //repos.php signifie qu'on va rester sur la même page
       <p>
           <label for="nom">Nom :</label>
           <input type="text" name="nom" id="nom" />                      // ici je sélectionne la personne
            <input type="submit" value="Valider" />
        
         
       </p>
    </form>
    
    <?php
    try
    {
    	// connexion à la base fonctions
    	$bdd = new PDO('mysql:host=localhost;dbname=fonctions;charset=utf8', 'root', 'root');
    }
    catch(Exception $e)
    {
    	
            die('Erreur : '.$e->getMessage());
    }
    
    
    $reponse = $bdd->query('SELECT * FROM abonnes where nom = "$nom"');                     // ça ne marche pas non plus avec ".$nom.". Par contre, ça fonctionne si je met le nom d'une personne...
    
    
    
    while ($donnees = $reponse->fetch())
    {
    ?><table border = 2px>
    	<tr>
    	<th>
    	</th>
    	<th>
    	08:00
    	
    	</th>
    	<th>
    	12:00
    	</th>
    	<th>
    	20:00
    	</th>
    	<th>
    	21:00
    	</th>
    	</tr>
    	<tr>
    	<td>
    	<?php echo $donnees['medicament']; ?>
    	</td>
    	<td>
    	
    	<?php if ($donnees['heure']=="08:00"&& $donnees['medicament']=="amiodarone")
    	 {echo "X";} else  {echo " ";}?>
    	<td>
    	<td>
    	</td>
    	<td>
    	</td>
    	</tr>
    	<tr>
    	<td>
    	<?php echo $donnees['medicament']; ?>
    	</td>
    	<td>
    	
    	<?php if ($donnees['jour']=="16") {echo "X";} else  {echo " ";}?>
    	<td>
    	<td>
    	</td>
    	<td>
    	</td>
    	</tr>
    	</table><?php
     // echo '<b>'.$donnees['nom'].' '.$donnees['medecin'].'</b> ('.$donnees['medicament'].')'.$donnees['heure'].' '.$donnees['jour'].' '.$donnees['mois'];  
     // echo ' <i>date de naissance : '.$donnees['date_naissance'].'</i><br>';  
        } 
    
    $reponse->closeCursor(); 
    
    ?>
    
    </div>
    
    
    
    
    </html>
    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Ca ne marche pas parce que tu envois '$nom' ou '.$nom.' comme une chaine de caractere et ta base de donnee ne trouve personne qui s'appelle '$nom' ou '.$nom.'

    Il faut bien visualiser qui va interpreter quoi, dans tes exemples :
    $reponse = $bdd->query('SELECT * FROM abonnes where nom = "$nom"');
    $reponse = $bdd->query('SELECT * FROM abonnes where nom = ".$nom."');

    PHP remarque tu as une chaine de caracteres delimitee en rouge par des simples quotes et ne s'occupe donc pas de ce qu'il y a a l'interieur (n'interprete pas ta variable).
    Ta base de donnees vois les doubles quotes en bleu et considere que ce qui est a l'interieur est une chaine de caractere et essaye donc de trouver un nom = "$nom", qui n'existe pas.

    Essaye ca :
    $reponse = $bdd->query('SELECT * FROM abonnes where nom = "'.$nom.'"');

  3. #3
    Membre confirmé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2016
    Messages : 73
    Par défaut
    ok merci ! C'est vrai que c'est logique que php cherche "$nom".


    Pour l'autre problème que j'ai, c'est que je ne sais pas comment faire pour afficher un médicament par ligne. J'aurai voulu mettre en abscisse les heures de prises (ça c'est bon) et en ordonné les différents médicaments pris, mais je ne sais pas comment faire. Pour l'instant, j'ai réussi à en afficher un seul par table. Une boucle for? ou alors jouer avec le while (j'ai essayé mais pas réussi)?



    Sur cette image, j'aurai voulu avoir dafalgan sous amiodarone (ou l'inverse), dans le même tableau
    Nom : Capture.PNG
Affichages : 867
Taille : 8,2 Ko

    D'avance merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Ca depend de la structure de ta base de donnees. Avec une requete comme celle que tu presentes (SELECT * FROM abonnes WHERE nom = 'Bertrand'), tu ne pourras avoir qu'un seul medicament par abonne. Si tu veux pouvoir affecter plusieurs medicaments a un abonne il te faut plusieurs tables et des jointures pour le faire proprement.

  5. #5
    Membre confirmé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2016
    Messages : 73
    Par défaut
    actuellement, ma base de donnée est comme ceci :

    une seule table avec dedans :

    nom (patient)
    medicament
    heure
    jour
    mois
    année
    date_de_naissance
    medecin

    Dois-je faire une table par personne? ça me parait être la solution mais ceci impliquerait 200 tables... .

  6. #6
    Invité
    Invité(e)
    Par défaut
    Non, pas une table par personne. Idealement il te faudrait une table avec tes patients, une table avec tes medicaments, et une table pour les prescriptions (qui ferait le lien entre les patients et les medicaments).

    Ta table patient ressemblerais a quelque chose du genre : id|nom|prenom|date_naissance|... ta table medicaments a : id|libelle|... et les presciptions a : id|id_patient|id_medicament|heure|jour|mois|annee|... Je t'invite a te renseigner sur les jointures en SQL, c'est une notion fondamentale si tu veux travailler avec des bases de donnees relationnelles (ca sonne barbare mais ce n'est pas tres complique).

    Avec ta structure actuelle il faut que tu dupliques les informations de tes patients pour chaque medicament, si tu veux formatter ton tableau en l'etat oui il va falloir jouer avec des boucles imbriquees.

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

Discussions similaires

  1. Lien entre html et css
    Par aertys dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 23/09/2016, 20h13
  2. Petite explication basique entre HTML/CSS/PHP ?
    Par jerem432 dans le forum Langage
    Réponses: 8
    Dernier message: 07/06/2013, 12h59
  3. Faire un lien entre flash et php
    Par xzéna dans le forum Flash
    Réponses: 1
    Dernier message: 12/11/2012, 11h56
  4. Lien entre un fichier php et un fichier js.
    Par argon dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/04/2009, 11h15
  5. Problème marge entre html et php
    Par dom59111 dans le forum Langage
    Réponses: 3
    Dernier message: 29/10/2007, 09h27

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