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 :

Besoin d'aide en PHP / HTML


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut Besoin d'aide en PHP / HTML
    Bonjour,
    Voici un bout de code où je m'arrache les cheveux !

    C'est une pagination avec un nombre de lignes, paramétrable, avec suivant et précédent.

    1- Je désire arriver sur ce formulaire avec une variable (qui vient d'ailleurs) qui me détermine le nb de lignes initial de ma liste. (Dans cet exemple : 5 lignes )

    2- Je navigue donc dans ma liste du choix du nb de pages. 3- J'en valide un. Le nb de ligne voulu s'affiche.

    3- Et je désire que la valeur du 'selected' que je viens de valider, réapparaisse comme choix par défaut, pour qu'il puisse piloter le nombre de lignes des pages suivantes ... si je ne le modifie pas !

    Merci de votre aide.
    Cordialement.
    Maub

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    <!doctype html>
     
    <html>
     
    <head>
        <link href="style.css" type="text/css" rel="stylesheet">
        <?php
        include("config.php");
        echo "<br>";  echo "<br>";  echo "<br>"; 
     
        $rowperpage = 5;
        $row = 0;
     
      	if(isset($_POST['rowperpage'])){
      			echo "nblign : ".$_POST['rowperpage']	;
      	 		$rowperpage = $_POST ['rowperpage']	;
        }
     
        echo "<h3> <center> Index_Demo_Pagination (".$rowperpage." lignes/page, sur 17 en tout) </h3> ";
     
        echo "<center>";       
        echo '<form action="" method="POST"> ';
    		echo ' Nb lignes par page : ';
    		echo '<select name="rowperpage" >'; 
    		echo '<option value=" 3">  3 lignes </option>';
    		echo '<option value=" 5">  5 lignes </option>';
    		echo '<option value="10"> 10 lignes </option>';
    		echo '<option value="20"> 20 lignes </option>';    
    		echo '</select>';
    		echo '<input type="submit" value="Valider" />'; 
    		echo "<br>"; echo "<br>"; 
     
        //  First Page
    		 if(isset($_POST['but_first'])){			//  Première page !!!
            $row = $_POST['row'];
            //  $row -= $rowperpage;
            $row = 0;
            if( $row < 0 ){
                $row = 0;
            }
        }
     
        // Previous Button
        if(isset($_POST['but_prev'])){
            $row = $_POST['row'];
            $row -= $rowperpage;
            if( $row < 0 ){
                $row = 0;
            }
        }
     
    		// Next Button
        if(isset($_POST['but_next'])){
            $row = $_POST['row'];
            $allcount = $_POST['allcount'];
            $val = $row + $rowperpage;
            if( $val < $allcount ){
                $row = $val;
            }
        }
     
    		// Last Page
        if(isset($_POST['but_last'])){			//  Denière page !!!
            $row = $_POST['row'];
            $row = $_POST['allcount'] - $rowperpage;
            $allcount = $_POST['allcount'];
            $val = $row + $rowperpage;
            if( $val < $allcount ){
                $row = $val;
            }
        }
     
        // generating orderby and sort url for table header
        function sortorder($fieldname){
            $sorturl = "?order_by=".$fieldname."&sort=";
            $sorttype = "asc";
            if(isset($_GET['order_by']) && $_GET['order_by'] == $fieldname){
                if(isset($_GET['sort']) && $_GET['sort'] == "asc"){
                    $sorttype = "desc";
                }
            }
            $sorturl .= $sorttype;
            return $sorturl;
        }
        ?>
    </head>
     
    <body>
     
    <div id="content">
        <table width="100%" id="emp_table" border="0">
            <tr class="tr_header">
                <th>S.no</th>
                <th ><a href="<?php echo sortorder('emp_name'); ?>" class="sort">Name</a></th>
                <th ><a href="<?php echo sortorder('salary'); ?>" class="sort">Salary</a></th>
                <th ><a href="<?php echo sortorder('gender'); ?>" class="sort">Gender</a></th>
                <th ><a href="<?php echo sortorder('city'); ?>" class="sort">City</a></th>
                <th ><a href="<?php echo sortorder('email'); ?>" class="sort">Email</a></th>
            </tr>
            <?php
     
            // count total number of rows
            $sql = "SELECT COUNT(*) AS cntrows FROM employee";
            $result = mysqli_query($con,$sql);
            $fetchresult = mysqli_fetch_array($result);
            $allcount = $fetchresult['cntrows'];
     
            // selecting rows
            $orderby = " ORDER BY id desc ";
            if(isset($_GET['order_by']) && isset($_GET['sort'])){
                $orderby = ' order by '.$_GET['order_by'].' '.$_GET['sort'];
            }
     
            // fetch rows
            $sql = "SELECT * FROM employee ".$orderby." limit $row,".$rowperpage;
            $result = mysqli_query($con,$sql);
            $sno = $row + 1;
            while($fetch = mysqli_fetch_array($result)){
                $name = $fetch['emp_name'];
                $salary = $fetch['salary'];
                $gender = $fetch['gender'];
                $city = $fetch['city'];
                $email = $fetch['email'];
                ?>
                <tr>		
                    <td align='center'><?php echo $sno; ?></td>
                    <td align='center'><?php echo $name; ?></td>
                    <td align='center'><?php echo $salary; ?></td>
                    <td align='center'><?php echo $gender; ?></td>
                    <td align='center'><?php echo $city; ?></td>
                    <td align='center'><?php echo $email; ?></td>
                </tr>
                <?php
                $sno ++;
            }
            ?>
        </table>
     
        <form method="post" action="">
            <div id="div_pagination">
                <input type="hidden" name="row" value="<?php echo $row; ?>">
                <input type="hidden" name="allcount" value="<?php echo $allcount; ?>">
                <input type="submit" class="button" name="but_first" value=" Première Page ">
                <input type="submit" class="button" name="but_prev" value="<<< Page Précédente ">
                <input type="submit" class="button" name="but_next" value="Page Suivante >>>">
                <input type="submit" class="button" name="but_last" value=" Dernière Page ">
            </div>
        </form>
     
    </div>
    </body>
    </html>

  2. #2
    Membre du Club
    Femme Profil pro
    particulier
    Inscrit en
    Juillet 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : particulier

    Informations forums :
    Inscription : Juillet 2020
    Messages : 51
    Points : 59
    Points
    59
    Par défaut
    Bonjour,

    En conservant la valeur dans un cookie, dans une cession, dans un hide du formulaire, dans un selected de la liste de choix....

  3. #3
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut
    Merci déjà pour cette première confirmation, ...
    mais déjà je ne sais pas comment fixer le premier 'selected' de façon à ce qu'il soit égal à la valeur de la variable avec laquelle j'entre pour la 1° fois sur le formulaire ... et non pas d'office égal à la première ligne du choix !

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    pour faire cela il vaut mieux passer les variables dans l'URL affichage.php?page=5&elements_par_page=10
    et donc vous pouvez les lire dans le tableau $_GET. ensuite vous pouvez utiliser l'opérateur ?? à la place de "isset", regardez dans la documentation là :
    https://www.php.net/manual/fr/langua...rison.coalesce

    donc le début du code donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
     
    $page = $_GET["page"] ?? 1; // par défaut on est sur la page 1
     
    $elements_par_page = $_GET["elements_par_page"] ?? 10; // par défaut 10 éléments par page

  5. #5
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut
    Merci Mathieu,

    Je crois comprendre qu'il faut que je lance mon formulaire ... avec ma variable ($rowperpage) qui vienne d'un formulaire précédent, et qu'elle arrive par un $_GET, un $_POST, ou $_SESSION ... au lieu d'être définie en dur dans les premières lignes du formulaire. Ai-je bien compris ?

    D'autre part, je ne saisis pas bien la fonction '??' ... mais je vais essayer de résoudre mon pblm avec $_SESSION['rowperpage'] venant du formulaire précédent !

    et je me demande comment le 'selected' sera 'attaché' à l'élément du choix que je viens de faire, afin qu'il pilote le nb de lignes des affichages suivants... tant que je ne le modifierai pas moi-même ?

    Peut-être suis je un peu dur de la cervelle, mais elle a 75 ans !

    Merci à tous cependant.
    Maub

  6. #6
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 595
    Points : 879
    Points
    879
    Par défaut
    Bonjour.
    Pour pointer systématiquement sur la valeur courante du nombre de lignes, j’emploierai le code suivant qui affiche, ou non, "selected" en fonction de la valeur de $rowperpage. Par ailleurs, pour éviter de réécrire 4 fois la même ligne, je créerai un petit tableau sur lequel boucler avec un foreach en remplacement des lignes 25 à 29 :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $nbLignes = array(3,5,10,20);
    foreach ($nbLignes as $ligne ){
        echo '<option value=" '.$ligne.'"';
        if ($rowperpage == $ligne){
            echo ' selected ';
            }
        echo'>  '.$ligne.' lignes </option>';
        }

    Cordialement
    Yves.
    Participez vous aussi !
    Message utile
    Discussion résolue

  7. #7
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut
    Bravo Yves !

    Ta solution est parfaite ... et ton idée du tableau aussi !
    C'est exactement mon souhait !

    Merci à tous.
    Cordialement
    Maub

  8. #8
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 756
    Points : 2 987
    Points
    2 987
    Par défaut
    Salut

    Sur base du code proposé par Yves, voici la même chose mais un poil plus lisible je pense:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $nbLignes = array(3,5,10,20);
    foreach ($nbLignes as $ligne) {
        $selected = ($rowperpage === $ligne) ? 'selected="selected"' : '';
        echo 'option value=" '.$ligne.'" ' . $selected . '> '.$ligne.' lignes</option>';
    }
    Le résultat étant strictement le même.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  9. #9
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Citation Envoyé par cavo789 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $selected = ($rowperpage === $ligne) ? 'selected="selected"' : '';
    La comparaison stricte ne marchera pas car $rowperpage est de type string. (J'ai fait la même ânerie).
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  10. #10
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 756
    Points : 2 987
    Points
    2 987
    Par défaut Déformation professionnelle
    Ah ? Pas fait attention, dans ce cas, si je vois bien sur mon écran de smartphone, changer la ligne 16 où l'affectation se fait et rajouter un (intval) ou int(...).

    Sous php 7 j'utiliserai la syntaxe courte pour définir le tableau, je n'utiliserai donc pas = array() mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $nbLignes = [3,5,10,20];
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  11. #11
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut
    Bonjour à tous,

    J'apprécie le souci 'technique' et amical, et les échanges conviviaux que chacun de vous a manifesté pour le petit problème que j'avais à résoudre.

    Bon weekend à tous.

    Cordialement.
    Maub

  12. #12
    Membre du Club
    Femme Profil pro
    particulier
    Inscrit en
    Juillet 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : particulier

    Informations forums :
    Inscription : Juillet 2020
    Messages : 51
    Points : 59
    Points
    59
    Par défaut
    Bonjour et Bonne Année,

    Même si c'est la même chose, pour une question de lisibilité (surtout en fin de journée), je préfère :
    $nbLignes = array(3,5,10,20); à $nbLignes = [3,5,10,20];,
    mais ça n'engage que moi.

  13. #13
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut
    Bonjour et Merci pour l'info que vous me donnez.

    Mon formulaire se comporte comme je veux ... pour le moment !

    Merci encore.

    Cordialement.
    Maub

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

Discussions similaires

  1. Besoin d'aide en PHP/HTML
    Par liliya14 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 07/09/2011, 12h07
  2. [XSLT] besoin d'aide XML -> listes HTML imbriquées
    Par lasdou15 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 17/04/2008, 13h47
  3. Besoin d'aide sur PHP/MyAdmin
    Par fabris dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 30/03/2006, 20h54

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