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 :

Probleme Sql compter nombre champs par son ID [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Infographiste
    Inscrit en
    Février 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Infographiste
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 99
    Par défaut Probleme Sql compter nombre champs par son ID
    Bonsoir ,

    Voila j'ai un petit soucis avec ma BDD , en fait je m'explique ;
    Table "tuto"
    id_tuto int(11)
    id_user int(11)
    nom_logiciel
    etc...

    Table "logiciel" (contient 20 entrées )
    id int(11)
    nom_logiciel varchar (255)
    nbr_tuto int (11)

    Lorsque je poste un nouveau tuto via mon formulaire, pas de soucis, il se met à jour et incrémente le champs nbr_tuto de +1 , de ce coté pas de pb
    Seulement lorsque sur ma page d'index je cherche a afficher dans des divs separé une pour chaque logiciel ( 20 dans mon cas )
    Je n'arrive pas à aficher le nombre de tuto pour Firefox par exemple qui possede l'Id 12,(ni meme les infos que je recupererai en table TUTO) il m'affiche toute les infos de la table logiciel sous la forme d'un tableau
    dans une seule div et il boucle la meme chose dans les autres divs

    Bienfaiteur que tu seras celui qui m'aideras

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Par défaut
    Bonsoir,

    nbr_tuto dans la table logiciel est un calcul du nombre de tuto de la table tuto pour le logiciel correspondant dans la table logiciel ? Si oui, c'est pas bien ! Il ne faut pas stocker une données calculé dans une table.

    Pour ton problème de div :
    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
    //Vue que tu n'a pas préciser qu'elle type de connexion à la BDD que tu utilise, j'utiliserais PDO dans l'exemple.
     
    try{
        $bdd = new PDO('mysql:host=localhost;dbname=monSite', 'user', 'mdp');
    }catch (Exception $e){
        die('Erreur : ' . $e->getMessage());
    }
     
    //Requete SQL qui récupère tous les tuto de Firefox
    $sql = 'SELECT id_tuto, nom_logiciel, les_autres_colonnes FROM tuto WHERE nom_logiciel = :nomLogiciel';
     
    $requete = $bdd->prepare($sql);
    $requete->execute( array('nomLogiciel' => "Firefox") );
    //Tu peu utiliser une variable reçus en $_GET[''] pour afficher les tuto en fonction du choix de l'utilisateur.
     
    while( $tuto = $requete->fetch() ){
        echo '<div class="tuto">
                 <p>Info du tuto :<br />
                      Nom logiciel : ' . $tuto['nom_logiciel'] . '.</p>
               </div>';
    }
    Tu aura pour chaque tuple remonté par ta requête SQL une div contenant les informations du tuto.

    Après a toi d'adapter en fonction de comment tu les souhaite afficher, de ta requête pour remonter tes infos, des variables que tu reçois pour afficher les tuto.

  3. #3
    Membre confirmé
    Homme Profil pro
    Infographiste
    Inscrit en
    Février 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Infographiste
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 99
    Par défaut
    Merci pour ta reponse, en fait je suis resté flou,
    Ma connexion a la base est en procédural, désolé pour l'oubli,
    Je ne comprend pas bien comment dois je faire alors pour stocké ?
    Puisque je veut qu'a chaque fois que j'ajoute un tutoriel, il soit comptabilisé et me permettre de reafficher le nombre de tutoriel par logiciel plus tard

    Peut tu me refaire la demarche en procedural , ainsi que le systeme de recuperation en GET ( Pas trop dangereux ? )

    Par contre les utilisateurs ne pourront pas poster de tutos, c'est juste moi.
    Merci encore d'avoir répondu

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Effectivement, il faut revoir le modèle de données !

    Règle de gestion :
    Un tutoriel concerne un logiciel et un logiciel peut être concerné par plusieurs tutoriels.

    MCD :
    tutoriel -1,1----concerner----0,n- logiciel

    Tables :
    logiciel (lgc_id, lgc_nom...)
    tutoriel (ttr_id, ttr_id_logiciel...)

    Combien de tutoriels par logiciel ?
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT l.lgc_id, l.lgc_nom,
    	COUNT(t.ttr_id) AS nombre_tutoriels
    FROM logiciel l
    LEFT OUTER JOIN tutoriel t ON t.ttr_id_logiciel = l.lgc_id
    GROUP BY l.lgc_id, l.lgc_nom
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre confirmé
    Homme Profil pro
    Infographiste
    Inscrit en
    Février 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Infographiste
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 99
    Par défaut
    Tout d'abord merci de tout coeur mais pourrais tu m'expliquer plus en détail
    je suis un novice en php , mais je voudrai que mon site sois bien construit !
    Donc je suis pret a revoir tous si il le faut

    Dit cela s'applique pour une table myisam ?
    Parce que je ne pige rien de rien a la gestion en Innodb

    a ta question combien de tutoriel par logiciel ? je sais pas j'en ajoute tout le temps
    Merci par avance

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    mais pourrais tu m'expliquer plus en détail
    J'ai donné deux liens essentiels pour bien modéliser une base de données relationnelle.
    Il faut commencer par là quand on veut construire une application utilisant une base de données.
    Ce n'est pas l'application qui commande la structure de la BDD ; elle doit au contraire s'y plier.

    Parce que je ne pige rien de rien a la gestion en Innodb
    MyISAM : moteur à abandonner !
    Encore utile aujourd'hui si on a besoin de la recherche FULL TEXT mais la prochaine version de MySQL (peut-être est-elle même déjà sortie) ajoutera ce dernier avantage de MyISAM au moteur Innodb qui en a beaucoup d'autres, notamment la gestion des contraintes de clés étrangères qui sont essentielles pour une base de données bien maîtrisée.

    Pour celui qui écrit les requêtes, le fait que ce soit en MyISAM ou en InnoDB est transparent. Ce choix n'intervient qu'à la création de la table.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. [XML] Récupérer la valeur d'un champ par son nom
    Par Portekoi dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 06/07/2012, 13h43
  2. Probleme Valeur d'un champ par défault
    Par idrobe dans le forum Access
    Réponses: 1
    Dernier message: 14/07/2006, 15h39
  3. PHP & MySQL : Problème pour compter nombre de tuples ?
    Par ExSter dans le forum Requêtes
    Réponses: 6
    Dernier message: 09/05/2006, 23h03
  4. SQL : compter les champs d'une table
    Par Bboy dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 26/10/2005, 16h02
  5. [SQL] Compter des champs indépendement l'un de l'autre
    Par rippey dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 29/10/2003, 15h35

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