Se connecter / S'enregistrer
Votre question

créer une galerie simple PHP/MYSQL

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
15 Septembre 2007 23:48:59

Bonjour,
Avant, je tiens à vous signaler que je suis très débutante en php/mysql alors soyez quelques peu indulgent. Merci.

Voilà j'ai un souci. Sur mon site crée en php/mysql, j'ai créé un tableau d'images de 10 sur 8 et lorsque qu'on clique sur une case du tableau montrant une image, celle-ci s'ouvre dans une autre page et elle permet de faire la visualisation une par une des autres images grâce aux boutons suivant et précédent. Or, le problème est que cela se défilant se fait grâce à une boucle qui prend en charge la numérotation des photos.
Voici , le code pour mieux comprendre:

page contenant le tableau de toutes mes images:
<?php
include('accesAikido.php');// appel le fichier permettant de se connecter à la base de donnée
?>

<html>
<head>
<title> image </title>
<link href="feuille.css" rel="stylesheet" type="text/css">
</head>
<body background="image filigrane3.bmp">
<font size="6" color="red"> <b><center> <br>
<div>
<p> Images </p>
</div>
</center></b></font>
<br><br>

<table border="1"cellspacing="0" align="center"> <!--//cellspacing = spécifie l'espace en pixels entre les cellules d'un tableau -->
<?php
for ($i=0; $i<8; $i++)
{
echo "<tr>";
for ($j=0; $j<10; $j++)
{
$numero=330+$i*10+$j; //330 est le numéro de la 1ère photo ,$i c le nbre de ligne du table, et $j la largeur
echo "<td><a href=\"frm_LienImage.php?numero=".$numero."\"><img src=\"Photoaikido_".$numero."[1].JPG\" width=\"60\" height=\"50\" border=\"0\"></a></td>"; // 330 car c'est le nombre minimun d'image, $i c'est le numéro de ligne, et $j c'est le nombre de colonne
}
echo "</tr>";
}
?>
</table>
</body>
</html>



et voici la page qui permet de voir les images une par une :

<?php
include('accesAikido.php');//appel au fichier contenant les méthodes permettant de faire appel à la base de donnée
$numero = $_GET['numero'];
?>
<?php
include('menuadmin.php');//appel lefichier contenant les paramètres du menu administrateur
?>

<html>
<head>
<title>lien image</title>
</head>
<br>
<body background="image filigrane3.bmp">
<center>
<?php
echo "<img src=\"Photoaikido_".$numero."[1].JPG\" border=\"0\">";
?>
<br><br>
<table>
<tr align="center">
<td><b>
<input type="button" name="Cmd_Precedente" value="Précédente" onClick="
<?php
if ($numero <=330)
{
echo "window.alert('Il n\'y a plus d\'image')";
}
else
{
echo "window.location='frm_LienImage.php?numero=".($numero - 1)."'";
}
?>">

      
<input type="button" name="Cmd_Suivante" value="Suivante" onClick="
<?php
if ($numero >=410 )
{
echo "window.alert('Il n\'y a plus d\'image')";
}
else
{
echo "window.location='frm_LienImage.php?numero=".($numero + 1)."'";
}
?>">
</b></td>
</tr>
</table>
</center>
</body>
</html>


Mais, mon souci s'est que le site est destiné à des personnes non informaticiennes, donc il ne faut pas qu'elle se charge de mettre les photos à jour en devant les renommer ou changer la numérotation dans les boucles. Par conséquent, je voudrais faire une galerie mais je n'y arrive pas beaucoup. En effet,il m'affiche strictement rien.

Voici son code:
<?php
echo "<?php xml version=\"1.0\" encoding=\"iso-8859-1\"?".">";
?>
<html>
<head>
<title> Ma galerie d'images </title>
<script type="text/javascript">
<!--
//ouvre l'image dans une popup
function ouvrirImage(url, height, width){
window.open(url,",'height='+height+',width='+width+',toolbar=no,menubar=no,status=no,resizable=yes',");
}
//-->
</script>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
</head>
<body>
<h1> Ma galerie d'images </h1>
<?php
include('accesAikido.php');
// on récupère le nb d'image total
$sql = "select count(*) as nb from galerie_image;";
$resultat = mysql_query($sql) or die ("La requête \"$sql\" n'a pas pu être s'exécuter!");

$val = mysql_fetch_array($resultat);
$nb_images_tot = $val['nb'];

//s'il n'y a aucune image, inutile de continuer le traitement de la base
if (!$nb_images_tot){
echo "il n'y a aucune image dans la base de donnée";
}
else {
//on récupère les paramètres passé dans l'url

if ($_GET['image'])
$image_debut = $_GET['image'];
else
$image_debut = 0;

$i = 0 // var qui permet de savoir le nb d'image qu'il figure sur une ligne;

$sql = "select * from galerie_image limit $image_debut, $nb_images_page;";
$resultat = mysql_query($sql) or die ("La requête \"$query\" n'a pas pu s'éxécuter!");

?>

<table width="100%" border="0">
<?php
while($val = mysql_fetch_array($resultat)) {
if (!($i++%$nb_images_ligne))
echo "<tr>\n";
?>

<td> <a href="javascript:o uvrirImage('<?php echo $val['Image_Normal_Url']?>, <?php echo $val['Hauteur_Nb']?>, <?php echo $val['Largeur_Nb']?>);">

<img src="<?php echo $val['Image_Mini_Url']; ?>" alt="<?php echo $val['Commentaire_Lb'];?>" /> </a></td>
<?php
if (!($i%$nb_images_ligne)) echo "</tr>/n";
?>
</table>
<p style="text-align:center;">

<?php
//on affiche maintenant la navigation entre les pages

if ($image_debut){
$image_prec = $image_debut - $nb_images_pages;
?>
<a href="?image=<?php echo $image_prec;?>"> <<< Précédentes </a>
<?php
}
$j = 0;
while($j*snb_images_page <= $nb_images_tot) {
if ($j*$nb_images_page == $image_debut) {
$m = $j+1;
echo $m." ";
$j++;
}
else {
?>
<a href="?image=<?php echo $j*$nb_images_page;?>"> <?php echo $j+1;?>  </a>
<?php
$j++;
}
}

if ($image_debut + $nb_images_page <= $nb_images_tot) {
$image_suiv = $image_debut + $nb_images_page;
?>
<a href="?image=<?php echo $image_suiv;?>">Suivantes >>></a>
<?php
}
}

mysql_close();
?>
</p>
</body>
</html>

Il s'agit d'un script qu'un ami m'a passé mais cela ne fonctionne pas. De plus, comment fais-ton pour renseigner sa table avec les liens vers nos images? Doit-on les stockées dans un dossier spécifique ou pas?

Merci de prendre le temps de me lire et de me répondre.
P.S. Je sais que le code est un peu long mais cela aide parfois mieux à comprendre.

Autres pages sur : creer galerie simple php mysql

a c 232 L Programmation
17 Septembre 2007 09:37:30

Salut,

Je n'ai pas très bien compris quel était ton problème en fait.

Mais je peux te répondre pour les liens vers tes images dans la base de données.
Le mieux c'est de respecter une certaine nomenclature, et aussi de les mettre dans le même dossier, mais bon c'est pas obligatoire.

Imaginons, que à la racine de ton site, tu as un dossiers images dans lequel tu mets toutes les photos, tu pourrais soit insérer dans la base de données une colonne avec comme nom "lien" (par ex), et insérer dedans pour tes images : images/image1.jpg, images/image2.gif, etc...

Ainsi, tu sauras où récupérer ton images. Mais si tu les mets toutes dans le dossier images, tu n'est pas obligée de spécifier 'images' au début du nom.
17 Septembre 2007 20:42:25

Bonjour,

ok mais faut-il employer un include dans le page config.php (page faisant appelle à la base de donnée) ou dans ma page galerie.php?

En faites, je veux créér une galerie d'images mais celle que je fais ne marche pas elle m'affiche rien.

Merci pour votre aide
Contenus similaires
a c 232 L Programmation
17 Septembre 2007 21:31:06

Non, pas d'include, car ton image existe vraiment, donc tu l'affiches comme n'importe quelle page.

<img src="$lelienrecupere" />

(si j'ai bien compris ce que tu demandais)
17 Septembre 2007 22:49:07

Bonsoir,
merci de vouloir m'aider mais la galerie ne marche toujours pas.
Je reexplique plus correctement car c'est vrai qu"en relisant
c'est un peu fouilli mon truc.

Je veux créer une galerie d'images où la personne chargée de gérer le site que je suis en train de réaliser
(et qui n'a aucune compétence) puisse manipuler la gestion
de ces images aisément.

Ainsi, j'ai crée une table galerie_image dans ma base
de donnée dont voici le code:
CREATE TABLE `galerie_image` (
`Image_Id` int(11) NOT NULL auto_increment,
`Image_Mini_Url` varchar(150) NOT NULL default '',
`Image_Normal_Url` varchar(150) NOT NULL default '',
`Hauteur_Nb` int(11) NOT NULL default '0',
`Largeur_Nb` int(11) NOT NULL default '0',
`Commentaire_Lb` varchar(150) NOT NULL default '',
PRIMARY KEY (`Image_Id`),
FULLTEXT KEY `Image_Normal_Url` (`Image_Normal_Url`),
FULLTEXT KEY `Image_Normal_Url_2` (`Image_Normal_Url`)


Ensuite, j'ai créé un dossier intitulé Site, une page
permettant la connection avec ma base
(accesAikido.php) et une autre page intitulé
galerie.php pour afficher les images dont voici le code:

<?php
echo "<?php xml version=\"1.0\" encoding=\"iso-8859-1\"?".">";
?>
<html>
<head>
<title> Ma galerie d'images </title>
<script type="text/javascript">
<!--
//ouvre l'image dans une popup
function ouvrirImage(url, height, width){
window.open(url,",'height='+height+',width='+width+',toolbar=no,
menubar=no,status=no,resizable=yes',");
}
//-->
</script>
<!--<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>-->
</head>
<body>
<h1> Ma galerie d'images </h1>

<?php
include('accesAikido.php');

// on récupère le nb d'image total
$sql = "select count(*) as nb from galerie_image;";
$resultat = mysql_query($sql) or die ("La requête \"$sql\" n'a pas pu être s'exécuter!");

$val = mysql_fetch_array($resultat);
$nb_images_tot = $val['nb'];

//s'il n'y a aucune image, inutile de continuer le traitement
de la base
if (!$nb_images_tot){
echo "il n'y a aucune image dans la base de donnée";
}
else {
//on récupère les paramètres passé dans l'url

if ($_GET['image'])
$image_debut = $_GET['image'];
else
$image_debut = 0;

$i = 0;
// var qui permet de savoir le nb d'image qu'il
figure sur une ligne;

$sql = "select * from galerie_image limit $image_debut,$nb_images_page;";
$resultat = mysql_query($sql) or die ("La requête \"$query\" n'a pas pu s'éxécuter!");

?>

<table width="100%" border="0">
<?php
while($val = mysql_fetch_array($resultat)) {
if (!($i++%$nb_images_ligne))
echo "<tr>\n";
echo"\n";
?>
<td> <a href="javascript:o uvrirImage('<?php echo $val['Image_Normal_Url']?>',
<?php echo $val['Hauteur_Nb']?>, <?php echo $val['Largeur_Nb']?>);">

<img src="<?php echo $val['Image_Mini_Url']; ?>" alt="<?php echo $val['Commentaire_Lb'];?>"/></a></td>
<?php
if (!($i%$nb_images_ligne)) echo "</tr>\n";
}
if ($i%$nb_images_ligne) echo "</tr>\n";
?>
</table>
<p style="text-align:center;">

<?php
//on affiche maintenant la navigation entre les pages

if ($image_debut){
$image_prec = $image_debut - $nb_images_pages;
?>
<a href="?image=<?php echo $image_prec;?>"> <<< Précédentes </a>
<?php
}
$j = 0;
while($j*$nb_images_page <= $nb_images_tot) {
if ($j*$nb_images_page == $image_debut) {
$m = $j+1;
echo $m." ";
$j++;
}
else {
?>
<a href="?image=<?php echo $j*$nb_images_page;?>">
<?php echo $j+1;?>  </a>
<?php
$j++;
}
}

if ($image_debut + $nb_images_page <= $nb_images_tot)
{
$image_suiv = $image_debut + $nb_images_page;
?>
<a href="?image=<?php echo $image_suiv;?>">Suivantes >>></a>
<?php
}
}

mysql_close();
?>
</p>
</body>
</html>


Enfin, j'ai crée un dossier où sont rangés
les images que je souhaite affichés.
Mais pour insérer un lien dans la
table galerie_image je ne vois pas
du tout comment faire.
J'espère que c'est mieux expliqué
et merci encore de m'aider.
a c 232 L Programmation
17 Septembre 2007 23:23:09

Et bien, actuellement, elle est bien faite ta table, vu qu'il y a un "image_normal_url" et "image_mini_url", c'est dans ces deux champs que tu vas dire où se situent les images, avec son répertoire, son nom et son extension.

Tu insèrerais par exemple : images/monimage.jpg
18 Septembre 2007 18:44:43

Bonjour,
merci donc je renseigne les champs directement de la table mysql et non dans une de mes pages php? Je demande car étant débutante en php je trouve cela un peu bizarre mais bon dans la programmation il faut pas se poser des questions ... Enfin, j'essaye ce soir ce conseil et merci encore de votre aide
18 Septembre 2007 21:11:30

rebonsoir,
heu désolé mais vous allez dire que je suis nulle mais je ne vois pas comment faire.
Est-ce que je dois faire appel à un lien ou pas? Moi, j'avais marqué ceci:

<td> <a href="javascript:o uvrirImage('<?php echo $val['Image_Normal_Url']?>',
<?php echo $val['Hauteur_Nb']?>, <?php echo $val['Largeur_Nb']?> );">

<img src="<?php echo $val['Image_Mini_Url']; ?>" alt="<?php echo $val['Commentaire_Lb'];?>"/></a></td>


est-ce que c'est la valeur de $val['Image_Mini_Url'] que je dois changer ou bien rajouter une ligne de code?

désolé mais je galère vraiment
a c 232 L Programmation
19 Septembre 2007 09:27:26

Bonjour,

Désolé pour le retard.
En fait, l'avantage de la mettre dans la base de données vous permet de ne le changer qu'à un seul endroit si votre nom d'image change par exemple.
Alors que si vous entrez en dur l'URL de l'image, vous devrez la changer dans chaque fichier qui utilise cette image.

Maintenant, je n'ai pas trop compris ce que vous vouliez dans le deuxième message. Vous voulez faire quoi là ?
19 Septembre 2007 11:15:30

Bonjour,
en faites je ne comprends pas comment mettre mon dossier image dans le champ Image_Mini_Url et Image_Normal_Url au sein de la base de donnée. Il n'y a pas de champ spécifique juste des blob, int, boolean ...
C'est là que je suis complètement larguée
J'espère vous avez avoir un peu éclairci. Sinon, serait-il possible de communiquer par msn comme cela je pourrais faire des imprimes écrans et vous montrez exactement où je pèche.
Merci encore
a c 232 L Programmation
19 Septembre 2007 12:39:12

Bonjour,

Je vous passe mon mail par MP.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS