afficher éléments de deux tables

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 éléments de deux tables

Re: afficher éléments de deux tables

par t671 » 15 oct. 2009, 16:17

Petit rappel :
Il existe deux types de balises en HTML :
  • Les balises classiques que l'on doit ouvrir PUIS femer. ex: <p> </p> <div> </div> <span> </span>
  • Les balises autofermantes. ex : <br /> <img src="..." />
  • Et... pas d'autre !
Comme te l'a déja signalé Dr@ke, l'opérateur permettant de tester une égalité en php s'écrit == (ou === dans le cas d'une égalité stricte sans transtypage de variables ou approximations du style 0=false ) et non =...

En révisant bien ces deux notions, tu devrais t'en sortir ^^
J'ai appliqué ce que tu me dis. La différence ce fait au niveau des "=".
- S'il n'y en a qu'un, le texte (enregistrement) de la table manifestation s'affiche avec un élément (image) de la table upload. Le tout dans le même cadre.
Ensuite, les autres éléments de upload associés sont affichés les uns en dessous des autres, et en dehors du tableau ....
- S'il y a 2 ou 3 "=", le texte (enregistrement) de la table manifestation s'affiche autant de fois qu'il y a et avec un élément (image) de la table upload. Donc si il y a trois éléments dans la table upload associé au texte "manifestation", ce texte s'affichera trois fois avec à chaque fois, un des éléments de upload associé !!!!

Dur, dur !!!!!!!!!

Re: afficher éléments de deux tables

par Kran » 14 oct. 2009, 22:10

Petit rappel :
Il existe deux types de balises en HTML :
  • Les balises classiques que l'on doit ouvrir PUIS femer. ex: <p> </p> <div> </div> <span> </span>
  • Les balises autofermantes. ex : <br /> <img src="..." />
  • Et... pas d'autre !
Comme te l'a déja signalé Dr@ke, l'opérateur permettant de tester une égalité en php s'écrit == (ou === dans le cas d'une égalité stricte sans transtypage de variables ou approximations du style 0=false ) et non =...

En révisant bien ces deux notions, tu devrais t'en sortir ^^

Re: afficher éléments de deux tables

par t671 » 14 oct. 2009, 18:59

Merciiiii ...... :D 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. :(

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

Re: afficher éléments de deux tables

par shizu » 10 oct. 2009, 22:00

Bonsoir,

Je pense que tu trouveras une solution en regardant du coté des LEFT JOIN http://dev.mysql.com/doc/refman/5.0/fr/ ... ation.html. Ca me parait la solution la plus simple sauf si tes 2 tables sont trop volumineuses.


++

Re: afficher éléments de deux tables

par dunbar » 10 oct. 2009, 16:52

Ceci:
if ($id == $id_liaison)
Cela ne devrait t'il pas être :?:
$id = (isSet($row['id']) ? $row['id'] : null);
$id_liaison = (isSet($row['id_liaison']) ? $row['id_liaison'] : null);
if ($id == $id_liaison)
Ton script comme ceci cela donne quoi ?
<?php
$requete = "SELECT ma.id, ma.texte, up.id_liaison
                 FROM manifestations ma, upload up
                 ORDER BY ma.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---
		$id = (isSet($row['id']) ? $row['id'] : null);
        $id_liaison = (isSet($row['id_liaison']) ? $row['id_liaison'] : null);

		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
		                }
		        elseif(in_array($row['extension'], array( ".doc", ".DOC", ".pdf", ".PDF", ".txt", ".TXT")))
		                {
		                        echo '<a href ="http://xxxxxxxxxxxx ' . $row['lien_fichier'] . '">Télécharger<br><img src="../../../commande.gif"></a>';
		                }
	       }


	}


?>

Re: afficher éléments de deux tables

par t671 » 10 oct. 2009, 10:14

Bonjour,

Effectivement, faute de frappe .... :)
Voilà ce que j'ai écrit :
$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 '<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 .... :roll:

Re: afficher éléments de deux tables

par Dr@ke » 09 oct. 2009, 18:17

C'est une faute de frappe, je suppose?
if ($id = $id_liaison)
Sinon au cas ou:
if ($id === $id_liaison)

afficher éléments de deux tables

par t671 » 09 oct. 2009, 18:11

Bonjour,

J'ai deux tables. Une "manifestations", et une "upload".
La table upload comprend un champs nommé id_liaison qui est égal à l'id de l'enregistrement correspondant de la table manifestation. Mais tous les enregistrements de la table manifestation non pas obligatoirement un fichier dans la table upload.

Si j'écris ceci :
$requete = 'SELECT * FROM manifestations, upload ORDER BY date ASC';
$result = mysql_query($requete,$link) or die ('Erreur : '.mysql_error() );
while($row = mysql_fetch_array($result))

tous les enregistrements de la table manifestation s'affichent autant de fois (et avec) qu'il y a d'enregistrements dans la table upload.

Si je rajoute une condition if ($id = $id_liaison) avant l'echo des éléments de la table upload, les éléments de la table manifestation s'affichent autant de fois qu'il y a d'éléments dans la table upload, sans les éléments de cette dernière. !!!????

Merci pour le coup de main !