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 :

Afficher horizontalement et verticalement des membres d'un site


Sujet :

Langage PHP

  1. #1
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Points : 139
    Points
    139
    Par défaut Afficher horizontalement et verticalement des membres d'un site
    Salut

    Je plante depuis plusieurs jours sur un problème :
    J'arrive pas à afficher plusieurs enregistrements de membres d'un site, de façon à ce que 4 membres soient affichés horizontalement puis que chaque ligne au dessous en affiche 4 autres, et ainsi de suite jusqu'à la fin d'affichage de tous les membres.

    Et un affichage d'un membre comprend une photo, puis en dessous, le pseudo, et en dessous encore l'âge, et enfin en dessous encore l'email.
    Donc chaque membre a ses données affichées verticalement, mais chaque membre est affiché horizontalement, enfin j'espère qu'on me comprend

    Photo
    Pseudo : toto123
    âge : 23 ans
    Email : carotte@free.fr

    Dans ce genre là

    EDIT : Je voulais vous montrer un exemple d'affichage de plusieurs membres mais le topic me garde pas le formatage du texte, donc je suis obligé de vous en montrer qu'un seul :/

    Ah oui, il faudrait si possible que cet affichage se fasse en cliquant sur un bouton "afficher" pour faire un submit() tout en restant sur la même page :/

    EDIT : Pour le deuxième problème, j'ai trouvé un tuto sur votre site à ce lien :
    https://sylvie-vauthier.developpez.c...ge=formulaires

    Donc je l'étudie, mais il faudra que j'essaie de l'adapter car moi je dois faire le submit avec une fonction onclick() et je pense qu'il me faudra tester le submit du form pour lancer le code d'affichage des membres mais je sais pas faire ça :/

  2. #2
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Bonjour,
    Montre-nous ton code. Déjà, on saura de quoi tu pars.

  3. #3
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Points : 139
    Points
    139
    Par défaut
    Bonjour dendrite, mon code te serivira à rien, il est nul et à jeter mais mon explication dans mon post devrait pouvoir suffire à faire un code pour des pros comme vous, moi je suis un débutant :/

    Si tu veux voir mon code c'est ça :
    (mais il te servira pas, il marche pas et c'est mal fait!)

    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
     
    //Affiche dans un tableau HTML le tableau PHP contenu dans $résultat.
    // Début du tableau HTML
    print("<table border=\"1\">");
    // Boucle pour lire chaque donnée du tableau PHP qui est contenu dans $resultat et insertion dans le tableau HTML.
    $max_horiz=1; // Max de colonnes (horizontal).
    $compte_horiz=0; // Compteur horizontal.
    $chaine="";
    print("<tr style='text-align:left;'><br/>");
    foreach ($resultat as $key => $variable)
    {
     
    	if($compte_horiz>=$max_horiz)
    	{
    		$compte_horiz=0;
    		print("</tr>");		
    		print("<tr style='text-align:left;'><br/>");
    	}else
    	{
    		print("<td><div id='photo'><img src=\"#\" id=".$resultat[$key]['id']." Alt=\"Photo ici \" /></div>".
    		"Age : ".$resultat[$key]['age']."<br/>".
    		"Pseudo : ".$resultat[$key]['pseudo']."<br/>".
    		"Email : ".$resultat[$key]['mail']."<br/></td>");
    		++$compte_horiz;		
    	}
     
    }
     
    // Fin du tableau HTML.
    print("</table>");
    ?>

  4. #4
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Points : 139
    Points
    139
    Par défaut
    Sur le lien du tuto que j'ai cité, il y a une erreur d'attention :

    "erreur effacée ici par moi"

    Mais je sais pas à qui le dire :/

    EDIT Ah c'est bon, l'auteur était en fin du tuto, j'ai fait un mp

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


    On peut aussi envisager des flexbox (à 25%)... mais comme tu ne veux pas montrer ton code...
    Peut-être peux-tu montrer un DESSIN de ce que tu veux ?

    [EDIT]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print("<table border=\"1\">");
    Sérieux ??
    Où as-tu été chercher ton code ??
    Dans les années 90 * ??

    * 1890...

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Enfin je ne vois pas pourquoi tu veux absolument t'embarquer dans un tableau.
    Tu fais de simples badges avec des <div></div> de largeur 25% et le tour est joué non ?

  7. #7
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Points : 139
    Points
    139
    Par défaut
    Salut jreaux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print("<table border=\"1\">");
    Je l'ai copié d'un site, lol, je savais pas que cette façon datait de la préhistoire

    Je regarde le lien que tu m'a donné, merci !


    Salut rawsrc

    Je vois pas ce que tu veux dire :/
    EDIT: ah si maintenant je comprend, tu veux dire que à chaque affichage je dois insérer des divs de façon à former un tableau quoi. C'est ça ?

  8. #8
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Points : 139
    Points
    139
    Par défaut
    Je mets le code avec DIV comme conseillé, mais il marche pas pour le moment, faut dire que j'ai pas encore fini de lire le tuto sur l'affichage de données. Je voulais juste montrer ce que j'essaie de faire.
    J'étudie le tuto on verra bien

    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
    <?php
     
    $maxhoriz=3;
    $maxvert=4;
    $i=1;
    while ($i<=$compteur)
    {
    	if($i<=$maxhoriz)
    	{
    		$chaine="<div class='mydiv'>pseudo=$_POST['pseudo']<br/>âge=$_POST['age']<br/>Email=$_POST['email']</div>";
    		++$i;
    	}else
    		$chaine=$chaine."<br/>";
    		$i=1;
    	}
     
    	print($chaine);
    }
     
    ?>

    EDIT : Je viens de voir l'instruction préhistorique dont vous m'avez parlé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print("<table border=\"1\">");
    dans le tuto d'affichage de données que vous m'avez indiqué, lol.

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

    1- Essaie déjà de réaliser ce que tu veux avec une <table>.

    2- Quant à l'autre solution (<div> + flexbox) : A Complete Guide to Flexbox
    Comme son nom l'indique, une "flexbox" est... flexible.
    Et en CSS, on peut définir, en fonction de la largeur d'affichage (via media queries), le nombre de "box" par ligne (25%->4 - 33,33%->3 - 50%->2, ...).

    MAIS IL NE FAUT PAS MÉLANGER LES DEUX !


    3-
    $chaine=$chaine."<br/>"; s'écrit plus simplement : $chaine .= "<br/>";.
    print($chaine); -> echo $chaine;.

    Il faudrait quand même que tu connaisses les BASES.

  10. #10
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Points : 139
    Points
    139
    Par défaut
    Merci jreaux, je vais faire comme tu as dis

    EDIT : Merci pour tes tutos qui sont supers ! Je les ai téléchargés.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par amateurprg Voir le message
    EDIT : Je viens de voir l'instruction préhistorique dont vous m'avez parlé [...] dans le tuto d'affichage de données que vous m'avez indiqué, lol.
    Ça m'étonnerait !

    C'est moi qui ai écrit ce tuto, et je n'ai JAMAIS employé print(...); !

  12. #12
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Points : 139
    Points
    139
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title>Tableau html simple</title>
    </head>
    <body>
     
    <table border="1">
    <?php
    // $NbrLigne : le nombre de lignes
    $NbrLigne = 3;
    // $NbrCol : le nombre de colonnes
    $NbrCol = 4;
    Ah Tu parlais de print(), moi j'avais cru que tu parlais de "border=1" que print écrit.
    Désolé je me suis trompé.


    J'ai pris les tutos qui sont dans ta signature, ils sont supers, merci !

  13. #13
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Points : 139
    Points
    139
    Par défaut
    J'ai regardé plein de tutos d'ici et d'ailleurs mais tous parlent d'une pagination simple, tous les éléments dans une certaine fourchette sont affichés verticalement, chaque enregistrement en dessous de son précédent.

    Ils parlent bien de tableaux aussi mais c'est pour afficher le contenu des enregistrements et non pas l'enregistrement lui-même comme je le souhaite.

    Mon but est d'en aligner par exemple 4 horizontalement, puis passer à la ligne pour afficher les 4 suivants, etc jusqu'à atteindre le nombre d'enregistrement total à lire voulu.


    Voilà, mais je vois pas comment faire horizontalement puis verticalement.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Tu prouves que tu n'as PAS cliqué sur mon lien... Et encore moins LU.

  15. #15
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Points : 139
    Points
    139
    Par défaut
    Tu prouves que tu n'as PAS cliqué sur mon lien... Et encore moins LU.
    Bien sûr que si, mais si tu le fais remarquer c'est que je dois aller le revoir, mais de quel tuto tu parles ?, car tu en a plein que j'ai regardé et téléchargé.
    (je suis même allé sur ta page où tu as tes tutos).
    EDIT : ah peut-être celui de l'affichage en tableau, je l'ai lu pourtant, je vais revoir.


    Une question en passant, pourquoi dans le code tu mets autant d'extraparametres pour le PDO ? Est-ce vraiment utile ? Je croyais qu'il fallait mettre que l'utf8 et l'exception ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,		// rapport d'erreurs sous forme d'exceptions
    				PDO::ATTR_PERSISTENT => true, 						// Connexions persistantes
    				PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 	// fetch mode par defaut
    				PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
    Merci de me renseigner, comme ça je ferais comme toi si c 'est vraiment utile, parce que j'essai d'avoir un code simple.

    Ah, j'ai réfléchi (oui, des fois) je préfère utiliser des DIV en relatif plutôt qu'un tableau, même avec ton tuto je trouve compliqué à travailler avec les tables html.

    Sinon ces trois phrases dans ton tuto correspondent bien à mon problème je crois :

    On veut afficher dans chaque cellule les données provenant d'UN SEUL enregistrement ;
    Chaque cellule contient TOUTES les données provenant d'UN SEUL enregistrement ;
    On veut que le tableau fasse un nombre déterminé de colonnes ;
    D'ailleurs je remarque que tu as pris soin de mettre en majuscule le but principal du code dans ces trois phrases.

  16. #16
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Points : 139
    Points
    139
    Par défaut
    SUPER !

    J'ai reussi à faire exactement ce que je voulais grace à l'affichage par div, mais je mets pas en résolu car j'attend une réponse sur les parametres de PDO.

    Mais du coup j'ai une autre question aussi et qui ne necessite pas de post donc je la met ici, elle est aussi reliée à mon projet.

    Je lance l'affichage sujet de ce post avec un bouton submit() et pour tester l'envoi du formulaire j'utilise un test du bouton submit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if( isset($_POST['btn_cherche']) )
    {
       // Affichage des membres ici.
    }

    EDIT ; J'ai oublié de préciser que la page courante du formulaire est aussi la page cible de action, le submit recharge la page du formulaire en fait, pour rester sur la meme page apres le submit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="chercher" action="travail.php" method="post">
    Mon problème est que l'affichage reste à l'écran aprés avoir utilisé le submit même si je rafraichit la page alors que normalement l'affichage ne devrait se faire que grace au submit.

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

    1-
    Citation Envoyé par amateurprg Voir le message
    SUPER !
    J'ai reussi à faire exactement ce que je voulais grace à l'affichage par div...
    Montre-nous ton code.
    Ça peut en intéresser d'autres.
    Merci.


    2- paramètres PDO : il suffit d'une recherche pour en savoir plus.


    • PDO::ATTR_ERRMODE
    • PDO::ATTR_PERSISTENT
    • PDO::ATTR_DEFAULT_FETCH_MODE (certains préfèrent PDO::FETCH_OBJ : c'est un choix perso)
    • PDO::MYSQL_ATTR_INIT_COMMAND




    3- Formulaire et traitement :

    Dernière modification par Invité ; 23/10/2019 à 10h10.

  18. #18
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Points : 139
    Points
    139
    Par défaut
    Merci beaucoup Jreaux

    Pour les parametres PDO j'ai pas cherché sur le net parce que ce que je voulais savoir ce n'est pas leur fonction mais l'obligation ou pas ou l'utilité réelle de mettre plus que utf8 et exception, voilà.

    Merci encore pour les liens que tu m'a donné !
    Je les regarde tout de suite.

    Je mets ce post en résolu

  19. #19
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    Octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Octobre 2019
    Messages : 205
    Points : 139
    Points
    139
    Par défaut
    Jreaux :
    Montre-nous ton code.
    Ça peut en intéresser d'autres.
    Merci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    		$resultat = $requete->fetchAll();	
    		foreach ($resultat as $key => $variable)
    		{
    			echo("<div id='photo'>".
    			"<img src=\"#\" id=".$resultat[$key]['id']." Alt=\"Photo ici \" /><br/>".
    			"Age : ".$resultat[$key]['age']."<br/>".
    			"Pseudo : ".$resultat[$key]['pseudo']."<br/>".
    			"Emai : ".$resultat[$key]['mail']."<br/></div>");	
    		}
    Il faut aussi que le DIV "photo" soit en : "text-align=left;" dans le css.
    C'était simple en fait, chaque enregistrement lu dans la base est mis dans un DIV, et comme jai un div contener qui reçoit tous les affichage et qu'il a son css "text-align:center;" alors tous les DIV créées par la lecture des enregistrements vont s'afficher en ligne dans le contener et passer à la ligne suivante quand la largeur de la page est atteinte. ça fait bien l'affichage que je voulais en lignes et colonnes, et on limite le nombre d'affichage avec les parametres LIMIT et OFFSET de la chaine de recherche.

    Et puis comme l'affichage se fait dans le div contener, rien m'empêche de réduire sa largeur pour laisser la place à droite par exemple pour afficher un menu ou autre chose. ou bien réduire sa hauteur pour laisser une place en bas de page pour mettre par exemple les boutons : suivant / précédent / aller à / etc...

    Voilà j'espère que ça servira à ceux qui veulent faire de la pagination

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	foreach (...)
    		{
    			echo("<div id='photo'>".
    NON.
    Un attribut id DOIT ÊTRE UNIQUE.
    Donc ici, il faut utiliser une classe CSS.

    D'autre part, on peut "sortir" le code HTML du PHP : c'est plus lisible, et ça évite les soucis de ' et " :
    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
    <?php
    		$resultat = $requete->fetchAll();	
    		foreach ($resultat as $key => $variable)
    		{
    ?>
    		<div class="photo">
    			<img src="#" id="photo-<?= $resultat[$key]['id']; ?>" alt="Photo ici" />
    			<div>
    				Age : <?= $resultat[$key]['age']; ?><br/>
    				Pseudo : <?= $resultat[$key]['pseudo']; ?><br/>
    				Email : <?= $resultat[$key]['mail']; ?>
    			</div>
    		</div>
    <?php
    		}
    N.B. <?= est la balise courte pour <?php echo (Balises PHP).

    (depuis) 5.4.0 : La balise <?= est toujours disponible indépendamment de la configuration de l'option INI short_open_tag.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Des membres pour mon site en Wordpress.
    Par Yepazix dans le forum WordPress
    Réponses: 0
    Dernier message: 21/11/2018, 00h48
  2. Réponses: 3
    Dernier message: 05/06/2012, 10h38
  3. Réponses: 3
    Dernier message: 05/10/2011, 15h24
  4. [Tableaux] Afficher les données des membres
    Par iBook dans le forum Langage
    Réponses: 3
    Dernier message: 14/06/2007, 18h46

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