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 :

Requête sur une table


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
    retraité
    Inscrit en
    Mars 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2008
    Messages : 72
    Par défaut
    donc j'ai créé une nouvelle table mis dans la bd mysql test en localhost = RIEN
    après j'ai mis mon script en ligne pour voir
    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
    <html>
    <head>
    <meta charset="utf-8">
    <title>ACA</title>
    <link href="mon_style_2.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
    <?php
    $nom_du_serveur  = "mysql:host=axxxxde.mysql.db;dbname=axxxxde";
    $nom_utilisateur = "axxxde";
    $mot_de_passe    = "xxxxx";
     
    $options         = array(
    	PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES latin1",
    	PDO::ATTR_CASE               => PDO::CASE_LOWER,
    	PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    	PDO::ATTR_PERSISTENT         => false,
    	PDO::ATTR_AUTOCOMMIT
    );
     
    try {
    	$link = new PDO($nom_du_serveur, $nom_utilisateur, $mot_de_passe, $options);
    }
    catch (Exception $e)
    {
    	echo "Connection à MySql impossible : ", $e->getMessage();
    	die();
    }
    try 
    {
    	$sel = $link->prepare("SELECT date_naissance, adresse FROM adherents where num_lic = :licence");
     
    	$sel->bindParam('licence', $_POST['numlicence']);
     
    	$sel->execute();
     
    	while ($row = $sel->fetch(PDO::FETCH_ASSOC))
    	{
     
    		print_r($row['date_naissance'],$row['adresse']);
    	}
     
    }
    catch ( Exception $e )
    {
    	echo "Une erreur est survenue dans la requête select : ", $e->getMessage();
    	die();
    }
     
    $sel->closeCursor();
    ?>   
     
    <fieldset id="titre"> 
     
    <p>Bonjour&nbspM:&nbsp;<?php echo $_POST['nom_prenom']; ?>&nbsp;<br>Tu es né le :&nbsp;&nbsp;<?php printf($row['datenaiss'],$row['adresse']); ?>&nbsp;&nbsp;
    <p>tu résides à &nbsp;&nbsp;<?php printf($row['date_nais'],$row['adr']); ?>&nbsp;&nbsp;</br>
    <br>ton numero de telephone est&nbsp;&nbsp;<?php echo $_POST['phone']; ?>&nbsp;&nbsp;ton mail :&nbsp;<?php echo $_POST['courriel']; ?>&nbsp;&nbsp;</br>
    <br>tu es affilié à la Federation :&nbsp;&nbsp;<?php echo $_POST['fede'];?></br>
    <br>tu as choisi de faire l'epreuve de :&nbsp<?php echo $_POST['Rando'];?>&nbsp;&nbsp;&nbsp;Le :&nbsp;<?php echo $_POST['DateR'];?>&nbsp;et la distance de &nbsp;<?php echo $_POST['Dist'];?>Km</br></p>
    </fieldset>
    </body>
    </html>
    voila une partie du code sur la page formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <p>
    					<label for="numlicence"><strong>N° de Licence : </strong></label>
    						<input id="numlicence" type="text" name="numlicence" size="8" maxlength="10" /><br />
     
    				</p>
    et toujours pareil pas d'affichage sur les champs date naissance et adresse
    après ceci j'ai changé la table par une autre " Infos_Club " qui est sur serveur ovh celle ci fonctionne tres bien
    et je ne recupere rien retour case départ

  2. #2
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 873
    Par défaut
    Salut andre260.

    Il y a quelques petites erreurs dans ton script.

    1) il faut obligatoirement mettre dans un document html, un doctype :
    2) si tu travailles en "latin1", autant mettre tes documents html aussi en "latin1".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta charset="ISO-8859-1">
    Et ne pas oublier de convertir le document en "iso-8859-1".
    Ou encore comme je le fait, mets tout en "ANSI".

    3) si tu as besoin de comptabiliser le nombre de lignes extraits de ta requête, tu peux utiliser ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $count = $sel->rowCount();
    4) parfois, il est nécessaire de préciser le type de donnée que tu passes en argument dans un bindparam :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sel->bindParam('licence', $_POST['numlicence'], PDO::PARAM_INT);
    5) il existe une autre forme d'écriture du bindparam qui peut-être plus simple à l'usage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sel = $link->prepare("SELECT date_naissance, adresse FROM adherents WHERE num_lic = ?");
    $sel->execute(array(1));
    La différence se porte sur d'une part mettre un "?" dans la requête et d'autre part d'utiliser array() pour faire le passage positionnel des paramètres.
    Personnellement, je préfère le bindparam.

    6) tu dois extraire tes données de MySql et ensuite, les mettre en forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	if ($row = $sel->fetch(PDO::FETCH_ASSOC))
    	{
    		$date_naissance = $row['date_naissance'];
    		$adresse        = $row['adresse'];
    	}
    	else
    	{
    		$date_naissance = '----';
    		$adresse        = '----';
    	}
    Je teste si l'extraction s'est bien faite. Deux cas :
    --> aucune ligne, la valeur de retour est à NULL.
    --> il y a des lignes, la valeur de retour est un pointeur sur un tableau.

    Ici, je récupère depuis $row[], puisque je suis dans le mode association, la valeur de la ligne courante.
    Comme j'obtiens de l'extraction une et une seule ligne, il est inutile de faire une boucle.

    Et comme tu le voies, j'ai rangé le résultat que j'obtiens directement dans la variable.

    7) tu peux utiliser la fonction entities sur l'exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	echo "Connection à MySql impossible : ", entities($e->getMessage());
    Ceci permet d'avoir la bonne conversion des caractères entre l'utf8 et iso8859-1.

    8) j'ai repris mon exemple et je l'ai adapté. Maintenant ça fonctionne !
    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
    <!doctype html>
    <html>
    <head>
    <meta charset="ISO-8859-1">
    <title>ACA</title>
    <link href="styles.css" rel="stylesheet" type="text/css" />
    </head>
     
    <body>
    <?php
    /*--------------*/
     
    $_POST['numlicence'] = 1;
     
    /*--------------*/
     
    /*-----------------------------------------------------*/
    /* Informations pour la connexion à la base de données */
    /*-----------------------------------------------------*/
     
    $nom_du_serveur  = "mysql:host=localhost;dbname=base";
    $nom_utilisateur = "root";
    $mot_de_passe    = "root";
     
    $options         = array(
    	PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES latin1",
    	PDO::ATTR_CASE               => PDO::CASE_LOWER,
    	PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    	PDO::ATTR_PERSISTENT         => false,
    	PDO::ATTR_AUTOCOMMIT
    );
     
    /*----------------------*/
    /* Connexion au Serveur */
    /*----------------------*/
     
    try {
    	$link = new PDO($nom_du_serveur, $nom_utilisateur, $mot_de_passe, $options);
    }
    catch (Exception $e)
    {
    	echo "Connection à MySql impossible : ", $e->getMessage();
    	die();
    }
     
    /*---------------------*/
    /* lecture de la table */
    /*---------------------*/
     
    try {
    	$sel = $link->prepare("SELECT date_naissance, adresse FROM adherents WHERE num_lic = :licence");
    /*	$sel = $link->prepare("SELECT date_naissance, adresse FROM adherents WHERE num_lic = ?");*/
     
    	$sel->bindParam('licence', $_POST['numlicence'], PDO::PARAM_INT);
     
    	$sel->execute();
     
    /*	$sel->execute(array(1));*/
     
    	if ($row = $sel->fetch(PDO::FETCH_ASSOC))
    	{
    		$date_naissance = $row['date_naissance'];
    		$adresse        = $row['adresse'];
    	}
    	else
    	{
    		$date_naissance = '----';
    		$adresse        = '----';
    	}
    }
    catch ( Exception $e )
    {
    	echo "Une erreur est survenue dans la requête select : ", $e->getMessage();
    	die();
    }
     
    $sel->closeCursor();
     
    ?>
    <p>DATE NAISSANCE : <?php echo $date_naissance ?></p>
    <p>ADRESSE        : <?php echo $adresse ?></p>
    </body>
    </html>
    @+

  3. #3
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2008
    Messages : 72
    Par défaut
    Bonjour Artemus
    Excuse moi j'ai un peu arrangé le 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
    <?php
    //$nom_du_serveur  = "mysql:host=ac--e.mysql.db;dbname=a--e";
    //$nom_utilisateur = "a--e";
    //$mot_de_passe    = "A--2";
    //$options         = array(
    //PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES latin1",
    //PDO::ATTR_CASE               => PDO::CASE_LOWER,
    //PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    //PDO::ATTR_PERSISTENT         => false,
    //PDO::ATTR_AUTOCOMMIT
    //);
    try
    {
      $bdd = new PDO('mysql:host=a--db;dbname=a--e;charset=utf8', 'a--e', 'A--2');
    }
    catch(Exception $e)
    {
        // En cas d'erreur, on affiche un message et on arrête tout
            die('Erreur : '.$e->getMessage());
    }
    try 
     {
    	//$sel = $link->prepare("SELECT Adresse, Date_Naissance FROM Infos_Club where numerolic = :licence"); 
    	//$sel->bindParam('licence', $_POST['numlicence']); 
    	//$sel->execute();    
    	//while ($row = $sel->fetch(PDO::FETCH_ASSOC))
    	//{
    	//print_r($row['Date_Naissance'],$row['Adresse']);
    	//}	
    }
    catch ( Exception $e )
    {
    	echo "Une erreur est survenue dans la requête select : ", $e->getMessage();
    	die();
    }
    ?>
    <fieldset id="titre"> 
    <p>Bonjour&nbspM:&nbsp;<?php echo $_POST['nom_prenom']; ?>&nbsp;<br>Tu es né le :&nbsp;&nbsp;<?php printf($row['Date_Naissance'],$row['Adresse']); ?>&nbsp;&nbsp;
    <p>tu résides Ã* &nbsp;&nbsp;<?php printf($row['Date_Naissance'],$row['Adresse']); ?>&nbsp;&nbsp;</br>
    <br>ton numero de telephone est&nbsp;&nbsp;<?php echo $_POST['phone']; ?>&nbsp;&nbsp;ton mail :&nbsp;<?php echo $_POST['courriel']; ?>&nbsp;&nbsp;</br>
    <br>tu es affilié Ã* la Federation :&nbsp;&nbsp;<?php echo $_POST['fede'];?>&nbsp;&nbsp;ton numero de licence : <?php echo $_POST['numlicence'];?></br>
    <br>tu as choisi de faire l'epreuve de :&nbsp<?php echo $_POST['Rando'];?>&nbsp;&nbsp;&nbsp;Le :&nbsp;<?php echo $_POST['DateR'];?></br>
    <br>&nbsp;et la distance de &nbsp;<?php echo $_POST['Dist'];?>Km</br></p>
    </fieldset>
    <?php
    // On récupère tout le contenu de la table infos club
    $reponse = $bdd->query('SELECT * FROM Infos_Club LIMIT 5');
    echo '<p></p>';
    while ($donnees = $reponse->fetch())
    {	
    ?>
    <table>
         <td> <?php echo $donnees['Identite'];?></td>	 
    	 <td><?php echo $donnees['Sexe'];?></td>
    	 <td><?php echo $donnees['Date_Naissance'];?></td>
    	 <td> <?php echo $donnees['numerolic'];?></td>
    	 <td><?php echo $donnees['Email'];?></td>
    	 <td><?php echo $donnees['telephone'];?></td>
    	 <td><?php echo $donnees['Adresse'];?> </td>   
       </p>
    </table>
    <?php
    }
    $reponse->closeCursor(); // Termine le traitement de la requête
    ?>
    Donc Ma bd est bien connectée
    Il lit bien la table et il m'affiche les infos de la table "Infos_Club" (excuse pour les majuscules) partie echo donnees
    par contre la 1ere partie du code ou il doit lire et afficher Date_Naissance et Adresse ne sont toujours pas lues
    Je comprends pas c'est la même table
    J'ai mis en commentaire car il restitue une erreur sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sel = $link->prepare("SELECT Adresse, Date_Naissance FROM Infos_Club where numerolic = :licence");
    donc il suffit juste d'harmoniser ces 2 codes
    je te remercie

  4. #4
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2008
    Messages : 72
    Par défaut
    Je viens seulement de prendre connaissance de ton message
    je lis cela en fin d'apres midi à tête reposée
    cdt

  5. #5
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2008
    Messages : 72
    Par défaut
    Voici ce que j'obtiens
    la partie superieure n'affiche pas les 2 renseignements desirés
    et la partie basse le fait avec les mêmes champs (j'y perds mon latin)
    Nom : capture.jpg
Affichages : 125
Taille : 142,6 Ko

  6. #6
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2008
    Messages : 72
    Par défaut ouf
    Enfin j'ai trouvé ce qui clochait au lieu de prendre numlicence comme condition where
    j'ai changé par le telephone et la bingo
    tout s'affiche, je n'ai plus qu'a mettre un d'ordre
    mais je voudrais bien comprendre, le pourquoi du comment
    en tout cas je te remercie pour tout et de la patience
    cdt
    andre

  7. #7
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 873
    Par défaut
    Salut andre260.

    J'ai repris ton exemple. J'ai créé une table MySql avec un tout petit jeu d'essai.
    J'ai adapté le code php ton exemple et j'ai fait en sorte d'obtenir une extraction.
    Je l'ai testé cette fois-ci, et j'obtiens bien un résultat.
    Maintenant, je pense que tu vas pouvoir t'en sortir !

    @+

Discussions similaires

  1. Récupération du résultat d'une requête sur une table liée
    Par champijulie dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 05/06/2007, 12h26
  2. Effectuer une requête sur une table.
    Par Premium dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/05/2007, 16h27
  3. Recupérer le résultat d'une requête sur une table Firebird
    Par defluc dans le forum Bases de données
    Réponses: 7
    Dernier message: 20/04/2007, 18h30
  4. Réponses: 5
    Dernier message: 08/01/2007, 21h03
  5. requéte sur une table
    Par iutcien dans le forum Langage SQL
    Réponses: 1
    Dernier message: 23/06/2006, 15h42

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