Bonjour,
Voici déjà maintenant 1 bon mois que j'essaye de résoudre un problème via les tutoriels et les cours.
J'aimerais créer une galerie d'image en utilisant des informations qui proviennent d'une base de donnée avec PHP (en PDO pour des raison de code plus récent x) autant apprendre le dernier langage).
Voici ma première page de code :
(connexiondessins.inc.php)
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=nom_bdd;charset=utf8', 'users', 'mdp', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'/*, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION*/));
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
?>
sps.php
<?php
require_once("connexiondessins.inc.php");
$reponse = $bdd->query('SELECT categorie,titre,image,description FROM dessins WHERE categorie="sps" ORDER BY id DESC');
?>
<!DOCTYPE HTML>
<html>
<link href="mafavicon.png" rel="shortcut icon" title="crobara2bal" type="image/png" />
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Tout les dessins humouristique sur le SPS en bande dessinée. Ici !" />
<title>S.P.S / Toutes les catégories de dessins, crobar, B.D, sur le S.P.S</title>
<link href="css1.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="container">
<?php include("header.inc.php"); ?>
<?php include("menus.inc.php"); ?>
<div id="corpssps">
<a href="dessins.php" title="retourner aux catégories"><h2 class="titrevignette1">Catégories</h2></a>
<a href="sps.php" title="recharger la page"><h1 class="titre1">S.P.S</h1></a>
<div id="textesps">
<p class="texte2">blablabla...</p>
</div>
<?php while ($dessins = $reponse->fetch())
{
?>
<div class="cat1">
<?php echo '<span class="classtext1v">'.$dessins'categorie'].'</span>'; ?>
<br />
<?php echo '<span class="classtext2v">'.$dessins'titre'].'</span>'; ?>
<br />
<a href="selectionsps.php?categorie=<?php echo $dessins'categorie']; ?>&titre=<?php echo $dessins'titre']; ?>&titre=<?php echo $dessins'description']; ?>&image=<?php echo $dessins'image']; ?>"><img src="images/<?php echo $dessins'image'];?>" width="200" height="250" /></a>
</div>
<? } $reponse->closeCursor(); ?>
</div>
<?php include("footer.inc.php"); ?>
</div>
</body>
</html>
et voici ma page votreselectiondessinsps.php
<?php
require_once("connexiondessins.inc.php");
$req = $bdd->prepare('SELECT descriptif FROM dessins WHERE id="'.$_GET'id'].'"');
$req->execute();
$data = $req->fetch(PDO::FETCH_ASSOC);
?>
<!DOCTYPE HTML>
<html>
<link rel="shortcut icon" title="crobara2bal" type="image/png" href="mafavicon.png" />
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>SPS / voir</title>
<link href="css1.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="container">
<?php include("header.inc.php"); ?>
<?php include("menus.inc.php"); ?>
<div id="corpssports">
<a href="dessins.php" title="retourner aux catégories"><p class="titrevignette1">Catégories</p></a>
<a href="sps.php" title="recharger la page"><h1 class="titre1">S.P.S</h1></a>
<div id="textesports">
<?php echo '<span class="classtext1v">'.stripslashes($_GET'categorie']).'</span>'; ?>
<br />
<?php echo '<span class="classtext2v">'.stripslashes($_GET'titre']).'</span>'; ?>
<br />
<?php echo '<span class="classtext5v">'.stripslashes($_GET'description']).'</span>'; ?>
<br />
<?php echo '<span class="classtext5v">'.stripslashes($_GET'descriptif']).'</span>'; ?>
</div>
<br />
<img src="images/<?php echo $_GET'image']; ?>" width="800px" height="auto"/>
</div>
<?php include("footer.inc.php"); ?>
</div>
</body>
</html>
Pour expliquer mon soucis plus facilement, voici le site que je crée : ( actuellement en ligne ) www.crobara2bal.com
Lorsque j'accède à ma la page 'dessins' jusqu'à là aucun soucis, je séléctionne une catégorie au hasard ( comme exemple, sps )
Lorsque je suis dans ma page sps, il n'y a pas de soucis, tout s'affiche correctement, mais lorsque séléctionne un dessins au hasard de la catégorie sps,
certaines informations de plusieurs vingnette dessin sps n'affiche la description qu'à moitié ou pas du tout, pour les images le même problème, elle s'affiche une fois sur deux et mon titre ne s'affiche pas du tout :(.
Le $_GET m'avait été conseillé pour transférer les informations des vignettes de la bdd de la page sps.php, à ma page selectionsps.php sans avoir à créer une nouvelle page php pour chaque dessins.
Voici la structure de ma base de donnée "dessins" ou sont inséré toutes mes infos ( catégorie, titre, image, description, etc..)
-- Structure de la table `dessins`
--
CREATE TABLE IF NOT EXISTS `dessins` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`categorie` varchar(100) NOT NULL,
`titre` varchar(100) NOT NULL,
`image` varchar(100) NOT NULL DEFAULT 'formationspsv.jpg',
`description` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=77 ;
j'aurais vraiment besoin d'un coup de pouce pour avancer :s, je pense que mon code n'est pas bien rédigé et qu'il y à beaucoup d'erreur, je ne sais pas les situées et par quoi les remplacer, d'un tutoriels à un autre les techniques varies et je me perd totalement dans les explications...
(Si il vous est possible de me montrer des exemples visuels du code à corriger, il et toujours plus facile de comprendre avec un exemple :) )
Merci pour votre attention et votre aide.
Sincèrement.
Bonjour Crocro,
pour ta page index.php :
<?php include ("php/haut.php");
include ("php/menu.php");
<?php
if(isset($_GET'page'])) {
$page = $_GET'page'];
switch ($page) {
case 'accueil':
$pageok = "accueil.php";
break;
case 'liste_photos':
$pageok = "liste_photos.php";
break;
break;
default:
$pageok = 'accueil.php';
}
}
else {
$pageok = ("accueil.php");
}
include ("php/".$pageok);
include ("php/footer.php"); ?>
On récupère ce qui est passé dans l'URL et ensuite on le passe dans le switch (tu rajoute un case pour chaque page inclues).
Chaque page inclue en corps de page doit avoir la même div ex :
accueil.php
<div id="content">
//MON CONTENU
</div>
ensuite tu as une page categories.php par ex dans laquelle tu as un formulaire :
categories.php
<form name="form" action="#" method="POST">
<select name="categories">
//tu liste tes catégories en php
<option value="1">CATEGORIE 1</option>
<option value="2">CATEGORIE 2</option>
</select>
<input type="submit" name="Afficher" value="Afficher"/>
</form>
<?php
//tu traite ton résultat en php
if (isset($_POST'Afficher'])) {
// REQUETE PUIS AFFICHAGE DU RESULTAT
}
?>
Voila grossièrement ... ;-)
bonjour Crocro,
Effectivement, il y a pleins de choses à améliorer. Premièrement tu recopies l'intégralité de ton code html sur toute les pages. Ce n'est pas la bonne marche à suivre. Tu devrais faire toutes tes includes de pages sur ta page index.php qui se trouve à la racine de ton site et par exemple mettre toutes tes pages incluses dans un repertoire nommé "php".
Chaque page inclue contenant le code html la concernant (balise header dans la page header, nav dans la page menu,etc ...). Et pour le corps de page tu créé toutes tes url sous la forme index.php?page=XXX ou XXX correspond au nom de la page. Tu passe cette valeur dans un switch pour securiser ce qui passe dans l'url et tu fais un include du resultat.
Ensuite pour gerer tes images, je voie que tu les classes par catégorie. Tu devrais gérer tes catégorie dans ta base de données et ensuite créer un page de formulaire qui contient une liste dans laquelle tu va choisir la catégorie a afficher (ensuite après validation du formulaire en POST Tu recuperes la valeur transmise et tu affiches les images correspondantes). ou alors tu peux rester avec l'affichage de tes categorie listée via ta base de données sous forme d'images et ensuite passer la valeur de la categorie selectionnée en GET dans l'url. Le but étant d'utiliser une (voire deux) pages pour afficher les résultats quel que soit la catégorie sélecionnée.
Voila j'espere avoir été assez claire ;-)
Je peux t'envoyer du code si cela t'intéresse.
Bon courage
Laurent
Bonjour Lorenzeo8500,
Merci beaucoup pour ton aide, et tes conseils :), je pense avoir compris concernant les 'includes'.( à voir, j'essaye ça de suite ^^ )
En revanche, j'accepterai volontier un exemple de code concernant la partie galerie d'image :).
Merci encore pour ton aide.
Sincèrement.