galerie en base de donnée

Eléphant du PHP | 77 Messages

02 avr. 2011, 15:15

oula ok, je ne sais plus placé tout ca et ou...

alors j'ai placé galeriebdd dans content, et j'obtiens ca en allant a l'adresse http://localhost/tuan-gallery/galerie.php?p=galeriebdd

Code : Tout sélectionner

Parse error: syntax error, unexpected $end in C:\xampp\htdocs\tuan-gallery\content\galeriebdd.php on line 117
J'ai donc vraiment fait une faute sur le tutorial également ?

Eléphant du PHP | 241 Messages

02 avr. 2011, 15:24

Oui, tu as loupé quelques trucs dans le tutoriel, par exemple tu laisse les DOCTYPE dans toutes tes pages alors que de la façon de faire dans le tutoriel il ne faut pas les mettre.

Tu dois avoir une erreur à la ligne 117, (ou ailleurs :/) il doit manquer des accolades { } ou un point virgule ; quelque part.

Eléphant du PHP | 77 Messages

02 avr. 2011, 15:51

ok ok,
j'ai supprimé quelques doctype

J'ai donc modifié mon galeriebdd
  <?php

} else {

header("Location: galerie.php");

}
?>

<a href="index.php">Retour à l'accueil</a>
</div>
</body>
</html>
pour <a href="index.php">Retour a l'accueil</a> , si j'ai saisi je remplacerais index par galerie.php ??

C'est un truc de fou je ne comprends plus rien. Je sais plus ou j'en suis ..

Si je fais http://localhost/tuan-gallery/galerie.php?p=galeriebdd
j'obtiens :
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\tuan-gallery\galerie.php:6) in C:\xampp\htdocs\tuan-gallery\content\galeriebdd.php on line 117
Retour � l'accueil

Eléphant du PHP | 241 Messages

02 avr. 2011, 15:59

Le message d'erreur indique que le ficher galerie.php envoi le "header" et que ensuite le fichier galeriebdd.php essaye lui aussi de modifier le "header", évidement, une fois que le header est envoyé un possible de le modifier (à part en rechargeant la page !).
Il faudrait stp que tu remettre le code complet de ta page galerie.php et de galeriebdd.php avec les dernières modifications que tu as apportées dessus.

Comme tu as du mal avec php, utiliser la façon de faire du tutoriel n'était peut-être pas la meilleure idée ^^

Eléphant du PHP | 77 Messages

02 avr. 2011, 16:05

page galeriebdd
<?php
//Fichier de connexion à la bdd
include('inc/sql_connect.inc.php');


$i = 0; //Ne pas toucher !

$req = $bdd->prepare("SELECT DISTINCT gal_pays FROM galerie_photos");
$req->execute();
while ($donnees = $req->fetch()) {
        $liste_pays[$i] = $donnees['gal_pays']; //Liste des pays
        $i++;
}
//On sécurise le $_GET['pays']
if (isset($_GET['pays'])
        && in_array($_GET['pays'],$liste_pays)
        && isset($_GET['page'])
        && is_numeric($_GET['page']))
{
        $pays = $_GET['pays']; //On enregistre le pays dans une variable

        $nb_photos_page = 5; //Nombre de photos par page

        /*
                $_GET['page'] permet de savoir sur quel page on est positionnee
                $start permet de savoir à partir de quel moment on commence l'affichage des fichiers sur la page
        */
        if ($_GET['page']>0) {
                $start = $_GET['page'] * $nb_photos_page - $nb_photos_page;
                $page = $_GET['page'];
        } else {
                $_GET['page'] = str_replace("-",'',$_GET['page']);//on enleve le/les - si quelqu'un les ecrits...
                $start = $_GET['page'] * $nb_photos_page - $nb_photos_page;
                $page = $_GET['page'];
        }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="Content-Language" content="fr" />
        <link rel="stylesheet" href="css/slimbox2.css" type="text/css" media="screen" />
        <script type="text/javascript" src="js/jquery.js"></script>
        <script type="text/javascript" src="js/slimbox2.js"></script>
<style type="text/css" media="screen">
body {
        margin: 0px auto 0px auto;
        padding: 0px;
        width: 1024px;
}
#galerie {
        width: 1024px;
        margin: 0px auto 0px auto;
        text-align: center;
}
img {
        height: 100px;
        width: 100px;
}      
</style>

                <title>Contenudossier</title>
</head>
<body>
<div id="galerie">
<?php

        /*
                On va afficher la galerie pour le pays choisi
                Et pour le numéro de la page sur laquelle on est
        */

        $nb_fichiers_total = 0; //Ne pas toucher

        $req = $bdd->prepare("SELECT gal_photo FROM galerie_photos WHERE gal_pays=:pays ORDER BY gal_trajet LIMIT $start,$nb_photos_page");
        $req->bindValue('pays',$pays,PDO::PARAM_STR);
        $req->execute();
        echo "<p>\n";
        while ($donnees = $req->fetch()) {
                $photo = $donnees['gal_photo'];
?>

        <a href="<?php echo "$pays/grandes/$photo"; ?>" rel="lightbox-atomium"><img src="<?php echo "$pays/petites/$photo"; ?>" alt="" /></a>

<?php
        }
                echo "</p>\n";

//Mise en place de la pagination
$nb_total = $bdd->prepare("SELECT COUNT(*) AS nb_total FROM galerie_photos WHERE gal_pays=:pays");
$nb_total->bindValue('pays',$pays,PDO::PARAM_STR);
$nb_total->execute();
$nb_total = $nb_total->fetch();
$nb_total = $nb_total['nb_total'];

$nb_pages = ceil($nb_total / $nb_photos_page);
?>
        <p>[
<?php
        for ($i=1;$i<=$nb_pages;$i++) {
                if ($i == $page ) {
?>
                <span class="page_focus"><?php echo $i; ?></span> -
<?php
                } else {
?>
                <a href="?pays=<?php echo $pays; ?>&page=<?php echo $i; ?>" class="page_non_focus"><?php echo $i; ?></a> -
<?php
                }
        }
?>
        ]</p>
        <?php

} else {

header("Location: galerie.php");

}
?>

<a href="galerie.php">Retour à l'accueil</a>
</div>
</body>
</html>
page galerie
<?php
//Fichier de connexion à la bdd
include('inc/sql_connect.inc.php');
?>

<?php

if(!isset($_GET["p"])){$_GET["p"]=venise/venise_1;}
if(!file_exists("content/".$_GET["p"].".php")){$_GET["p"]=404;}
ob_start();
include "content/".$_GET["p"].".php";
$content=ob_get_contents();
ob_end_clean();

include "template.php";

?>
Oui c'est sur que j'ai commencé par un tuto peut être un peu galère, au départ j'avais fait celui la
http://www.grafikart.fr/tutoriels/decom ... ite-php-31
une version simplifée de ce que j'ai fait, mais on m a dit que l'autre était mieux alors j'ai changé...

Eléphant du PHP | 77 Messages

06 avr. 2011, 20:38

Bonsoir,

Alors c'est grave ?? tout a refaire ou c'est juste une bricole qui coince ?

Eléphant du PHP | 241 Messages

07 avr. 2011, 13:18

Salut,
à vrai dire, je sais pas du tout d'où peut venir le problème, ca doit être un truc tout bête, mais mes yeux le vois pas :mrgreen:
Je pense pas qu'il y ai besoin de tout refaire, faut juste vérifier et tomber sur le petit truc qui fait ch*** !

J'essayerai de rererejeter un oeil dessus dès que j'ai le temps !

Eléphant du PHP | 77 Messages

07 avr. 2011, 20:43

Ok,

je relis également de mon coté, on ne sait jamais !

Merci

Eléphant du PHP | 77 Messages

10 avr. 2011, 17:01

Hey misterflo, salut

Alors j'ai supprimé les lignes 4 à 7 du fichier galerie.php (on me l'a soufflé) et je n'ai plus d'erreur qui s'affiche, mais ma page 404 (mon template normal, et a l interieur juste une phrase que j'ai crée donc c'est bien ma page 404.php)
Peut être ai je mal placé les morceaux de code ???
Je suis redirigé sur galerie.php mais a quoi va me servir ma page venise.php par exemple ??

Eléphant du PHP | 241 Messages

11 avr. 2011, 02:52

Bonjour heu bonsoir (bonne nuit ? je sais plus :D),
alors la je vois pas en quoi supprimer les ligne 4 à 7 ont résolu le problème ! En tout cas ca marche, c'est le principal !!! :mrgreen:

Par contre, j'avais pas tilté, mais tu appelles le fichier sql_connect.inc.php à chaque début de tes pages !
Il faut bien évidemment le faire une seule fois, soit tu le mets seulement au tout début de ton template ou dans ta page galerie.php (ou la page qui te permet de faire un appel de ton template etc, avec ob_start()...).
Le problème dans ce cas c'est qu'il y aura toujours une connexion à la bdd qui s'exécutera même quand tu seras sur une page qui ne nécessite pas d'aller chercher des informations sur la bdd.
Donc à toi de voir, soit tu le mets sur toutes tes pages qui nécessitent une connexion à la bdd, soit sur une des pages cités plus haut.

Ensuite, ce code
...
if(!isset($_GET["p"])){$_GET["p"]="venise/venise_1";}
if(!file_exists("content/".$_GET["p"].".php")){$_GET["p"]=404;}
...
Veut dire :
1er ligne : Si $_GET['p'] n'est pas défini alors lui attribuer la valeur "venise/venise_1" (d'ailleur pense à corriger la faute que je t'ai déjà signalé plusieurs fois !!!! càd de mettre des guillemets autour de la valeur !)
2nd ligne : Si le fichier "content/valeur_de_$_GET['p'].php" n'existe pas alors attribuer la valeur 404 à $_GET['p']

En gros, si une personne arrive sur ta page sans lui passer de paramètre (ici ...php?p=une_page) alors la page appelée par défaut sera "venise/venise_1.php".


NB : Pour ce qui est de la partie de mon message d'explication du code, je sais pas si c'est vraiment ce que tu attendais ! 8-|
Par contre si une personne rentre un paramètre, mais que cette page n'existe pas alors il affichera le contenu de ta page 404.php.

Eléphant du PHP | 77 Messages

11 avr. 2011, 11:34

Salut,

C'est vrai qu'en fin de week end on est un peu déphasé !

Alors je viens de faire ce que tu m'as dit

1) désolé pour l'erreur sur galerie.php j'avais complétement zappé.., c'est réglé maintenant j'ai mis les guillemets !

2) Pour cette première ligne de code, le mieux serait alors de remplacer "venise/venise_1" par "galerie" ??

3) une chose que je ne comprend pas, et je pense que c'est pour ça que je n'arrive pas a bien t'expliquer le soucis.
J'ajoutes les photos par ajoutphotos.php, elles sont traitées par traitement.php, puis elles arrivent donc dans ma base de donnée. Donc mon fichier galeriebdd.php à quoi me sert il ? Je ne vois pas comment réorganiser pour avoir ma galerie venise, usa, japon, etc...
Je ne sais pas si j'ai été très clair, mais je pense que je dois faire une erreur avec ce que tu m'as fait parce que je ne comprends pas.

Eléphant du PHP | 241 Messages

11 avr. 2011, 12:11

Salut,
1) Oki :P

2) Oui, ce serait mieux de mettre galerie.php vu qu'apparemment c'est ta page d'accueil.

3) Et bien dans galeriebdd.php on affiche un menu avec les différents pays qui contiennent des photos, permettant ainsi d'aller voir les photos pour ce pays.
(d'ailleur j'ai fais une erreur dans ce fichier)
galeriebdd.php
Avant il y avait ca
...
...
<ul>
<?php
//On regarde les pays existants dans la bdd
$req = $bdd->prepare("SELECT DISTINCT gal_pays FROM galerie_photo");
$req->execute();
while ($donnees = $req->fetch()) {
	$pays = $donnees['gal_pays'];
...
...
A remplacer par
...
...
<ul>
<?php
//On regarde les pays existants dans la bdd
$req = $bdd->query("SELECT DISTINCT gal_pays FROM galerie_photos");
while ($donnees = $req->fetch()) {
	$pays = $donnees['gal_pays'];
...
...
Au lieu de faire un prepare et un execute, un query suffit simplement, de plus dans la requête SQL je n'allais pas chercher les informations dans le bon fichier : galerie_photo alors que c'est galerie_photos avec un S, c'est peut-être pour ca que tu ne te rendais pas compte à quoi servait cette page :D.
Comme il était sensé afficher la liste des pays présents dans le fichier galerie_photos (après ca dépend si tu l'as renommé ou pas ^^)

Eléphant du PHP | 77 Messages

11 avr. 2011, 13:01

Salut,

Alors j'ai fait la modif de galeriebdd.php

$req = $bdd->query("SELECT DISTINCT gal_pays FROM galerie_photos");
while ($donnees = $req->fetch()) {
        $pays = $donnees['gal_pays']; //Liste des pays
        $i++;
j'ai également mis galerie a la place de venise/venise_1 dans galerie.php
if(!isset($_GET["p"])){$_GET["p"]="galerie";}
if(!file_exists("content/".$_GET["p"].".php")){$_GET["p"]=404;}
Et lorsque je fais http://localhost/tuan-gallery/galerie.php et bien toujours mon erreur 404

Si j'ai bien compris je devrais avoir la liste de mes pays sur cette page ??
Je n'est rien renommé,
Par contre tu parles du fichier galerie_photos , mais il n'existe pas celui la, galerie_photos est juste le nom de la table...

Eléphant du PHP | 241 Messages

11 avr. 2011, 14:19

Hum, en fait je me suis trompé, ta page d'accueil serait plutôt galeriebdd.php donc dans le fichier galerie.phpil faudrait mettre galeriebdd pour la valeur par défaut.
...
if(!isset($_GET["p"])){$_GET["p"]="galeriebdd";}
if(!file_exists("content/".$_GET["p"].".php")){$_GET["p"]=404;}
...
Il ne faut pas confondre fichier et table :wink:
C'est une grosse erreur que font beaucoup trop de développeur.
Une table est la représentation d'une partie ou de la totalité de ton fichier, c'est ce qui s'affiche sur ton écran.
Un fichier contient les enregistrements, il est présent sur ton disque.
Ce fichier existe bien, si tu utilise wamp, ils sont dans "C:\wamp\bin\etc..."

Eléphant du PHP | 77 Messages

11 avr. 2011, 21:08

Ca ne marche pas, impossible de trouver la page (même pas de template etc..) que ce soit sur ces 2 adresses :
http://localhost/tuan-gallery/galerie
http://localhost/tuan-gallery/galerie.php?p=galeriebdd

Dans un sens c'est logique puisque qu'on dit dans galerie.php que la page par defaut est galeriebdd, et dans galeriebdd on dit de revenir a galerie.php; ça tourne en rond en fait, donc impossible d'afficher une page quel qu’elle soit


Galerie.php
...
if(!isset($_GET["p"])){$_GET["p"]="galeriebdd";}
if(!file_exists("content/".$_GET["p"].".php")){$_GET["p"]=404;}
ob_start();
...

galeriebdd.php
...
 else {

header("Location: galerie.php");

}
...