PHP|Débutant :: Forums

Advertisement

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

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

#1 10-10-2009 09:20:11

t14
Membre
Inscription : 10-09-2009
Messages : 96

lecture sur 2 tables et affichage

Bonjour,

Je souhaite afficher des éléments issues de 2 tables différentes. La première s'appelle "manifestation" et comporte un champ id qui est unique à chaque enregistrement. La deuxième s'appelle "upload" et comporte un champ id_liaison. Il peut y avaoir plusieurs champs id_liaison identique, et un id_liaison se rapporte automatiquement à un id de la table manifestation.
Donc, si j'affiche un enregistrement de "manifestation", je vais voir si il existe un id_liaison = à id. Dans ce cas, j'affiche aussi l'enregistrement de l'id_liaison.

Ce que j'ai écrit affiche les enregistrements de "manifestation" avec les enregistrements de "upload", autant de fois qu'il y a des enregistrements dans "upload". sad

$requete = 'SELECT * FROM manifestations, upload ORDER BY date ASC';     //--- le ORDER uniquement valable pour la table manifestation---
$result = mysql_query($requete,$link) or die ('Erreur : '.mysql_error() );
while($row = mysql_fetch_array($result))
{
        echo .nl2br($row['texte']).;  //---données venant de la table manifestation---
if ($id == $id_liaison) //---id venant de la table manifestation, id_liaison venant de la table upload---
  if (in_array($row['extension'], array( ".jpg", ".JPG", ".png", ".PNG", ".jpeg", ".JPEG", ".gif", ".GIF")))
    {
        echo '<a href ="http://xxxxxxxxxxx ' . $row['lien_fichier'] . '"><img src="http://xxxxxxxxxxxxxxxx ' . $row['lien_fichier'] . '"></a>'; //données venant de la table upload
    }
  else if (in_array($row['extension'], array( ".doc", ".DOC", ".pdf", ".PDF", ".txt", ".TXT")))
    {
      echo '<center><a href ="http://xxxxxxxxxxxx ' . $row['lien_fichier'] . '">Télécharger<br><img src="../../../commande.gif"></a>';
    }  
}
mysql_free_result($result);
exit;
?>

Je suis conscient que mon $requete est plutôt général, mais je ne sais pas comment l'écrire ????

Merci pour le coup de main .... neutral

Hors ligne

#2 10-10-2009 11:03:18

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

Re : lecture sur 2 tables et affichage

Salut,

Ta requete devrait prendre la forme de :


<?php
$requete="SELECT manifestation.id, manifestation.date manifestation.champ1 ,upload.id_liaison, upload.champ1
          FROM manifestation INNER JOIN upload ON manifestation.id=upload.id_liaison
          ORDER BY manifestation.date ASC"
;
?>
 

1- Regarde du coté des "JOIN" [INNER | LEFT | RIGHT | etc] afin de lier tes tables
2- Evite les noms de champs qui sont des fct php .... "date" est à proscrire par exemple


Alex


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

Hors ligne

#3 10-10-2009 14:45:31

t14
Membre
Inscription : 10-09-2009
Messages : 96

Re : lecture sur 2 tables et affichage

Merci Alnoss pour ton aide !!!! smile

J'ai testé ce que tu me proposes ! Malheureusement, il n'y a que les enhjregistrements de la table manifestation ayant une liaison avec la table upload qui s'affichent ....  hmm sad
Alors je cherche , je cherche .....

Hors ligne

#4 12-10-2009 07:32:29

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

Re : lecture sur 2 tables et affichage

Si tu suis la recommandation n°1 : [1- Regarde du coté des "JOIN" [INNER | LEFT | RIGHT | etc] afin de lier tes tables], tu devrais trouver sans soucis.


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

Hors ligne

#5 14-10-2009 17:51:50

t14
Membre
Inscription : 10-09-2009
Messages : 96

Re : lecture sur 2 tables et affichage

Merciiiii ......  big_smile J'ai trouvé ! OU presque !!!!! Il me reste un 'tit problème d'affichage .....
Suite à l'affichage du texte, le premier élément de la table upload affilié au texte de la table manifestation s'affiche en dessous, le tableau se ferme, et les autres éléments de upload affiliés au texte s'affichent également mais en dehors du tableau.

Je n'arrive pas à rentrer "les autres éléments" dans le tableau, et à les afficher l'un à côté de l'autre.  sad

Voici mon code :

$requete="SELECT manifestations.id, manifestations.jour , manifestations.heure ,manifestations.datefr ,manifestations.titre ,manifestations.texte , upload.id_liaison, upload.lien_fichier, upload.fichier, upload.extension
FROM manifestations LEFT JOIN upload ON manifestations.id=upload.id_liaison
ORDER BY manifestations.date ASC"
;
$result = mysql_query($requete,$link) or exit ('Erreur : '.mysql_error() );

$idEncours = 0;
while($row = mysql_fetch_array($result))
{
if( $idEnCours != $row['id'] )
{
echo '<table width="800px" border="1">';
echo '<tr>';
echo '<td align="center">'.nl2br($row['texte']).'<p>';
}
if ($idEnCours = $row['id_liaison']);

if (in_array($row['extension'], array( ".jpg", ".JPG", ".png", ".PNG", ".jpeg", ".JPEG", ".gif", ".GIF")))
{
echo '<center><a href ="http://xxxxxxx ' . $row['lien_fichier'] . '"><img src="http://xxxxxxx ' . $row['lien_fichier'] . '"></a></center>';
}
elseif (in_array($row['extension'], array( ".doc", ".DOC", ".pdf", ".PDF")))
{
echo '<center><a href ="http://xxxxx ' . $row['lien_fichier'] . '">Télécharger ou afficher le document<br><img src="../../../images/commande.gif"></a></center>';
}
echo '</td></tr></table><p>';
}
 

Merci

Hors ligne

#6 15-10-2009 08:31:23

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

Re : lecture sur 2 tables et affichage

P.S : les balises <center></center> ne sont plus valides...

Ensuite, sors le tableau de la boucle .... et vois ce que cela donne


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

Hors ligne

Pied de page des forums