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

PHP & Base de données Discussion :

appel de fonction et requete sql


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 20
    Par défaut appel de fonction et requete sql
    Bonjour,

    j'aimerai crée un tableau avec des catégories et des sous-catégories.Pour ne pas mélanger le php et le html , j'ai mis les requêtes sql dans une page à part.De cette manière c'est plus clair pour lire les lignes de code.J'arrive a afficher les titres de catégories, mais je n'arrive pas à afficher les sous catégories liées a la catégorie par l' "id" de la catégorie.

    En effet, pour afficher les sous catégories, je dois tenir compte de la boucle ("foreach") que j'ai fait pour afficher toutes les infos de la table catégories y compris l'id de la catégorie.Si je fais une appel de fonction dans laquelle j'ai mis la requête pour afficher les sous catégories.J'ai un message d'erreur. En gros il ne sait pas d'où vient " $cat['id'] ". Je ne sais pas ce que je dois mettre dans la fonction pour que l'id de la catégorie soit reconnue.Je crois que je dois mettre une boucle foreach dans la fonction "souscat()" (cette fonction est dans la page "categorie.func.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
    <?php
     
    //La fonction qui affiche les catégories du forum
    function infos_cat(){
    	global $db;
    	$categories=$db->query("SELECT * FROM categories") or die ('Erreur SQL !<br />'.mysql_error());
    	$cats=$categories->fetchAll(PDO::FETCH_ASSOC); 
    	return $cats;
    }
     
    //la fonction qui recherche les forums liés à la catégorie
    function souscat(){
    	global $db;
    }
    ?>
    categories.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
    <?php
     
    //appel de la fonction
    $cats=infos_cat();
    //var_dump($cats);
     
    ?>
     
    <p><a href="index.php?page=add"> Creer une discussion </a></p>
     
    <?php foreach($cats as $cat):?>
     
    <table class="table table-bordered" >
     
    	<thead>
    		<tr>
    			<th > <?php echo utf8_encode($cat['titre']);?></th>
    			<th>dernier message</th>
    		</tr>
    	</thead>
     
    	<tbody>
    	<?php 
     
    	//cette requete (ci-dessous) marche si je la met dans la boucle foreach.
    	//Mais si je la met dans une autre page categorie.func.php et que j'appelle la fonction 
    	//il ne reconnait pas l'id de la categorie (categorie_id={$cat['id']})
     
     
    	//requete pour afficher les sous titres
     
    	/*$sql="select * from forum where categorie_id={$cat['id']}";
    	$rows=$db->query($sql);
    	$forums = $rows->fetchall();*/
     
     
    	foreach($forums as $forum):?>
    			<tr>			
    				<!--titre forum-->
    				<td width="30%">
    					<a href="#"><?php //echo $forum['titre'];?></a>
    				</td>
     
    				<!--dernier topic-->
    				<td width="30%"> 
     
    				</td>
    			</tr>
    	<?php endforeach; ?>
     
    	</tbody>
     
    <!--fin table-->	
    </table>
     
    <?php endforeach; ?>
    Je suis vraiment bloque.Merci de m'aider.

  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
    Je ne sais pas comment est organisée ta base de donnée mais le plus efficace est de lire toutes les sous-catégories et de les classer dans un tableau PHP indexé par la catégories principales.
    Les requêtes SQL dans des boucles c'est très mauvais en performance.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 20
    Par défaut
    merci pour le conseil

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 20
    Par défaut
    toujours pas de reponse

  5. #5
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Tu peux passer des paramètres à une fonction. C'est même une base de l'informatique.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //la fonction qui recherche les forums liés à la catégorie
    function souscat($id){
    	global $db;
    ... requête SQL qui utilise $id
    }

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ... dans ta page principale
    $sous_cat = souscat($cat['id']);

  6. #6
    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
    toujours pas de reponse
    Mon "conseil" était une réponse puisqu'il te débarassait de ton problème.
    C'est que tu cherches à faire est mauvais.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Appeler une fonction avec "action" ds un
    Par drinkmilk dans le forum ASP
    Réponses: 4
    Dernier message: 20/04/2004, 14h54
  2. Réponses: 4
    Dernier message: 19/04/2004, 13h41
  3. [JSP] Appeler une fonction
    Par Patrick95 dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 23/12/2003, 13h44
  4. Appel à des fonctions incluses dans des DLL
    Par Greybird dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 13h33
  5. Appeler une fonction avec/sans parenthèses
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/12/2002, 18h48

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