Base de données pour gallerie + pagination

Eléphant du PHP | 241 Messages

12 mars 2011, 16:43

Salut,
pas d'inquiétude, je ne te trouve pas paresseux ou autre ^^

Pour mieux voir le/les problèmes il faudrait le code complet de ta page, si ca te gène de le mettre ici tu peux me l'envoyer par mp si tu préfère.

Pour insérer les données dans la bdd, si tu as MySQL et phpmyadmin tu les rajoutes directement par là, où alors il faut faire une page d'administration en php.

Eléphanteau du PHP | 23 Messages

13 mars 2011, 11:59

salut, désolé pour le retard, voici le code

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Document sans titre</title> </head> <body> <?php /* mise en place du nombre d'affichage de galeries par page */ $nb_affiche = 5; //Nombre de galeries que l'on veut par page //On va afficher la/les galeries selon la page où l'on ce trouve if (isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page']>0) { //$start nous sert pour savoir où commence l'affichage des galeries selon la page où l'on est $start = $_GET['page'] * $nb_affiche - $nb_affiche; //On récupère la page sur laquelle on est, nécessaire lors de la pagination $page = $_GET['page'] } else { $start = 0; $page = 1; } /* ========================================================= */ ?> <?php //On prepare la requete SQL $req = $bdd->prepare("SELECT * FROM galerie ORDER BY id LIMIT :start,:nb_affiche"); $req->bindValue(':start',$start,PDO::PARAM_INT); $req->bindValue(':nb_affiche',$nb_affiche,PDO::PARAM_INT); $req->execute(); while ($donnees = $req->fetch()) { ?> <div class="galerie"> <h1><?php echo $donnees['titre_galerie']; ?></h1> <img src="galerie/<?php echo $donnees['img_principale']; ?>" alt="" /> <div class="vignettes"> <?php /*On affiche toutes les vignettes pour cette galerie On crée un tableau des vignettes grâce au séparateur barre | */ $tableau_vignettes = explode("|",trim($donnees['vignettes'])); for ($i = 0; $i < count($tableau_vignettes); $i++) { //On affiche chaque vignette dans une balise img ?> <img src="galerie/<?php echo $tableau_vignettes[$i]; ?>" alt="" /> <?php } ?> </div> <p> <?php echo $donnees['commentaire']; ?> </p> </div> <?php } $req->closeCursor(); ?> <?php //On met en place la pagination $req = $bdd->prepare("SELECT COUNT(*) AS nb_galerie FROM galerie"); $req->execute(); $nb_galerie = $req->fetch(); $nb_galerie = $nb_galerie['nb_galerie']; //On associe le nombre de galeries $nb_pages = ceil($nb_galerie / $nb_affiche); //On compte le nombre de pages par rapport au nombre de galeries que l'on veut par page ?> <p class="pagination">[ Page : <?php for ($i=1;$i<=$nb_pages;$i++) { if ($i == $page ) { ?> <span><?php echo $i; ?></span> - <?php } else { ?> <a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a> - <?php } } ?> ]</p> <?php $req->closeCursor(); ?> </body> </html>

Je me suis contenté de recopier ton code, sur une nouvelle page index.php...c'est probablement ma bdd qui n'est pas conforme, quand j'éxécute la page, elle est blanche, et safari n'affiche rien lorsque j'essaie de voir le code source.

Les fichiers sont dans un dossier "galeriePHP", dans le dossier html de Mamp
il y a un sous dossier "images" contenant les images petit et grand format
pour la base de donnée, j'ai crée une nouvelle bdd, importé ta requête en txt
j'ai ensuite crée 5 galeries, pas d'incidents signalés...comprends rien lol

je vais uploader des captures d'écrans de la partie admin, ma base de données ne doit pas être correcte

j'ai essayé un echo dans le body, en supprimant le reste, ça marche

c'est grave ?

Eléphanteau du PHP | 23 Messages

13 mars 2011, 12:04

Image
Image
Image
Image
Image
Image
Image
Image

les captures d'ecrans de mysql...

Eléphanteau du PHP | 23 Messages

13 mars 2011, 12:08

mon dossier images devrait se nommer "galerie"
correction faite
refresh
toujours rien

(café)

Eléphant du PHP | 241 Messages

13 mars 2011, 14:17

Salut,

En fait ton erreur c'est un peu de ma faute ^^'
A aucun moment tu ne fais de connexion à ta BDD (je pensais que tu l'avais déjà fait :roll:)

Donc, au tout début de ton traitement php, tu dois exécuter la connexion à ta BDD
//On initialise la connexion à la bdd
try
{
	$db_host = ""; //Lieu où est héberger la BDD

	$db_name = ""; //Nom de la BDD

	$db_login = ""; //Login de connexion à la BDD

	$db_mdp = ""; //Mot de passe de connexion à la BDD

	$bdd=new PDO("mysql:host=$db_host;dbname=$db_name",$db_login,$db_mdp);
}
catch(Exception $e)
{
	exit("<h1>Erreur de connexion à la BDD SQL</h1></body></html>");
}

Eléphanteau du PHP | 23 Messages

13 mars 2011, 15:05

ok merci

j'ai ajouté ce code, mais toujours rien
peut-être un problème de connexion

voila ce que j'ai mis
<?php 

//On initialise la connexion à la bdd
try
{
        $db_host = "localhost"; //Lieu où est héberger la BDD

        $db_name = "galeriebdd"; //Nom de la BDD

        $db_login = "root"; //Login de connexion à la BDD

        $db_mdp = "root"; //Mot de passe de connexion à la BDD

        $bdd=new PDO("mysql:host=$db_host;dbname=$db_name",$db_login,$db_mdp);
}
catch(Exception $e)
{
        exit("<h1>Erreur de connexion à la BDD SQL</h1></body></html>");
}
 
 
 ?>

l'adresse de la galerie :
http://localhost:8888/galeriephp/index.php


mais sur la page d'accueil de Mamp, je vois 8889 dans les paramètres de connexion à MySQL...

un problème de port non ?

Mamp n'est pas bien configuré...

Eléphant du PHP | 241 Messages

13 mars 2011, 16:19

Est-ce que ce message s'affiche sur la page ? Erreur de connexion à la BDD SQL

Si oui alors effectivement il y a un problème de connexion, sinon il arrive bien à la faire.

Eléphanteau du PHP | 23 Messages

13 mars 2011, 16:43

non aucun message, page blanche

Eléphant du PHP | 241 Messages

13 mars 2011, 17:06

Ok, donc à priori la connexion à la bdd est bonne.

Crée une nouvelle page vide et copie colle ceci :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Document sans titre</title>
</head>
<body>
<?php
try
{
	$db_host = "localhost"; //Lieu où est héberger la BDD

	$db_name = "galeriebdd"; //Nom de la BDD

	$db_login = "root"; //Login de connexion à la BDD

	$db_mdp = "root"; //Mot de passe de connexion à la BDD

	$bdd = new PDO("mysql:host=$db_host;dbname=$db_name",$db_login,$db_mdp);
}
catch(Exception $e)
{
	exit("<h1>Erreur de connexion à la BDD SQL</h1></body></html>");
}

$req = $bdd->prepare("SELECT * FROM galerie");
$req->execute();
while ($donnees = $req->fetch())
{
	echo $donnees['id'];
}
?>
</body>
</html>

Eléphanteau du PHP | 23 Messages

13 mars 2011, 17:38

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Document sans titre</title>
</head>

<body>

12345

</body>
</html>

voila ce que j'ai

12345...soit le nombre de mes galleries
étonnant

Eléphant du PHP | 241 Messages

13 mars 2011, 18:12

C'est déjà un bon point :D
Enfin bon, si cela marche, le reste devrait marcher aussi...et la j'arrive pas à trouver le problème ! #-o

Eléphanteau du PHP | 23 Messages

13 mars 2011, 18:19

pet être que je n'ai pas bien inséré le code de connexion à la base de donnée

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Document sans titre</title> </head> <body> <?php //On initialise la connexion à la bdd try { $db_host = "localhost"; //Lieu où est héberger la BDD $db_name = "galeriebdd"; //Nom de la BDD $db_login = "root"; //Login de connexion à la BDD $db_mdp = "root"; //Mot de passe de connexion à la BDD $bdd=new PDO("mysql:host=$db_host;dbname=$db_name",$db_login,$db_mdp); } catch(Exception $e) { exit("<h1>Erreur de connexion à la BDD SQL</h1></body></html>"); } ?> <?php /* mise en place du nombre d'affichage de galeries par page */ $nb_affiche = 5; //Nombre de galeries que l'on veut par page //On va afficher la/les galeries selon la page où l'on ce trouve if (isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page']>0) { //$start nous sert pour savoir où commence l'affichage des galeries selon la page où l'on est $start = $_GET['page'] * $nb_affiche - $nb_affiche; //On récupère la page sur laquelle on est, nécessaire lors de la pagination $page = $_GET['page'] } else { $start = 0; $page = 1; } /* ========================================================= */ ?> <?php //On prepare la requete SQL $req = $bdd->prepare("SELECT * FROM galerie ORDER BY id LIMIT :start,:nb_affiche"); $req->bindValue(':start',$start,PDO::PARAM_INT); $req->bindValue(':nb_affiche',$nb_affiche,PDO::PARAM_INT); $req->execute(); while ($donnees = $req->fetch()) { ?> <div class="galerie"> <h1><?php echo $donnees['titre_galerie']; ?></h1> <img src="galerie/<?php echo $donnees['img_principale']; ?>" alt="" /> <div class="vignettes"> <?php /*On affiche toutes les vignettes pour cette galerie On crée un tableau des vignettes grâce au séparateur barre | */ $tableau_vignettes = explode("|",trim($donnees['vignettes'])); for ($i = 0; $i < count($tableau_vignettes); $i++) { //On affiche chaque vignette dans une balise img ?> <img src="galerie/<?php echo $tableau_vignettes[$i]; ?>" alt="" /> <?php } ?> </div> <p> <?php echo $donnees['commentaire']; ?> </p> </div> <?php } $req->closeCursor(); ?> <?php //On prepare la requete SQL $req = $bdd->prepare("SELECT * FROM galerie ORDER BY id LIMIT :start,:nb_affiche"); $req->bindValue(':start',$start,PDO::PARAM_INT); $req->bindValue(':nb_affiche',$nb_affiche,PDO::PARAM_INT); $req->execute(); while ($donnees = $req->fetch()) { ?> <div class="galerie"> <h1><?php echo $donnees['titre_galerie']; ?></h1> <img src="galerie/<?php echo $donnees['img_principale']; ?>" alt="" /> <div class="vignettes"> <?php /*On affiche toutes les vignettes pour cette galerie On crée un tableau des vignettes grâce au séparateur barre | */ $tableau_vignettes = explode("|",trim($donnees['vignettes'])); for ($i = 0; $i < count($tableau_vignettes); $i++) { //On affiche chaque vignette dans une balise img ?> <img src="galerie/<?php echo $tableau_vignettes[$i]; ?>" alt="" /> <?php } ?> </div> <p> <?php echo $donnees['commentaire']; ?> </p> </div> <?php } $req->closeCursor(); ?> </body> </html>

en tout cas je suis très heureux de voir quelque chose sur ma page
12345, j'en ai eu des frissons
non on est sur la bonne voie
je suis confiant

Eléphant du PHP | 241 Messages

13 mars 2011, 18:23

Oh, je crois que je viens de voir le problème
Juste en dessous de la connexion à la BDD, il y a une erreur , il manque un ; à la fin de $page = $_GET['page']
<?php
/* mise en place du nombre d'affichage de galeries par page */
$nb_affiche = 5; //Nombre de galeries que l'on veut par page

//On va afficher la/les galeries selon la page où l'on ce trouve
if (isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page']>0)
{
        //$start nous sert pour savoir où commence l'affichage des galeries selon la page où l'on est
        $start = $_GET['page'] * $nb_affiche - $nb_affiche;

        //On récupère la page sur laquelle on est, nécessaire lors de la pagination
        $page = $_GET['page'] !!!!!!!!!!!!!!!!!! ICI IL MANQUE UN ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
else
{
        $start = 0;
        $page = 1;
}
/* ========================================================= */
?>

Eléphanteau du PHP | 23 Messages

13 mars 2011, 18:49

ça marche !!

un dernier truc, il y a un lien mort après la 5eme vignette
<div class="vignettes">
                        <img src="galerie/01-s.jpg" alt="" />
                        <img src="galerie/02-s.jpg" alt="" />
                        <img src="galerie/03-s.jpg" alt="" />
                        <img src="galerie/04-s.jpg" alt="" />
                        <img src="galerie/05-s.jpg" alt="" />
                        <img src="galerie/" alt="" />
                </div>
je dois surement corriger ma base de donnée non ?

en tout cas un grand merci pour tes efforts et ce code qui fonctionne à merveille
reste plus qu'à rendre les vignettes cliquables avec jquery
comme ici
http://www.alsacreations.com/xmedia/tut ... ie-jquery/

Eléphanteau du PHP | 23 Messages

13 mars 2011, 18:59

pour le lien mort, il y a un "pipe" en trop dans mes listes de vignettes...
corrigé