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 :

Solution pour réaliser un index


Sujet :

PHP & Base de données

Vue hybride

smvezoo Solution pour réaliser un... 13/02/2018, 15h24
jisig foreach ? :p 13/02/2018, 16h41
Invité Bonjour, Commence déjà... 13/02/2018, 20h01
smvezoo Salut, j'ai déjà fait un code... 14/02/2018, 11h21
Invité Ah ! Je viens de... 14/02/2018, 11h29
Celira C'est quand même un peu... 14/02/2018, 11h37
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 65
    Par défaut Solution pour réaliser un index
    Bonjour à tous,
    je cherche comment réaliser un index avec php (PDO) et MySQL.

    Le projet est une page toute simple qui permettrai d'afficher :

    - Une rubrique (un thème englobant plusieurs activités) -> à condition qu'elle possède des activités
    - Pour chaque rubrique -> les activités qu'elles comportent
    - Pour chaque activité une description selon si les champs d'une table sont remplis ou non.

    Je pourrai réaliser ce code de façon bourrin mais je finirai avec 3000 lignes de code alors que j'aimerai m'entraîner à utiliser les boucles en php.
    Je ne sais pas trop qu'elle boucle utiliser, c'est pour cela que je vous demande de l'aide...

    J'hésite entre la boucle for et la boucle while, laquelle des deux me permettrait-elle de réaliser ce projet et d'afficher les rubriques tout en pouvant les traiter ?

    Ma bdd est remplie avec trois tables essentielles dans cette page :
    -> Une table contenant les rubriques avec un champ id et un libelle
    -> Une table contenant les activités avec id, libelle (des champs de description) et l'id de la rubrique et de l'association
    -> Une table association qui permet de récupérer le nom de l'association grâce à l'ID contenu dans la table activite.

    Merci d'avance SMVE

  2. #2
    Membre éprouvé Avatar de jisig
    Homme Profil pro
    null
    Inscrit en
    Avril 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Indonésie

    Informations professionnelles :
    Activité : null

    Informations forums :
    Inscription : Avril 2014
    Messages : 146
    Par défaut
    foreach ? :p

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    ...Je pourrai réaliser ce code de façon bourrin...
    Commence déjà par ça... Ça t'apprendra les bases...

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 65
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,
    Commence déjà par ça... Ça t'apprendra les bases...
    Salut, j'ai déjà fait un code similaire sur une autre page, ce code était aussi un genre d'index permettant d'avoir une liste des associations classé par lettre mais j'me suis retrouvé avec 3000 lignes de code (bon c'était vraiment la méthode super bourrin avec des copier/coller dans tous les sens au lieu d'utiliser des fonctions ) c'est pour ça que j'ai posté (pour éviter d'avoir le même tour)

    Merci jisig pour cette solution, je connaissais mais je ne pensais pas que ça serait aussi utile dans cette situation.
    La je l'utilise pour réaliser ce code, je suis à moins de 100 lignes et une bonne moitié des informations sont déjà triées.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ah ! Je viens de comprendre... (index)
    Tu ne parles pas d'un index(.php), mais d'une "liste alphabétiquement ordonnée" !...

    Bon... Alors il faut être carré dans la conception, notamment des tables SQL et des tables de jointures.
    Ensuite, les requêtes iront toutes seules... ou presque.

    1. Montre la structure de tes tables
    2. Il faut utiliser PDO
    3. Et connaitre les bases de la programmation PHP / PDO

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    C'est quand même un peu bizarre comme question : "Je vais construire un meuble, faut-il que j'utilise un tournevis cruciforme ou un tournevis plat ?" Ben ça dépend des vis.

    Dans ton cas, ça dépend de ce sur quoi tu veux boucler :
    • Un tableau indexé par nombre, ou un nombre fixe de tours à faire for
    • Un curseur, type pdo->fetch while
    • Un tableau indexé par clé foreach


    A noter que si tu dois trier des données, tu peux le faire directement dans tes requêtes
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 65
    Par défaut
    Salut à vous deux !
    Désolé hier j'ai été un peu pris avec des modifs à réaliser sur une de mes pages.

    jreaux62, oui en effet je ne parle pas d'un index.php qui est la page mais bien d'un index -> "afin de classer des données" (ici ça ne sera pas par liste alphabétique mais par rubrique).

    Voilà la configuration de ma bdd :
    Nom : Sans titre.png
Affichages : 360
Taille : 68,3 Ko

    Dans cette page je vais avoir besoin de quatre tables : rubrique, activite, association et contact.

    Et le but de ce script est d'afficher quelque chose qui ressemblerait à ça :

    [RUBRIQUE]

    NomActivité 1 (NomAssociation 1)
    if exist
    EMAIL :
    SITEWEB :
    Contact1, Contact2, ....

    NomActivité2 (NomAssociation2)
    if les données ne sont pas vides
    EMAIL
    SiteWEB ....

    Je continue mes tests et vous tiens au courant, au passage merci Celira pour ce résumé, j'vais le garder en mémo.


    EDIT :

    Bon voilà j'ai réalisé quelques tests avec une structure avec un while permettant d'afficher les rubriques et à l'intérieur de ce while j'ai inséré un foreach permettant d'afficher le résultat de ma requête.

    Code PHP : 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
     
    <?php	
    $req = $bdd->prepare('SELECT DISTINCT rubrique.LIBELLE as rubrique, rubrique.ID as rubrique_id FROM activite, rubrique WHERE activite.RUBRIQUE = rubrique.ID');
    $req->execute();
     
    // Tant qu'on a pas traité toutes les rubriques utilisées
    while($rubrique_use = $req->fetch())
    {
    	?>
    	<div class="bloc_activite">
    	<h1>
    	<?php
    	echo $rubrique_use['rubrique'];
    	?> </h1> <?php
     
    	//Récupération de certaines données 
    	$req2 = $bdd->prepare('SELECT DISTINCT activite.LIBELLE as activite, association.LIBELLE as association, activite.SITEWEB as SITEWEB, activite.EMAIL as EMAIL, activite.DESCRIPTION as DESCRIPTION, activite.TARIF_ACTIVITE as TARIF_ACTIVITE FROM activite, rubrique, association WHERE activite.RUBRIQUE = :rubrique_id AND association.ID = activite.ASSOCIATION');
     
    	$req2->bindValue(':rubrique_id', $rubrique_use['rubrique_id'], PDO::PARAM_STR);
    	$req2->execute();
    	$libelles = $req2->fetchall();
     
            // Comment afficher cette requête ??
    	$req3 = $bdd->prepare('SELECT DISTINCT contact.NOM, contact.PRENOM FROM contact, activite WHERE activite.CONTACT1 = contact.ID');
    	$req3->execute();
    	$contacts = $req3->fetchall();
     
    	foreach ($libelles as $libelle) 
    	{
    		// Affichage NOMactivité (NOM association)
    		$activite_association = $libelle['activite'] . ' (' . $libelle['association'] . ')' . '</br>';
    		echo $activite_association;
     
    		// Test SITEWEB
    		if($libelle['SITEWEB']!=NULL)
    		{
    			echo $libelle['SITEWEB'] . '</br>';
    		}
     
    		// Test EMAIL
    		if($libelle['EMAIL']!=NULL)
    		{
    			echo $libelle['EMAIL'] . '</br>';
    		}
     
    		// Test DESCRIPTION
    		if($libelle['DESCRIPTION']!=NULL && $libelle['DESCRIPTION']!=" ")
    		{
    			echo $libelle['DESCRIPTION'] . '</br>';
    		}
     
    		// Test TARIF_ACTIVITE
    		if($libelle['TARIF_ACTIVITE']!=0 && $libelle['TARIF_ACTIVITE']!=NULL)
    		{
    			echo $libelle['TARIF_ACTIVITE'] . '€ </br>';
    		}
    	echo '</br></br>';
    	}	
     
     
     
    	?>
    	</div>
    	<?php
    }
    ?>

    Je me suis servi d'une requête pour le while permettant de trier les rubriques qui sont utilisées dans les activités.
    Dans une seconde requête j'ai essayé de récupérer le maximum d'information pour les faire passer dans un foreach. Tout s'affiche bien, mais il manque les contacts que je n'ai pas réussi à caser dans le foreach et j'aimerai pouvoir les afficher aussi dans cette boucle sinon ça va tout décaler...
    J'ai préparé une requête contact mais je ne sais pas où la placer...

Discussions similaires

  1. [HOOK] Problème(s) pour réaliser le tutoriel sur les HOOKS
    Par Rodrigue dans le forum C++Builder
    Réponses: 13
    Dernier message: 27/07/2016, 18h22
  2. Réponses: 3
    Dernier message: 12/11/2012, 11h33
  3. Réponses: 12
    Dernier message: 12/10/2009, 14h21
  4. Réponses: 21
    Dernier message: 30/08/2004, 17h07
  5. [Kylix] solution pour kylix3 OE BCB sous mdk 9.2
    Par raggadoll dans le forum EDI
    Réponses: 3
    Dernier message: 28/01/2004, 16h26

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