8797 sujets

Développement web côté serveur, CMS

Bonjour,

Je suis en train d'apprendre le php et je suis confronté à un petit problème.
Voici en quelques mots, comment est organisé mon site.
Il y a une page index.php avec des liens vers des sous categories. Dans ces sous categories, il y a les vignettes photos des différents projets. Quand on clique sur une vignette on va vers une page avec les détails du projet (titre, photos, description etc...)

J'ai fait le site avec des includes.

Dans mon dossier includes, il y a header.php et footer.php.
J'ai 2 pages dans lesquelles j'inclus les includes ci-dessus.
- categorie.php
- projet.php

Je fait passer les variables suivantes dans les urls :
- categorie.php?sous_categorie=[ID]
- projet.php?projet=[ID]

Tout d'abord est ce que cette structure est bonne ?

Ensuite, j'ai un soucis car, j'affiche par exemple la sous_categorie du projet dans mon header, ainsi que le titre du projet. C'est données s'affichent bien dans le header de la page categorie.php?sous_categorie=[ID], mais pas dans le header de projet.php?projet=[ID].

J'ai l'impression qu'il y a des conflits de requete. car j'ai une requête dans les 3 fichiers. Je suis un perdu et j'avance plus.

Merci pour votre aide
Ca me rend dingue, j'ai fait plein de tuto, je trouve pas pourriez vous m'aider ?

voici l'exemple de requête que j'ai fait dans le header pour récupérer les données
<?php
require 'config.php';
$req=$bdd->prepare('SELECT projet.ID, projet.thumb, projet.titre, projet.famillesID, familles.ID, familles.sous_categorie FROM projet LEFT JOIN familles ON projet.famillesID = familles.ID  WHERE projet.ID = ? OR projet.famillesID = ?');
$req->execute(array($_GET['projet'], $_GET['sous_categorie']));
$donnees=$req->fetch();
?>


Problème, quand je suis sur la page projet.php?projet=1 par exemple
voici le message d'erreur =>
Notice: Undefined index: sous_categorie in /Applications/MAMP/htdocs/monsite/bis/includes/header.php on line 17

et voici le message d'erreur pour la page categorie.php?sous_categorie=13
=>
Notice: Undefined index: projet in /Applications/MAMP/htdocs/monsite/bis/includes/header.php on line 17



LA LIGNE 17 DU HEADER CORRESPOND à ca
$req->execute(array($_GET['projet'], $_GET['sous_categorie']));


MERCI Smiley bawling
Modifié par dreadstock (07 Jun 2011 - 11:36)
Dans les deux cas, le script va chercher à récupérer les variables "projet" et "sous_categorie" dans la variable superglobale $_GET.
Si l(une de ces variables n'existe pas, tel que tu l'utilises dans l'exemple donné, PHP va te renvoyer une erreur spécifiant que la variable en question n'existe pas.

Tu peux tester l'existence d'une variable avec la fonction isset().

Il va donc te falloir modifier ton code pour conditionner la récupération des données en fonction de la variable que tu récupères.
moust a écrit :
Dans les deux cas, le script va chercher à récupérer les variables &quot;projet&quot; et &quot;sous_categorie&quot; dans la variable superglobale $_GET.
Si l(une de ces variables n'existe pas, tel que tu l'utilises dans l'exemple donné, PHP va te renvoyer une erreur spécifiant que la variable en question n'existe pas.

Tu peux tester l'existence d'une variable avec la fonction isset().

Il va donc te falloir modifier ton code pour conditionner la récupération des données en fonction de la variable que tu récupères.


Ca c'est fait Smiley lol
Modifié par vallsymachinant (07 Jun 2011 - 12:15)
Bonjour, Merci infiniment pour votre aide et pour m'avoir mis sur la voie.
j'ai donc testé tout cela, mais en vain, du moins avec plein d'erreurs !
Voici le code de ma page categorie.php

<?php
require 'config.php';

if (isset ($_GET['projet']) && !isset ($_GET['sous_categorie']))
    {
        /**
         * Requête si paramètre Url Projet Existe 
        **/  
        $req=$bdd->prepare('SELECT * FROM projet WHERE ID = ?');
        $req->execute(array($_GET['projet']));

    }
if (isset ($_GET['sous_categorie']) && !isset ($_GET['projet']))
    {
        /**
         * Requête si paramètre Url Categorie Existe 
        **/  
        $req=$bdd->prepare('SELECT * FROM projet WHERE famillesID = ?');
        $req->execute(array($_GET['sous_categorie']));

    }
?>
<!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>
    <title> C'est de la daube</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" href="css/defaut.css" type="text/css" media="screen" title="default"/>
</head>   
    <body>
        
       <div id="wrapper">
            <div id="header">
                <div id="logo">
                    <a href="index.php"><img src="img/logo.png" alt="Logo
"/></a>
                </div>
                <div id="titre">
                    
                    <h1><?php echo $donnees['titre']; ?></h1>
                    
                </div>
                <div id="breadcrumb">
                    <?php echo $donnees['sous_categorie']; ?>
                </div>
                <div id="top-menu">
                    <h2><img src="img/violet.jpg" style="vertical-align: bottom; margin-right: 5px" width="25px" height="20px"/><?php echo $donnees['sous_categorie']; ?></h2>
                </div>
            </div>
            
            <div class="clearfixe"></div>
            

            <div id="content">
                           <?php $head ="<title>Page d'accueil</title>"; ?>

            <div id="galerie">
                <?php 
                while($donnees=$req->fetch())
                {
                ?>
                <a href="projet.php?projet=<?php echo $donnees['ID'] ; ?>"><img src="uploads/thumbs/<?php echo $donnees['thumb']; ?>"/></a>  

                <?php

                }
                ?>
             </div>
                        </div>

                        <div class="clearfixe"></div>

    <!-- FIN WRAPPER -->
    </div>
<?php 
include 'includes/footer.php';
?>


SI vous pouviez m'aider à corriger d'ou vient le ou les problèmes, je suis preneur ! merci
Modifié par dreadstock (07 Jun 2011 - 14:30)
Que veux tu faire avec ceci ?


if (isset ($_GET['sous_categorie']) && !isset ($_GET['projet']))
tu veux tester l'inverse du isset projet ?
Ben en faite,
Il y a deux page,

-liste.php?sous-categorie= Smiley id
-projet.php?projet= Smiley id

Ce qui veut dire que les deux variables ne passent pas en même temps dans l'url, elles passent chacun leur tour, en fonction de la page demandée, cependant, dans le header, doit être afficher toujours la sous_categorie.