PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 29-04-2010 20:04:31

Maximeus
Membre
Inscription : 08-06-2009
Messages : 20

Soucis d'affichage de données d'une db mysql

Bonsoir,

Je sollicite votre aide pour un petit souci d'affichage de données d'un bd mysql.

Ma page doit afficher les données d'une annonce. Par exemple:

Appartement
Prix
Nombre de pieces
Cuisine équipée
...

Les données s'affichent bien, mais en plusieurs parties. Par exemple:

Appartement
Prix
Nombre de pièces
...

Appartement
Prix
Cuisine équipée
...

Pour chaque caractéristique de mon annonces, il affiche un record supplémentaire, au lieu des les afficher un au dessous de l'autre.

Voici mon code de mon while:

////////////////////////////////////////////////////////////////////////////////
// On scanne la base de données
while ($data = mysql_fetch_array($result_ad))
{
// On affiche les données
echo '<div id="content">';
echo ''.htmlentities(trim($data['type_'.$lang.''])).'<br clear="all" />';
echo ''.htmlentities(trim($data['prix_'.$lang.''])).'<br clear="all" />';
echo ''.htmlentities(trim($data['caract_'.$lang.''])).'<br clear="all" />';
echo '</div>';
}
////////////////////////////////////////////////////////////////////////////////


Pour information, les données "caractéristiques" se trouvent dans une table séparée jointe à ma table principale.

Voici comment mes tables sont +/- configurées:


TABLE_ANNONCES
/// annonces_id /// type_id /// caract_id

TABLE_TYPE
/// type_id /// type_fr /// type_en /// type_de

TABLE_CARACT
/// annonces_id /// caract_alias /// caract_rec

TABLE_CARACT_DETAILS
/// caract_alias /// caract_fr /// caract_en /// caract_de


Ma table TABLE_ANNONCES est liée à la table TABLE_TYPE et à la table TABLE_CARACT.

Ma table TABLE_CARACT est liée à la table TABLE_CARACT_DETAILS.


De quelle manière dois-je modifier mon code ci-dessus pour éviter les affichages en double?

Merci d'avance.

Hors ligne

#2 29-04-2010 20:20:24

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Soucis d'affichage de données d'une db mysql

le probleme doit etre dans le select et on ne le vois pas wink
a++

Hors ligne

#3 29-04-2010 21:01:40

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Soucis d'affichage de données d'une db mysql

Bonjour,

<br clear="all" />

Ce html n'est pas conforme au standard html5.0 ni à aucune définition de document. Remplace par <br/> ou </br> selon ton doctype et puis ensuite regarde comment se comporte ton navigateur avec du code propre.

Dernière modification par Jc (29-04-2010 21:02:50)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#4 29-04-2010 21:34:46

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Soucis d'affichage de données d'une db mysql

ce n'est pas ça qui empercherai d'afficher ses données même mal formatées wink

le html non compris est tout simplement ignoré par le navigateur wink

a++

Hors ligne

#5 29-04-2010 22:33:02

Maximeus
Membre
Inscription : 08-06-2009
Messages : 20

Re : Soucis d'affichage de données d'une db mysql

Voici le select:

$request_ad = 'SELECT ';
$request_ad .= 'table_annonces.annonces_id, table_annonces.type_id, table_annonces.transaction_id, ';
$request_ad .= 'table_type.type_id, table_type.type_fr, table_type.type_en, table_type.type_de, ';
$request_ad .= 'table_caract_details.caract_alias, table_caract_details.caract_fr, table_caract_details.caract_en, table_caract_details.caract_de, ';
$request_ad .= 'table_caract.annonces_id, table_caract.caract_alias, table_caract.caract_rec, ';
$request_ad .= 'table_transaction.transaction_id, table_transaction.transaction_fr, table_transaction.transaction_en, table_transaction.transaction_de ';
$request_ad .= 'FROM ';
$request_ad .= 'table_annonces ';
$request_ad .= 'JOIN table_transaction ON table_annonces.transaction_id=table_transaction.transaction_id ';
$request_ad .= 'JOIN table_type ON table_type.type_id=table_annonces.type_id ';
$request_ad .= 'JOIN table_caract ON table_caract.annonces_id=table_annonces.annonces_id ';
$request_ad .= 'JOIN table_caract_details ON table_caract_details.caract_alias=table_caract.caract_alias';


Je viens également de remarquer que j'ai commis des erreurs de frappe:


TABLE_ANNONCES
/// annonces_id /// type_id /// transaction_id (et non pas caract_id)


Et revoici une exemple de while:


// On scanne la base de données
while ($data = mysql_fetch_array($result_ad))
{
// On affiche les données
echo '<div id="content">';
echo ''.htmlentities(trim($data['transaction_'.$lang.''])).'<br clear="all" />';
echo ''.htmlentities(trim($data['type_'.$lang.''])).'<br clear="all" />';
echo ''.htmlentities(trim($data['caract_'.$lang.''])).'<br clear="all" />';
echo '</div>';
}

Ce qui m'affiche:

Achat
Appartements
Nombre de pièces

Achat
Appartements
Cuisine équipée

et non pas:

Achat
Appartements
Nombre de pièces
Cuisine équipée


Je dois modifier mon while de sorte qu'il m'affiche les données de la table table_caract_details avec les autres données (Achat, Appartements) sans qu'il réaffiche à chaque fois celle-ci.

Merci

Dernière modification par Maximeus (29-04-2010 22:35:09)

Hors ligne

#6 30-04-2010 07:37:43

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : Soucis d'affichage de données d'une db mysql

dans le mode d'emploi disponible ICI, il est recommandé l'usage de balise [ code=php] et [ /code].... surtout que tu n'en ai pas à ton 1er post ....

Ton post serait BEAUCOUP plus agréable à lire, et à analyser !


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#7 30-04-2010 07:56:14

Maximeus
Membre
Inscription : 08-06-2009
Messages : 20

Re : Soucis d'affichage de données d'une db mysql

Je prends note, merci.

Voici mon post modifié

Voici le select:

$request_ad = 'SELECT ';
$request_ad .= 'table_annonces.annonces_id, table_annonces.type_id, table_annonces.transaction_id, ';
$request_ad .= 'table_type.type_id, table_type.type_fr, table_type.type_en, table_type.type_de, ';
$request_ad .= 'table_caract_details.caract_alias, table_caract_details.caract_fr, table_caract_details.caract_en, table_caract_details.caract_de, ';
$request_ad .= 'table_caract.annonces_id, table_caract.caract_alias, table_caract.caract_rec, ';
$request_ad .= 'table_transaction.transaction_id, table_transaction.transaction_fr, table_transaction.transaction_en, table_transaction.transaction_de ';
$request_ad .= 'FROM ';
$request_ad .= 'table_annonces ';
$request_ad .= 'JOIN table_transaction ON table_annonces.transaction_id=table_transaction.transaction_id ';
$request_ad .= 'JOIN table_type ON table_type.type_id=table_annonces.type_id ';
$request_ad .= 'JOIN table_caract ON table_caract.annonces_id=table_annonces.annonces_id ';
$request_ad .= 'JOIN table_caract_details ON table_caract_details.caract_alias=table_caract.caract_alias';

Je viens également de remarquer que j'ai commis des erreurs de frappe:


TABLE_ANNONCES
/// annonces_id /// type_id /// transaction_id (et non pas caract_id)


Et revoici une exemple de while:

// On scanne la base de données
while ($data = mysql_fetch_array($result_ad))
{
// On affiche les données
echo '<div id="content">';
echo ''.htmlentities(trim($data['transaction_'.$lang.''])).'<br clear="all" />';
echo ''.htmlentities(trim($data['type_'.$lang.''])).'<br clear="all" />';
echo ''.htmlentities(trim($data['caract_'.$lang.''])).'<br clear="all" />';
echo '</div>';
}

Ce qui m'affiche:

Achat
Appartements
Nombre de pièces

Achat
Appartements
Cuisine équipée

et non pas:

Achat
Appartements
Nombre de pièces
Cuisine équipée

Je dois modifier mon while de sorte qu'il m'affiche les données de la table table_caract_details avec les autres données (Achat, Appartements) sans qu'il réaffiche à chaque fois celle-ci.

Merci

Dernière modification par Maximeus (30-04-2010 08:00:54)

Hors ligne

#8 30-04-2010 08:31:20

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : Soucis d'affichage de données d'une db mysql

C'est pas encore ça .... il manque la précision du php --> [ code=php] j'ai édité ton post...

Ensuite, c'est quoi ces concatenations ??

echo ''.htmlentities(trim($data['caract_'.$lang.''])).'<br clear="all" />';

Correct :

echo htmlentities(trim($data['caract_'.$lang.''])).'<br clear="all" />';

Enfin, ne donne pas "un exemple de while" mais TON while !!... et regarde du coté du " SELECT DISTINCT "


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

Pied de page des forums