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 :

Tableau de résultats. [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Electronicien
    Inscrit en
    Novembre 2013
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 99
    Par défaut Tableau de résultats.
    Bonjour,

    Ayant l'intention d'améliorer mon site portant sur des questions du genre Q-C-M, je cherche à réaliser un tableau des résultats des participants à celui ci.
    Voici en image ce projet sous forme de tableau:

    Nom : tableau.jpg
Affichages : 277
Taille : 20,2 Ko

    Se trouve en jaune la ligne des numéros de questions.Et en dessous les points représentés dans les champs en verts dont chaque lignes ont une correspondance avec un pseudo.
    La réalisation de ce jeu mes en oeuvre 3 tables nommées:
    inscriptions
    avec les colonnes suivantes : id, usernames, password
    coeffi
    avec les colonnes suivantes : id, dossier, date, rep_bonne, adresse_image
    reponses
    avec les colonnes suivantes : id, inscription_id, rep_bon, nbr_questions, titre, date_reponse, point_total, titre_id

    Voici une première approche de la partie utile de ma question:
    Pour la ligne en jaune du tableau et qui fonctionne:
    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
    $requet = $connection->prepare("
    		SELECT id, coef
    		FROM coeffi 		
    		");
    		 $requet->execute();
    		 for($j=1;$j<=1;$j++)
    		 {
    			echo "<table style=\"background-color:yellow;font-size:14px;display:inline;\"><tr><td>Question n°&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>";
    			echo "<border=\"2\" style=\"background-color:yellow;font-size:14px;display:inline;\"><tr><td>Niveau</td></tr>";
    			echo "</table>";
    		 }
     
    		 while ($row = $requet->fetch(PDO::FETCH_ASSOC))
    		 {
    			$x = $row['id'];
    		 echo "<table style=\"background-color:yellow;font-size:14px;display:inline;\"> <tr><td>&nbsp;$x&nbsp;</td></tr>";			 
    		 echo "</table>";
    		 }
    Pour la partie se trouvant en dessous de la ligne jaune (zone blanche et verte)et qui ne fonctionne pas:
    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
    $requetee = $connection->prepare("
    			SELECT username, inscription_id, titre_id, point_total
    			FROM reponses r
    			INNER JOIN inscriptions i ON i.id = r.inscription_id 
    			INNER JOIN coeffi c ON c.id = r.titre_id
     
     
    		 ");
    		 $requetee->execute();
    			 while ($row = $requetee->fetch(PDO::FETCH_ASSOC))
    				{	
    					$nom=$row['username'];
    					$points_to=$row['point_total'];											 
    						echo "<table style=\"background-color:yellow;font-size:14px;display:inline;\"> <tr><td>$nom</td><td>$points_to</td></tr>";					
    						echo "</table>";					
    				}
    			echo "<br/>";
    Ainsi pourriez vous m'aider à réaliser ce tableau tout au moins en ce qui concerne la partie PHP.
    Pour le CSS3 je peux m'en charger.

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 667
    Par défaut
    Citation Envoyé par Max747 Voir le message
    et qui ne fonctionne pas
    c'est à dire ... ?

    pour commencer, est ce que la requête SQL vous retourne les informations dont vous avez besoin ?

  3. #3
    Membre actif
    Homme Profil pro
    Electronicien
    Inscrit en
    Novembre 2013
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 99
    Par défaut
    Voici en image ce que me présente la page concernant le problème qui me préoccupe et que je vous soumets:
    Nom : 2017-09-09_11h45_14.jpg
Affichages : 452
Taille : 11,2 Ko
    Cela fonctionne à peu près.Sauf que Pierre ne devrait être présenté qu'une fois ainsi que Jacques et Paul.
    Et les pseudos les uns en dessous des autres.
    Si les pseudo sont identiques au tableau présenté ci dessus, les points de cette partie en vert sont fantaisistes.
    C'est ainsi qu'il ne faut pas chercher de correspondance.
    Comme ceci:
    Jean 1
    PIerre 1 2 2
    Paul 1 2
    Jacques 1 2 2

    A part cela pas de messages d'erreur n'apparaît.

  4. #4
    Membre chevronné Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 341
    Par défaut
    Je ne connais pas de PDO, mais ton code fonctionne exactement comme écris.

    Il faut que tu détecte un nouveau nom et créer une ligne TR et le premier TD avec le nom (fermer le TR et en créer un TR et TD pour un nouveau nom)
    Ensuite faire une boucle avec le nombre de réponses possible : chaque fois un TD avec la réponse.

    Il faudra aussi fermer toutes les balises après ton script.

  5. #5
    Membre actif
    Homme Profil pro
    Electronicien
    Inscrit en
    Novembre 2013
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 99
    Par défaut
    Oui mais si c'est aussi simple, pourrais tu m'indiquer le code?

  6. #6
    Membre chevronné Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 341
    Par défaut
    Citation Envoyé par Max747 Voir le message
    Oui mais si c'est aussi simple, pourrais tu m'indiquer le code?
    Voici un code peu élégant avec mes connaissances qui devrait fonctionner, je suis certain que les spécialistes pourront faire beaucoup mieux :

    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
    $nom_test='non';
    $requetee = $connection->prepare("
    			SELECT username, inscription_id, titre_id, point_total
    			FROM reponses r
    			INNER JOIN inscriptions i ON i.id = r.inscription_id 
    			INNER JOIN coeffi c ON c.id = r.titre_id
    			ORDER BY username
    		 ");
    		 $requetee->execute();
    			 while ($row = $requetee->fetch(PDO::FETCH_ASSOC))
    				{	
    					$nom=$row['username'];
    					$points_to=$row['point_total'];	
    					$nbr ++;
    					$nbr_resultats ++;
     
    					if ($nbr==1) { // ----- Création dutableau et affichage du 1er nom
    						print "<table><tr><td style=\"background-color:#fff;font-size:14px;display:inline;\">$nom</td>";
    						$nom_test=$nom;
    					}
    					if ($nbr>1 && $nom_test!=$nom) { // ----- Nouvel utilisateur -> nouvelle ligne
    						if ($nbr_resultats<$z) { // ----- Ajout des TD pour les résultats manquants, $z=nbr total de question, issus de ton script précédent à ajouter
    							$reste=$z-$nbr_resultats;
    							for ($i=1; $i<=$reste; $i ++) {
    								print "<td style=\"background-color:green;font-size:14px;display:inline;\">&nbsp;</td>";
    							}
    						}
    						$nbr_resultats=0;
    						print "</tr><tr><td style=\"background-color:#fff;font-size:14px;display:inline;\">$nom</td>";
    						$nom_test=$nom;
    					}
    					print "<td style=\"background-color:green;font-size:14px;display:inline;\">$points_to</td>";
     
    				}
     
    				if ($nbr>=1) { print "</tr></table>"; } // ----- Fermeture du tableau si au moins 1 résultat
    			echo "<br/>";

  7. #7
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    Allez je me lance :

    Tu dois faire très attention dans le nommage de ce que tu manipules.
    Un moteur de base de données comme MySQL te permet de manipuler tout plein d'objets : table, vue, procédure stockée, fonction stockée... et il est très utile de préfixer les noms afin de te faciliter leur identification (t_ pour table, v_ pour vue...). On se doute bien qu'une table va contenir plusieurs enregistrements, il n'est donc pas utile d'utiliser le pluriel.
    Enfin, tu allais déborder de ton post-it que t'as sauvagement raccourci le nom en coeffi ?

    Après la manière dont les tables sont organisées me parait un peu obscure...
    C'est pourquoi faire ta table coeffi ? Juste stocker une suite de nombres incrémentée unitairement ?
    Evite le mélange français-anglais :
    inscriptions
    avec les colonnes suivantes : id, usernames, password
    soit tu le fais en français, soit en anglais mais par pitié, pas de mélange, c'est pas bon pour la santé.
    Enfin, cette partie je ne l'ai pas comprise :
    reponses
    avec les colonnes suivantes : id, inscription_id, rep_bon, nbr_questions, titre, date_reponse, point_total, titre_id
    D'après la sémantique (les mots ont un sens, il ne faut pas l'oublier), tu veux suivre dans cette tables les réponses aux questionnaires.
    Pour une réponse à une question, que viennent faire les colonnes : nbr_questions, rep_bon (c'est la bonne réponse ou la réponse du candidat ?) et point_total qui doit être le résultat d'un calcul mais lequel (j'ai ma p'tite idée quand même).

    Pour le code HTML (le rendu), tu dois OBLIGATOIREMENT sortir le formatage sous peine d'avoir un code source illisible (bonne chance pour le débogage).

    Enfin la structure d'un tableau en HTML est :
    Code html : 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
    <table>
        <thead>
            <tr>
                <th>En-tête colonne 1</th>
                <th>En-tête colonne 2</th>            
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Valeur colonne 1</td>
                <td>Valeur colonne 2</td>
            </tr>
        </tbody>
        <tfoot>
            <tr>
                <td>Pied de colonne 1</td>
                <td>Pied de colonne 2</td>
            </tr>
        </tfoot>
    </table>

    Bon courage jeune padawan

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

Discussions similaires

  1. Tableau avec résultat SQL d'une BDD Access
    Par Courgette17 dans le forum JDBC
    Réponses: 4
    Dernier message: 24/04/2007, 11h24
  2. Réponses: 1
    Dernier message: 05/11/2006, 09h24
  3. Réponses: 11
    Dernier message: 31/07/2006, 16h22
  4. Réponses: 3
    Dernier message: 24/04/2006, 16h32
  5. Réponses: 9
    Dernier message: 17/02/2006, 11h04

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