IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Création d'un mini systéme de catégorie/sous catégorie


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Par défaut Création d'un mini systéme de catégorie/sous catégorie
    Bonjour, je suis actuellement en développement d'un site dynamiquement, cependant moi qui veut gérer tous par interface () j'ai un petit problème que je suis rester dessus sans avoir trouver la réponse .
    Après avoir fais quelques recherches et quelques test, j'ai pu tout simplement afficher que les catégories "principale". Je m'explique:

    Je voudrais en faite rajouter des catégories et des sous catégorie d'une catégorie (), mais j'ai pu qu'afficher les "pères". Pour les sous catégorie je bloque et ne sais pas quel requête faire (Mise à part un SELECT , peut être une jointure .. =/).

    Maintenant l'explication en image

    Voila mon menu (Visuellement) :



    Et voici les Tables ma Base de données :



    Et les champs concernée :

    Table Category :


    Table sous_cat :


    Et voici mon code:

    index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    <?php
    	require 'class/__header.php' ;
    ?><!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8" />
    		<title>Ludo Depannage Informatique</title>
    		<link rel="stylesheet" href="css/global.css" />
    	</head>
    	<body>
     
    		<!-- BLOC WRAP / PAGE -->
    		<div id="wrap">
    			<!-- BLOC MENU -->
    			<div id="menu">
    				<?php
     
    						$category = $DB->query('SELECT name_cat FROM category');
     
    						foreach ($category as $cat) {
    							?>
     
    								<ul>
    									<li>
    										<a href="#"><?php echo $cat->name_cat ; ?></a>
    									</li>
    								</ul>
     
    							<?php
    						}
    				?>
     
    				<!--
    				<ul>
    					<li><a href="#">Accueil</a></li>
    					<li>
    						<a href="#">Composants</a>
    						<ul>
    							<li><a href="#">Carte mères</a></li>
    							<li><a href="#">Processeurs</a></li>
    							<li><a href="#">Cartes Graphiques</a></li>
    							<li><a href="#">Barrettes mémoires</a></li>
    							<li><a href="#">Boitiers PC</a></li>
    							<li><a href="#">Alimentations</a></li>
    							<li><a href="#">Disques durs</a></li>
    						</ul>
    					</li>
    					<li><a href="#">Périphériques</a></li>
    					<li><a href="#">Ordinateurs</a></li>
    					<li><a href="#">Pc Portable</a></li>
    					<li><a href="#">Smartphones</a></li>
    					<li><a href="#">Ecran PC</a></li>
    					<li><a href="#">Logiciels</a></li>
    					<li><a href="#">Réseaux</a></li>
    					<li><a href="#">Photo/Video</a></li>
    					<li><a href="#">Téléviseurs</a></li>
    					<li><a href="#">Contact</a></li>
    				</ul> -->
     
    			</div>
     
    			<div id="content">
     
    		    </div>
    		</div><!-- FIN BLOC WRAP -->
     
    	</body>
     
    </html>
    __header.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    	require '/class/db.class.php' ;
    	require '/class/category.class.php' ;
    	$DB = new DB();
    	$category = new Category($DB);
    ?>
    db.class.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <?php
     
    	class DB{
     
    		private $host = 'localhost' ;
    		private $user = 'root' ;
    		private $pass = '';
    		private $database = 'bdd' ;
    		private $db ;
     
    		public function __construct($host = null, $user = null, $pass = null, $database = null){
    			if($host != null){
    				$this->host = $host;
    				$this->user = $user ;
    				$this->pass = $pass ;
    				$this->database = $database ;
    			}
     
    			try{
    				$this->db = new PDO('mysql:host='.$this->host.';dbname='.$this->database, $this->user, $this->pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'));
    			}catch(PDOException $e){
    				die('<h1> Impossible de se connecter a la base de donnees</h1>');
    			}
    		}
     
    		public function query($sql, $data = array()){
    			$req = $this->db->prepare($sql);
    			$req->execute($data);
    			return $req->fetchAll(PDO::FETCH_OBJ);
    		}
     
    	}
     
     
     
     
    ?>
    category.class.php (Pas encore rajouté des fonctions mais pour plus tard je pense ^^)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
     
    class Category{
     
    	private $DB ;
     
    	public function __construct($DB){
    		$this->DB = $DB ;
    	}
     
    }
     
    ?>
    Merci d'avance
    Images attachées Images attachées     

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu n'as pas besoin de 2 tables : garde la structure de ta table sous_cat, les éléments de premier niveau n'ont simplement pas de "parent".

    Un autre conseil : ne fait pas des requêtes dans des boucles du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    requête categorie principale {
       requête sous cat
    }
    car la multiplication des requêtes n'est pas efficace.

    Il vaut mieux recuperer toutes les données (cats principales + sous cats) que tu veux en une seule requête (facile si tu n'as qu'une seule table) et travailler ensuite dessus en PHP.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Par défaut
    Ok merci, j'essaye de faire sa, si j'ai une autre question je poserai dessous ^^ Merci !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Si je puis me fairepermettre... (OK, Sabotage ? private joke)
    Une seule table, avec :
    id_categorie (int, auto-incrément)
    id_parent (int)
    Comme le suggère bien Sabotage :
    • niveau 0 : id_parent = 0
    • sous-niveau : id_parent = id_categorie(_du_parent)

    N.B. Très pratique aussi pour les menus/sous-menus avec X niveaux.

  5. #5
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    Idem, pour une humble proposition
    Si tu ne veux pas toucher à la structure de tes tables, tu dois pouvoir faire
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT category.name_cat , sous_cat.name_sous_cat 
    FROM sous_cat
    LEFT JOIN category ON sous_cat.parent=category.id
    ORDER BY category.name_cat , sous_cat.name_sous_cat

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Par défaut
    Merci pour toutes vos réponse Si avec sa je m'ensort pas, alors je suis vraiment un noob

    Je vous tiens au courant

  7. #7
    Invité
    Invité(e)
    Par défaut
    "N'est pas noob qui veut."
    Fucius, qui est loin d'être con, dixit Pierre Desproges, Grand Humoriste devant l'Eternel !
    Comme il le disait lui-même : « On peut rire de tout, mais pas avec tout le monde »

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [OL-2007] Classer ses mails en catégories, sous catégories
    Par Dae_mon dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 28/02/2014, 14h04
  2. Réponses: 10
    Dernier message: 21/10/2009, 15h17
  3. [MySQL] [CMS] Gestion de Catégories/Sous catégories
    Par aenema dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 31/08/2008, 09h25
  4. [JAR]Création d'un JAR avec des dependances sous Eclipse
    Par muthnik dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 05/07/2005, 17h39
  5. [Système] le classpath sous windows 98
    Par helonear dans le forum Général Java
    Réponses: 2
    Dernier message: 23/06/2005, 08h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo