Page 1 sur 1

Problème d'affichage dans ma page php

Posté : 08 juin 2008, 12:19
par criblevibes
Bonjour,

Il s'agit la de mon premier post et de mes débuts dans le monde du php.

J'ai crée deux tables dans ma base : news et musiques

Je souhaite que lors de l'affichage d'une news les musiques liés a la news s'affiche en dessous de la news

Dans ma table news j'ai :

Id
Titre
Auteur
Contenu
time

Dans la musique

idmu (l'id de la musique)
Titre
Artiste
Genre
URL (pour le téléchargement)
Idnews (utilie pour faire le lien entre les deux tables)

Mon code php pour la boucle article


	<?php
mysql_connect("localhost", "root", "root");
mysql_select_db("blog");
// On récupère les musiques en rapport avec l'article
		$retour2 = mysql_query('SELECT * FROM musiques news WHERE idnews.musiques=titre.news');
	        $donnees2 = mysql_fetch_array($retour2);
?>


Puis dans la bonne balise

<div class="metaaudio">
	<?php echo $donnees2['url']; ?>								
</div>	

J'ai deja une autre boucle pour afficher les news peut etre que ca rentre en conflit??

Merci d'avance pour vos reponses

Posté : 08 juin 2008, 12:31
par Ryle
Il y a une erreur de syntaxe dans ta requête... exécute la sous MySQL/phpMyAdmin ou utilise la fonction mysql_error() lorsque mysql_query() retourne une erreur pour avoir plus d'information et la corriger plus facilement :)

Posté : 08 juin 2008, 12:41
par criblevibes
J'ai changer la syntaxe SQL ne me trouve plus d'erreur mais en me retourne pas d'info

Je vous envois tout mon code php peut etre que vous trouverez l'erreur.

<?php
mysql_connect("localhost", "root", "root");
mysql_select_db("blog");
// On récupère musiques
				$retour2 = mysql_query('SELECT * FROM musiques, news WHERE musiques.idmu = news.id');
				$donnees2 = mysql_fetch_array($retour2);
?>

<body>

	<div id="container">
											
	<?php
				mysql_connect("localhost", "root", "root");
				mysql_select_db("blog");
				// On récupère les 5 dernières news
				$retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 5');
				while ($donnees = mysql_fetch_array($retour))
				{
			?>					
<div class="post">

			
			<h1 class="title"><?php echo $donnees['titre']; ?></h1>
			<div class="content">
				<div class="illustration-2"><img src="el73_fichiers/rafale.jpg" alt="Pledge" title="pledge" width="80" height="80"></div>
									<?php

						$contenu = nl2br(stripslashes($donnees['contenu']));
						echo $contenu;
					?>			</div>
			<div class="metaaudio">
							<?php echo $donnees2['urlmu']; ?>					
	
			</div>
		</div>							
	<?php
} // Fin de la boucle des news
?>		

Posté : 08 juin 2008, 13:14
par Aureusms
Ect ce que cela ne serait pas plus simple :

Code : Tout sélectionner

SELECT * FROM musiques, news WHERE musiques.idmu = news.id ORDER BY menu.id DESC LIMIT 0,5
Note : utilise mysql_fetch_assoc dans ton cas, tu économiseras de la ressource serveur

Posté : 08 juin 2008, 13:20
par criblevibes
Je prend note je ferai la modification une fois le resultat obtenu

J'ai fais plusieurs modifications, le code que j'avais copié plus haut retournait toutes les musiques qui avaient le meme id qu'un article present dans la base

Or mon objectif est de retourner les musiques en rapport avec l'article conscerné j'ai donc tapé ce code la mais débutant oblige ca ne marche pas

	
<?php
// On récupère les 5 dernières news
	$retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 5');
	while ($donnees = mysql_fetch_array($retour))
	{
?>					
<div class="post">
	<div class="content">
		<?php
                       $contenu = nl2br(stripslashes($donnees['contenu']));
			echo $contenu;
	</div>
	<div class="metaaudio">
	<?php
		$retour2 = mysql_query('SELECT * FROM musiques, news WHERE musiques.idmu = news.id');// le probleme vient de la, il faut retourner uniquement l'article concerné et pas tous les articles ou la condition est possible
		$donnees2 = mysql_fetch_array($retour2);	
		while ($donnees2 = mysql_fetch_array($retour2))
		{
	?>				
	           <?php echo $donnees2['urlmu']; ?>
	<?php
               } // Fin de la boucle des musiques
        ?>
	</div>
</div>							
<?php
} // Fin de la boucle des news
?>	

Posté : 08 juin 2008, 13:25
par animithra
Bonjour.

Ce qui ne vas pas dans ce code de mon point de vue c'est la façon dont tu refermes tes appels à php pour placer des div par exemple.
<?php
// On récupère les 5 dernières news
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 5');
while ($donnees = mysql_fetch_array($retour))
{
?>
<div class="post">
Laisse ta balise php ouverte et place tes div dans des echo ou des print, ça sera déjà mieux je pense...

Pour le reste :
SELECT * FROM musiques, news WHERE musiques.idmu = news.id
tu lui demandes de sélectionner tous les éléments des tables musiques et news ou le lien entre les tables est un id.

Il est donc évident que si plusieurs articles correspondent, il te les retourne.

Si tu possèdes un id ou un champ précis, il faut que tu rajoutes un AND à la fin de tes conditions (par exemple AND news.id = ton id).

[EDIT] d'ailleurs en serait-il pas plus logique d'avoir WHERE musiques.idnews = news.id d'après la description de tes tables ?

bonne progra !