galerie photo a la bidouille

Eléphanteau du PHP | 31 Messages

05 févr. 2008, 18:34

Bonjour à tous
Alors voila j'ai fait une galerie de photos plus précisement des motifs que je propose mais c'es fait un peut à la bidouille, mais ca marche. J'aimerais qu'on me dise si je peut améliorer se système qui reste cependant très simple. Mon doute provient des modulos que j'utilise.
<div id="principale">
	Voici les motifs que je vous propose
	<br />
	
	<?php
		$link=mysql_connect("localhost","root","")  //Connexion a phpmyadmin
		or die("A pas marché : ".mysql_error());
		
		mysql_select_db("creapassion");  		//Selection de la bdd
		
		$requete="SELECT * FROM `motif` WHERE `mot_affich` = \"oui\" order by \"mot_cat\";";
	//	echo $requete;
		
		$resultat=mysql_query($requete);	//Execution de la requete
		
		echo "<br />";
		
		$i=0;
		echo "<table><tr>\n";
		while($ligne=mysql_fetch_assoc($resultat))
		{			
			if($i % 2 == 0)
			{
			echo "<tr>";
			}
			echo "<td>\n";
			echo "<a href=\"",$ligne['mot_img']," \"><img src=\"",$ligne['mot_vignette'],"\" /></a> &nbsp;\n</td>";	//Affichage du motif avec lien sur la taille normal
			
			echo "<td>";
			echo $ligne['mot_nom'];		//Nom du motif
			echo "\n</td>";
			if($i % 2 == 1)
			{
			echo "</tr>";
			}
			$i++;
		}
		echo "</tr></table>\n";
	?> 

</div>
Merci pour vos reponses.
you are bad

Eléphant du PHP | 445 Messages

05 févr. 2008, 18:45

Salut.

Juste 2/3 petite choses :

1. La concaténation de chaine de caractères c'est le . (pas ,)

2. Tu n'as pas besoin de mettre un <tr> avant ton while car (0%2=0)
Pareil pour celui apres le while.

3. Apres ta boucle, tu dois afficher 2 cellules vides (image+nom) si il y a un nombre impair de photos
if($i%2==0)
echo "<td>&nbsp;</td><td>&nbsp;</td></tr>" ;
4. Il est conseille de mettre un attribut alt="" a toute les images.

Eléphanteau du PHP | 31 Messages

05 févr. 2008, 19:00

Merci pour les "," à la place des "." je n'avais pas fait attention à ca. Pourquoi n'y avait-il pas d'erreure ?

J'avais justement des doutes sur les balises "<tr>" je te remercie de la précision.
Effectivement j'avais bien deux espaces qui apparaissait quand j'ai mis un nombre impair de photos (par chance j'ai un nombre pair :) ) mais erreure corrigé.

Sachant que je n'ai pas rentrée les dimensions des photos avec les attributs width et height (je sais je sais c'est pas bien) est-ce vraiment utile de mettre l'attibut alt ? car si la photo ne s'affiche pas le texte ne prendra pas la place de la photo.

Je te remercie pour ces correction. Et si tu pouvais répondre a mes quelques questions restante en suspant.
you are bad

ViPHP
AB
ViPHP | 5818 Messages

05 févr. 2008, 19:41

Merci pour les "," à la place des "." je n'avais pas fait attention à ca. Pourquoi n'y avait-il pas d'erreur ?
Il me semble que c'est supporté, mais prend l'habitude de mettre des points.
Sachant que je n'ai pas rentrée les dimensions des photos avec les attributs width et height (je sais je sais c'est pas bien) est-ce vraiment utile de mettre l'attibut alt ? car si la photo ne s'affiche pas le texte ne prendra pas la place de la photo.
Cela n'a rien à voir. alt doit comporter un texte alternatif, une légende pour ceux qui ne voient pas la photo qui est affichée. Si tu ne mets pas cette balise ton code ne sera pas valide xhtml. Eventuellement tu peux mettre alt="" ou alt="photo diaporama" par exemple.

Si tu ne mets pas de dimensions à tes photos (width et height) ta page risque de faire l'accordéon lors de l'affichage, le temps que tes photos se chargent. En indiquant des dimensions cela réserve l'espace d'affichage.

Eléphanteau du PHP | 31 Messages

05 févr. 2008, 20:10

Oki merci ces précisions
Je met normalement toujours des points et non des virgules je n'ai pas du faire attention cette fois là.

je ne savais pas que le fait de ne pas mettre le alt enlevé la validation du xhtml je vais donc de ce pas corigé toutes mes pages :(.

Ma page ne fait pas l'accordeon car j'ai placé des division avec des tailles respective est la div=pincipal avec un overflow:auto; mais va falloir que j'y pense quand même au cas ou des gens n'affiche pas les photos.

Sur ces quelques remarque je met le topic en resolu mais si vous avz toujours des remarque encore plus constructives n'hésitez pas.
you are bad

Eléphant du PHP | 445 Messages

05 févr. 2008, 20:31

Pour le alt="" ce n'est pas obliger mais juste une bonne habitude à prendre, tout comme le <br />.

Je pourrais aussi te dire de n'essayer que d'utiliser les simple quote.
Pour l'instant, cela ne change pas grand chose mais quand tu attaqueras des programmes un peu plus lourd, tu y gagneras en temps d'execution.

Faut juste avoir les bonnes habitudes les plus tot possible.

Eléphanteau du PHP | 31 Messages

06 févr. 2008, 12:03

Oki merci pour cette nouvelle remarque mais pourrais tu me dire ou je doit utilisé les simples quotes car tu ne me donne pas d'exemple. Etant nouveau dans la programmation php je ne connaît pas encore grand chose mon domaine à moi c'est plus les réseaux et leur sécurité (firewall, routeur...).

Je continue de paufiné mon code sachant que j'aimerais bien être aux normes pour que le site de l'association soit nikel le plus rapide possible et ma note de stage la meilleur :).
you are bad

Eléphant du PHP | 445 Messages

06 févr. 2008, 17:15

Voici quelques règles que j'applique (elle ne sont pas les même pour tout le monde, il s'agit la plupart du temp d'un compromis entre lisibilité/rapidité d'execution).

* Utiliser autant que possible des simple quote (Je n'utilise les double quote uniquement pour les caractères speciaux \r \n \t ...)
* Du fait de l'utilisation de simple quote, sortir les variables des chaines de caractères.
* Plusieurs echo avec de petites chaines de caractère sont plus rapide qu'un seul echo avec un grand pavé de texte

Edit : Je pense qu'en creant un site valide XHTML et CSS, tu y gagneras sur ta note.

ViPHP
AB
ViPHP | 5818 Messages

06 févr. 2008, 17:20

Quand tu utilises php pour afficher du texte et qu'il n'y a pas de variables à interpréter, inutile de mettre des doubles quotes. On y gagne très légèrement car PHP ne cherche pas à interpréter ce qu'il y a entre simple quote. Exemple tu peux faire echo '<tr>' à la place de echo "tr"; Par contre si tu veux que tes retours lignes soit pris en compte il faut des doubles quotes ex : echo "<td>\n"; ou echo '<td>'."\n";
(au passage cela marcherait aussi bien si tu ne mettais pas ces retours ligne)

Enfin tant que tu n'a pas des tonnes de code dans ton script la différence est imperceptible. En plus des corrections déjà apportées, prend simplement soin de mettre des alt dans tes images pour avoir un code valide.

EDIT j'avais pas vu la réponse de h0_noMan qui va dans le même sens

Eléphanteau du PHP | 31 Messages

06 févr. 2008, 17:23

Oki c'est pris en note.
Pour les echo je n'en fait pas des trop grand je pense mis à part pour l'affichage de photo mignature avec des liens sur les tailles normales.

Je ne comprend pas ta phrase :
* Du fait de l'utilisation de simple quote, sortir les variables des chaines de caractères.
Pour la note je pense aussi qu'être aux normes soit un plus c'es pour cela que je demande des conseils, coté CSS ca devrait être bon c'est un petit fichier à part avec pas grand chose à l'intérieur.

EDIT : J'ai écrit mon message en même temp que AB maintenant j'ai compris la phrase je vous remercie pour ces explications je continue de modifier mes codes.
Pour les \n je les utilise un peut pour que le code source soit un peut plus lisible lors de l'affichage du coté client c'est tout.
Modifié en dernier par Bad_trips le 06 févr. 2008, 17:27, modifié 1 fois.
you are bad

Eléphant du PHP | 445 Messages

06 févr. 2008, 17:26

Je ne comprend pas ta phrase :
* Du fait de l'utilisation de simple quote, sortir les variables des chaines de caractères.
Le mieux pour t'expliquer c'est un exemple :
$maChaine = "Bonjour" ;

echo "$maChaine tout le monde"; // Affiche Bonjour tout le monde
echo '$maChaine tout le monde'; // Affiche $maChaine tout le monde

Eléphanteau du PHP | 31 Messages

06 févr. 2008, 17:30

Derniere petite question :

peut-on faire :
echo '$maChaine contient'."$maChaine";
Et avec des chaines plus longue je vais à la ligne sans mettre de <br /> pour que cela s'affiche a la suite ?
you are bad

Eléphant du PHP | 445 Messages

06 févr. 2008, 17:34

Cela fonctionne.
Mais il vaux mieux sortir la variable de la chaine.
echo '$maChaine contient'.$maChaine ; 

Eléphanteau du PHP | 31 Messages

06 févr. 2008, 17:37

Oui j'suis bête question carement idiote lol le pire c'est ce que je fais a chaque foi j'vous remercie pour toutes ces explications. j'en est fini sur les echo et la partie affichage des images dans les normes ;) .
Mille merci.
you are bad