Afficher des données a partir d'une base sql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Afficher des données a partir d'une base sql

Re: Afficher des données a partir d'une base sql

par orell1 » 04 oct. 2010, 14:45

Merci!
en tout cas c'est super sympa de ta part!
tu as raison je vais prendre l'air 5min et revenir dessus juste après... on verra

Re: Afficher des données a partir d'une base sql

par Cyrano » 04 oct. 2010, 14:36

Tu n'es pas nul, tu es un peu saturé, ça fait beaucoup de choses différentes à assimiler en même temps d'autant plus que là on est à cheval sur du PHP et du SQL qui sont deux langages qui n'ont à peu près rien de commun. ;)

Fais une pause si nécessaire, prends l'air 5mn, fais une sieste 20mn et remets-toi dessus, tu vas voir que ça va passer plus facilement après, laisse à ton cerveau le temps d'intégrer tout ça. :)

Re: Afficher des données a partir d'une base sql

par orell1 » 04 oct. 2010, 14:33

Quoi que je fasse j'ai tous les types d'erreur...
C'est incroyable! je suis vraiment nul là!

vraiment désolé!

Re: Afficher des données a partir d'une base sql

par Cyrano » 04 oct. 2010, 13:36

Ok, je vois.

Tu as fait une faute d'inattention : tu dois être convaincu d'avoir envoyé comme requête à MySQL :
SELECT m.login, m.nm_client
FROM membre AS m
  JOIN pefac_entreprises_contacts      AS c ON m.num_client = c.num_client
  JOIN pefac_entreprises_coordonnees  AS a ON m.num_client = a.num_client
  JOIN pefac_entreprises_dossiers
En réalité, d'après le code que tu montres, tu as envoyé :
SELECT m.login, m.nm_client
FROM membre AS m
  JOIN pefac_entreprises_contacts      AS c ON m.num_client = c.num_client
  JOIN pefac_entreprises_coordonnees  AS a ON m.num_client = a.num_client
  JOIN pefac_entreprises_dossiers  

$result = mysql_query($sql)
Je te laisse trouver pourquoi... :-*

Re: Afficher des données a partir d'une base sql

par orell1 » 04 oct. 2010, 12:31

Non désolé c'est moi qui n'est pas était très clair :

erreur : Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /././././TEST.php on line 22
Cellule avec la donnée de la colonne toto :

Code :
<?php
$hostname_AfficheInfosClients = "";
$database_AfficheInfosClients = "";
$username_AfficheInfosClients = "";
$password_AfficheInfosClients = "";  	
$AfficheInfosClients = mysql_pconnect($hostname_AfficheInfosClients, $username_AfficheInfosClients, $password_AfficheInfosClients) or trigger_error(mysql_error(),E_USER_ERROR); 
?>

<?php
//....
$sql ="SELECT m.login, m.nm_client
FROM membre AS m
  JOIN pefac_entreprises_contacts      AS c ON m.num_client = c.num_client
  JOIN pefac_entreprises_coordonnees  AS a ON m.num_client = a.num_client
  JOIN pefac_entreprises_dossiers   

$result = mysql_query($sql); // On exécute la requête;
// On ouvre une boucle while
while (false !== ($ligne = mysql_fetch_assoc($result)));
{
    // On crée une ligne qui affichera les données :
    // les données de la ligne sont contenues dans $ligne qui est
    // un tableau avec pour index le nom des colonnes, donc
    // pour une colonne toto, j'insèrerai $ligne['toto']
?>
    <tr>
      <td>Cellule avec la donnée de la colonne toto : <?php echo($ligne['nom']); ?></td>
    </tr>
<?php
}
?>

Re: Afficher des données a partir d'une base sql

par Cyrano » 04 oct. 2010, 12:16

Quelle erreur et à partir de quel code : désolé, on m'a confisqué ma boule de cristal lors de la dernière inquisition :P

Re: Afficher des données a partir d'une base sql

par orell1 » 04 oct. 2010, 12:12

Alors je viens de tester mais il y a une erreur :

Erreur : while (false !== ($ligne = mysql_fetch_assoc($result)))

J'ai donc ajouter à la fin de la ligne ";" mais toujours la même erreur et toujours aucun affichage... :(

Re: Afficher des données a partir d'une base sql

par Cyrano » 04 oct. 2010, 11:50

Mouais, et là je parie que tu n'as toujours aucun affichage.

Une fois la requête exécutée, il faut ensuite en récupérer le résultat. Tu vas donc créer une boucle dans laquelle sera créée une nouvelle ligne à chaque tour.

Schématiquement :
<?php
//....
$sql = ".....ta requête SQL ....";
$result = myqsl_query($sql); // On exécute la requête;
// On ouvre une boucle while
while (false !== ($ligne = mysql_fetch_assoc($result)))
{
    // On crée une ligne qui affichera les données :
    // les données de la ligne sont contenues dans $ligne qui est
    // un tableau avec pour index le nom des colonnes, donc
    // pour une colonne toto, j'insèrerai $ligne['toto']
?>
    <tr>
      <td>Cellule avec la donnée de la colonne toto : <?php echo($ligne['toto']); ?></td>
    </tr>
<?php
}
Je te laisse continuer :)

Re: Afficher des données a partir d'une base sql

par orell1 » 04 oct. 2010, 11:39

Je pense que c'est une très bonne idée!
<?php
$hostname_AfficheInfosClients = "";
$database_AfficheInfosClients = "";
$username_AfficheInfosClients = "";
$password_AfficheInfosClients = "";  	
$AfficheInfosClients = mysql_pconnect($hostname_AfficheInfosClients, $username_AfficheInfosClients, $password_AfficheInfosClients) or trigger_error(mysql_error(),E_USER_ERROR); 
?>
<?php

//---------------------CONNEXION A LA BASE SQL----------------------------------------------
$sql ="SELECT m.login, m.nm_client
FROM membre AS m
  JOIN pefac_entreprises_contact      AS c ON m.num_client = c.num_client
  JOIN pefac_entreprises_coordonnees  AS a ON m.num_client = a.num_client
  JOIN pefac_entreprises_dossier     AS d ON m.num_client = d.num_client";
  $result = mysql_query($sql);
//------------------------------------------------------------------------------------------
?>
<tr>
  <td width="46%"><h4><u>Coordonn&eacute;es</u></h4>
    <ul>
  
    		<li><b>Téléphone : </b><?php echo stripslashes($pefac_entreprises_coordonnees[telephone]); ?></li>
       		<li><b>Fax : </b><?php echo stripslashes($pefac_entreprises_coordonnees[fax]); ?></li>
            <li><b>E-mail : </b><?php echo stripslashes($pefac_entreprises_coordonnees[email]); ?></li>
    		<li><b>Adresse : </b><?php echo stripslashes($pefac_entreprises_coordonnees[adresse]); ?></li>
    		<li><b>Complément adresse : </b><?php echo stripslashes($pefac_entreprises_coordonnees[adresse_bis]); ?></li>
    		<li><b>Code postal : </b><?php echo stripslashes($pefac_entreprises_coordonnees[code_postal]); ?></li>
    		<li><b>Ville : </b><?php echo stripslashes($pefac_entreprises_coordonnees[ville]); ?></li>
    		<li><b>Site internet : </b><a href="<?php echo stripslashes($pefac_entreprises_coordonnees[site_internet]); ?>" target="_blank"><?php echo stripslashes($pefac_entreprises_coordonnees[site_internet]); ?></a></li>

    </ul>
  </td>
</tr>

Re: Afficher des données a partir d'une base sql

par Cyrano » 04 oct. 2010, 11:14

Et si tu lançais l'exécution de la requête avant de tenter d'afficher les données ? L'utilisation de mysql_query() serait peut-être une idée opportune, qu'en dis-tu ?

Re: Afficher des données a partir d'une base sql

par orell1 » 04 oct. 2010, 11:10

Merci pour ces explications voici ce que j'ai fait et malheuresement rien ne fonctionne...
Les enregistrements ne s'affichent pas.... (j'ai bien entendu rempli les données concernant la connexion au serveur)

<?php
$hostname_AfficheInfosClients = "mon_serveur";
$database_AfficheInfosClients = "ma_base";
$username_AfficheInfosClients = "mon_login";
$password_AfficheInfosClients = "mon_mdp";  	
$AfficheInfosClients = mysql_pconnect($hostname_AfficheInfosClients, $username_AfficheInfosClients, $password_AfficheInfosClients) or trigger_error(mysql_error(),E_USER_ERROR); 
?>
<?php

//---------------------CONNEXION A LA BASE SQL----------------------------------------------
$sql ="SELECT m.login, m.nm_client
FROM membre AS m
  JOIN pefac_entreprises_contact      AS c ON m.num_client = c.num_client
  JOIN pefac_entreprises_coordonnees  AS a ON m.num_client = a.num_client
  JOIN pefac_entreprises_dossiers     AS d ON m.num_client = d.num_client";
//------------------------------------------------------------------------------------------
?>
<tr>
  <td width="46%"><h4><u>Coordonn&eacute;es</u></h4>
    <ul>
  
    		<li><b>Téléphone : </b><?php echo stripslashes($pefac_entreprises_coordonnees[telephone]); ?></li>
       		<li><b>Fax : </b><?php echo stripslashes($pefac_entreprises_coordonnees[fax]); ?></li>
            <li><b>E-mail : </b><?php echo stripslashes($pefac_entreprises_coordonnees[email]); ?></li>
    		<li><b>Adresse : </b><?php echo stripslashes($pefac_entreprises_coordonnees[adresse]); ?></li>
    		<li><b>Complément adresse : </b><?php echo stripslashes($pefac_entreprises_coordonnees[adresse_bis]); ?></li>
    		<li><b>Code postal : </b><?php echo stripslashes($pefac_entreprises_coordonnees[code_postal]); ?></li>
    		<li><b>Ville : </b><?php echo stripslashes($pefac_entreprises_coordonnees[ville]); ?></li>
    		<li><b>Site internet : </b><a href="<?php echo stripslashes($pefac_entreprises_coordonnees[site_internet]); ?>" target="_blank"><?php echo stripslashes($pefac_entreprises_coordonnees[site_internet]); ?></a></li>

    </ul>
  </td>
</tr>
Merci

Re: Afficher des données a partir d'une base sql

par Cyrano » 04 oct. 2010, 10:38

Ok, dans le principe, tu as compris.

Tu as juste fait deux erreurs, la première en mélangeant la manière de faire une jointure dans une clause JOIN et dans une clause WHERE et la seconde en faisant des comparaisons entre table et champ ce qui n'est pas logique : dans les critères de tris, on va comparer les valeur de colonnes avec les valeurs d'autres colonnes. Afin d'éviter les conflits entres champs ayant le même nom dans des tables différentes, on va préfixer les colonnes avec le nom de leurs tables erespectives :

Avec la clause WHERE, il aurait fallu faire :
SELECT membre.login, membre.nm_client
FROM membre,
     entreprises_contact,
     entreprises_coordonnees,
     entreprises_dossiers
WHERE membre.num_client = entreprises_contact.num_client
  AND membre.num_client = entreprises_coordonnees.num_client
  AND membre.num_client = entreprises_dossiers.num_client
On préfixe toutes les colonnes, ce qui finit par rendre la lecture un peu pénible. Heureusement, le SQL permet de simplifier en utilisant des ALIAS : on va mettre un alias sur les noms de tables limité à une lettre qu'on choisit de façon que ça reste à peu près significatif si possible. Ça nous réduit le code à ceci :
SELECT m.login, m.nm_client
FROM membre AS m,
     entreprises_contact AS c,
     entreprises_coordonnees AS a,
     entreprises_dossiers AS d
WHERE m.num_client = c.num_client
  AND m.num_client = a.num_client
  AND m.num_client = d.num_client
Maintenant la même en utilisant une jointure normalisée (CLAUSE JOIN) :
SELECT m.login, m.nm_client
FROM membre AS m
  JOIN entreprises_contact      AS c ON m.num_client = c.num_client
  JOIN entreprises_coordonnees  AS a ON m.num_client = a.num_client
  JOIN entreprises_dossiers     AS d ON m.num_client = d.num_client
Là on a plus de clause WHERE : attention aussi à un détail, pas de virgule non plus entre les clauses de jointure.

Schématiquement, la clause JOIN s'écrit « JOIN nom-de-la-table AS alias-a-utiliser ON condition-de-jointure » (J'ai mis les mots-clés en majuscule.)

Comme tu risques d'avoir un résultat surprenant, je vais te laisser tester ça et revenir avec le résultat et éventuellement la question si tu ne comprends pas le résultat :)

Re: Afficher des données a partir d'une base sql

par orell1 » 04 oct. 2010, 10:16

J'aurai vu un truc du style :
SELECT login, nm_client FROM membre
JOIN entreprises_contact
JOIN entreprises_coordonnees
JOIN entreprises_dossiers
WHERE membre=num_client
AND entreprises_contact=num_client
AND entreprises_coordonnees=num_client
AND entreprises_dossiers=num_client
Comme tu l'auras compris j'ai 4 tables possédant un champs commun : "num_client"

Merci

Re: Afficher des données a partir d'une base sql

par Cyrano » 04 oct. 2010, 05:54

Tu dois lier les quatre tables bien sûr.

Essaye déjà d'écrire la partie jointure de ta requête et viens nous montrer ça, s'il y a des erreurs, on tentera de t'expliquer mieux le principe.

Re: Afficher des données a partir d'une base sql

par orell1 » 04 oct. 2010, 00:53

comment créer une page php avec une connexion à une base de données?
Exemple:

Si mon client se log alors s'affichent les informations le concernant depuis ma base sql...
Merci