PHP-MySQL je suis perdu dans la réalisation de mon diaporama

pixls
Invité n'ayant pas de compte PHPfrance

25 avr. 2012, 12:04

Bonjour,
J'essaie de réaliser mon portfolio photographique et je me suis donc plongé dans les joies du PHP et mySQL ( sans ironie ;) ) pour créer une galerie. Étant autodidacte, j'aime apprendre par moi même et tout tenter pour solutionner les problèmes que je rencontre, mais là, à force de tester plein de choses sans succès, je suis perdu et je ne sais plus par où prendre mon problème.

Je vais tenter d'être le plus clair possible pour exposer mon problème ( qui, je pense, ne doit pas être si compliqué... ) :

Ce que je cherche à faire : une page "photographie.php" dans laquelle s'afficheront, sous forme de "billet", l'ensemble des informations relatif à la partie photographie ( donc utilisation d'une BDD regroupant chaque photos de présentation, dates de publication, textes descriptif de la galerie, etc ...). Je précise que j'ai deux autres pages fonctionnant sur le même principe de galerie : "multimédia.php" et "print.php" et que la BDD regroupe l'ensemble de ces 3 sections.

Mon problème ( je vais me concentrer uniquement sur la page "photographie.php" ) :

( Ce qui fonctionne :)
J'ai une boucle while sur un <section> qui m'affiche, sous forme de "billet" les données relatives à la section photographie. ( SQL faisant le tri pour ne conserver que les entrées concernant la photographie )
J'ai deux bases de données, la première contient toutes les informations de toutes les entrées ( photographie - multimédia - print ) sauf les photos de la galerie.
la seconde contient donc l'ensemble de toutes les photos destiné aux différentes galeries de chaque billet.

( Ce qui me prends la tête )
Le script java que j'utilise pour afficher les galeries, m'impose de traiter sous forme de <li></li> les photos de chaque galerie. Mais le nombre de photos, pour chaque "billet" est variable.
Je n'arrive pas à faire en sorte que, lorsque que je clique sur l'image d'un des "billets" pour lancer la galerie, les photos de la galerie concernée s'affichent en fonction du "billet" cliqué. ( pas évident d'être clair )

Voici le code HTML-PHP du <section> bouclé ( j'ai volontairement supprimé le superflu de mise en page et les infos non essentielles et j'ai commenté différents points pour expliquer ma logique ) :
<?php
	$band = $bdd->query('	SELECT *
							FROM BDD1
							WHERE icone_news=\'images/icone_photographie.jpg\'
							'); // Je prends toutes les entrées de BDD1 et filtre la catégorie avec son icone, ici "icone_photographie.jpg"
							
							while ($iband = $band->fetch()) // Je boucle le <section> en fonction du nombre d'entrée trouvées
							{
?>
		
	<section> 
	
		<div class="diaporama"> 
					
			<?php echo $iband['jour_news']?>
			<?php echo $iband['mois_news']?>
			<?php echo $iband['annee_news']?> // infos contenues dans BDD1
							
			<div>
					
				<ul id="Gallery<?php echo $iband['numnews_BDD2']?>"> //id nécessaire au script java pour différencier les galeries présentent sur la page. "numnews_BDD2" correspond au N° de la news dans la BDD1 mais qui sera lié avec la BDD2
						
					<?php
														
						$band2 = $bdd->query('	SELECT *
												FROM BDD2
												INNER JOIN BDD1
												ON BDD1.numnews_BDD2=BDD2.numnews
												'); // Je prends toutes les entrées de BDD2, je la joint dans BDD1 où la corespondance se fait grâce à la colonne numnews_BDD2 de la BDD1 et la colonne numnews de la BDD2 . Donc là en théorie, la variable $band2 doit contenir les photos+infos de la BDD2 qui sont liées en fonction du N° de numnews ??
													
						while ($iband2 = $band2->fetch()) // Je boucle le <li> en fonction du nombre de photos+infos 
						{
					?>
							
						<li>
							<a href="images/<?php echo $iband2['p_max']?>"> // "p_max" est la photo grand format dans BDD2
								<img src="images/<?php echo $iband2['p_min']?>" alt="<?php echo $iband2['numnews']?>" /> // "p_min" est la miniature et "titre", le titre de la photo
							</a>
						</li>
							
					<?php
						;}
							
						$band2->closeCursor(); // Termine le traitement de la boucle <li>
							
					?>
							
				</ul>
					
			</div>
				
		</div>
		
	</section>
	
<?php
	}

	$band->closeCursor(); // Termine le traitement de la boucle <section>

?>
Mon but est de pouvoir afficher les photos+infos contenu dans la BDD2 en fonction du N°de la galerie concernée

Par exemple mon premier billet aurait 5 photos, 5 miniatures et 5 titres pour la galerie, mon second billet en aurait 10, etc...
Je donne un N°aux différents billets ( "numnews_BDD2" dans BDD1 "numnews" dans BDD2 ) qui serait par exemple à 1 pour le premier billet, 2 pour le seconde, etc...
Comment faire pour que les infos( 5 photos, 5 miniatures et 5 titres de la BDD2 ) puisse être liées en fonction de <ul id="Gallery<?php echo $iband['numnews_BDD2']?>"> pour que quand je clique sur la miniature du billet 1, seul les 5 photos+miniatures+titres soient prisent en compte, et que lorsque je clique sur la miniature du second billet se soit les 10, etc... ??

Bon, je ne sais pas si je suis assez clair, mais si vous avez besoin de plus d'infos pour m'aider, n'hésitez pas à me demander.

J'espère vraiment que quelqu'un pourra m’aiguiller sur la solution à adapter.

Merci

pixls
Invité n'ayant pas de compte PHPfrance

25 avr. 2012, 12:13

J'ajoute que j'ai tenté un truc du style If else

Si le N°de id="Gallery<?php echo $iband['numnews_BDD2']?>" est égale à <?php echo $iband2['numnews']?>" alors afficher les entrées correspondantes ...

Mais soit j'ai mal codé la requète, soit ce n'est pas la bonne solution...

HELLPPPP lol

ViPHP
xTG
ViPHP | 7331 Messages

25 avr. 2012, 12:28

J'avoue ne rien avoir compris. :mrgreen:
Mais par contre il y a quelque chose qui me choque dans ton code.
Une première boucle pour filtrer par gallerie.
Une seconde qui ne filtre rien... Donc tu affiches dans chaque gallerie toutes les photos des autres galleries ?
Il manque selon moi une clause WHERE dans $band2 l'intervention d'une variable provenant de $iband.

pixls
Invité n'ayant pas de compte PHPfrance

25 avr. 2012, 12:46

Bonjour, effectivement, pas évident d'être clair pour un problème aussi précis.

Là je ne montre qu'une partie simplifiée du code ( justement pour ne pas mettre trop de bêtises lol ) mais j'ai effectivement mis un WHERE pour trier les données et ça fonctionne ( en tout cas ca ne bug pas lol..ce qui veux dire que ce n'est même pas sûr que ça fonctionne ). seulement ça m'affiche toujours l'ensemble des résultats de cette requête donc toute les photos des galeries alors que j'aimerais que ça n'affiche que les photos en fonction du N°de la galerie... lol

ViPHP
ViPHP | 2577 Messages

25 avr. 2012, 14:31

Il y a un peu trop de lecture pour moi.

Si tu as un problème avec le javascript qui impose un nombre de photo, c'est peut être qu'il faut générer le javascript en PHP pour fixer le nombre de photo.
Au lieu d'appelé un fichier ????.js, tu appelle le script ????.php?nb=??
Si le nombre prévu est 12, tu remplaces 12 par une variable que tu alimentes avec $_POST['nb']. Eventuellement tu regardes si 11 ou 13 n'est pas également utilisé dans le script.

Petit nouveau ! | 8 Messages

25 avr. 2012, 16:32

Merci pour ta réponse Mazarini, mais le script ne m'impose pas un nombre de photos, il m'impose d'utiliser des balise <li> pour construire les galeries.

Effectivement c'est plus compliqué à expliquer que je ne pensais.

Est-ce qu'une âme charitable pourrais m'aider par skype par exemple pour tenter d'élucider mon problème ??

Je suis pratiquement persuadé que mon problème est lié à PHP et mySQL, mais le montrer en live sera plus parlant ( par cam par exemple )
Si quelqu'un est intéressé d'aider un galérien, je suis preneur.