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 :

[Tableaux] Utilisation d'"include" en PHP


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 44
    Points
    44
    Par défaut [Tableaux] Utilisation d'"include" en PHP
    Bonjour à tous,
    je débute en PHP/MySQL/WAMP5 (pas en informatique ...).
    j'utilise des includes pour insérer du code dans la page centrale de mon site (entre colonne gauche et droite, le truc classique).
    ces bouts de codes fonctionnent parfaitement en direct live mais plus quand je les met dans des includes.
    Par exemple, un insert ne fonctionne plus.
    Ou ma barre de pagination ne donne plus le bon lien (index.php?page=produits-affiche pour la 1ere page qui s'affiche bien et index.php?page=2 pour la page suivante qui renvoie à la page d'accueil).
    Il ne trouve pas bien sûr page=2 mais comment lui dire que c'est la page 2 de produits-affiche (produits-affiche?page=2) ?
    Quelque chose m'échappe ...
    Merci pour vos réponses.

  2. #2
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    salut,
    ce n'est pas très clair, mais cela vient surement de la récupération des variables depuis l'url.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    C'est vrai que je ne suis peut-être pas très clair.
    Je pense aussi que c'est un problème d'URL mais je ne touve pas la bonne syntaxe.
    J'ai modifié un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <TH><a href="<?php echo $_SERVER['SCRIPT_NAME']?>?page=1">
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <TH><a href="<?php echo $_SERVER['REQUEST_URI']?>?page=1">
    dans ma barre de navigation et maintenant j'ai bien le bon lien URL :
    page=produits-affiche2?page=2 ou page=produits-affiche2?page=3
    par contre je suis toujours renvoyé à la page d'accueil.
    ça doit être pourtant un cas classique ?
    D'où vient le bug ?

  4. #4
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    Est ce que tu fais de l'url rewriting?
    parce que sinon ça me parait bizarre comme url ça : page=produits-affiche2?page=2 !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    L'url rewriting, c'est pour un problème de sécurité ça ? je verrai ça plus tard.
    pour l'instant, mon gros problème, c'est que mes bouts de programmes fonctionnent bien isolément mais quand je les mets dans un include, rien ne va plus.
    pour faire par exemple mon "next page" de ma barre de navigation d'un tableau de valeurs , je veux rester sur la même page avec le même tableau et ses valeurs suivantes.
    pour l'instant je reviens toujours à ma page d'accueil, donc on sort de mon include.
    je n'ai trouvé aucune solution sur le net, les exemples sont toujours plus simplistes.
    faut-il ajouter un Return false ou un truc dans le genre à la fin de l'include ?
    (j'espère être plus clair ...)

  6. #6
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    je crois que le plus simple serait de poster ton code (raccourci si les pages sont longues) de ton include et de la page principale.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    Alors allons y.
    voilà le code du menu vertical qui appelle ma page qui affiche les données en tableau avec sa barre de navigation :
    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
    <div id="menu11">
         <ul>
         	<li><a href="index.php?page=accueil">Accueil</a></li>
           	<li><a href="index.php?page=produits-affiche2">Gestion Produits</a></li>
           	<li><a href="#">Magasins</a></li>
           	<li><a href="#">Partenaires</a></li>
           	<li><a href="#">Contact</a></li>
          </ul>
    </div>
    et le code de produits-affiche2.inc.php :
    <div id="tabsC">
      <ul>
        <li id="current"><a href="index.php?page=produits-affiche2" title="Liste de nos produits"><span>Liste</span></a></li>
        <li><a href="index.php?page=produits-insert" title="Ajout d'un nouveau produit"><span>Ajout</span></a></li>
        <li><a href="#" title="Modification d'un produit"><span>Modification</span></a></li>
        <li><a href="#" title="Suppression d'un produit"><span>Suppression</span></a></li>
      </ul>
    </div>   
    <?php
            //Calculer le nombre de pages
            define('LIGNES_PAR_PAGE', 8); // Constante : Nombre d'enregistrements par page
            $dbh = mysql_connect('localhost','root', '')
              or die("Echec de connexion : " . mysql_error());
            mysql_select_db("biobase", $dbh)
              or die("Echec de sélection de la base");
            $sql = "SELECT COUNT(*) AS NbPdt FROM produit";
            $id=mysql_query($sql);
            $record= mysql_fetch_object($id);
            $nombre= $record->NbPdt;
            $nombrePages = intval($nombre / LIGNES_PAR_PAGE);
            if ($nombre % LIGNES_PAR_PAGE)
                $nombrePages++;
            // Définir la page courante
            if ( (isset($_GET['page'])) && ($_GET['page'] > 0))
                $pageCourante = min($_GET['page'], $nombrePages);
            else
                $pageCourante = 1;
            // Récupérer les enregistrements de la page courante
            $debut = LIGNES_PAR_PAGE * ($pageCourante - 1);
     
            //$sql="SELECT * FROM Produits LIMIT $debut, " . LIGNES_PAR_PAGE;
            $sql="SELECT 
              p.idproduit AS pid, p.nom AS pnom, p.info AS pinfo, 
              p.prix AS pprix, p.date_prix AS pdateprix,
              f.nom AS fnom, g.nom AS gnom
              FROM produit p, famille f, groupe g 
              WHERE p.idfamille = f.idfamille 
              AND f.idgroupe = g.idgroupe LIMIT $debut, " . LIGNES_PAR_PAGE;
     
            $id=mysql_query($sql) or die( "Exécution requête PRODUIT impossible.");
    ?>
            <BR><BR>
            <H2>Liste des produits BIO2 (page <?php echo $pageCourante ?> / <?php echo $nombrePages ?>)</H2>
     
     
        <TABLE BORDER="4" width="650px">
                <TR style="background-color:#99cc33;color:green;">
                  <TH>REF.</TH>
                  <TH>NOM</TH>
                  <TH>ORIGINE</TH>
                  <TH>FAMILLE</TH>
                  <TH>GROUPE</TH>     
                  <TH>PRIX</TH> 
                  <TH>Date PRIX</TH>                             
                  <!--TH>Action</TH-->         
                </TR>
    <?php
                while($record = mysql_fetch_object($id)) { ?>        
    				    <!--tr style="background-color:{cycle values="#ffff00, #ffffcc"};"-->
                    <TR bgcolor=#ffffcc>
                        <TD bgcolor=#ffff99>&nbsp;<?php echo $record->pid; ?></TD>
                        <TD>&nbsp;<?php echo $record->pnom; ?></TD>
                        <TD>&nbsp;<?php echo $record->pinfo; ?></TD>
                        <td>&nbsp;<?php echo $record->fnom;  ?></td>
                        <td>&nbsp;<?php echo $record->gnom;  ?></td>
                        <td align="right">&nbsp;<?php echo number_format($record->pprix, 2, ',', ' ');  ?>&nbsp;&euro;&nbsp;</td>
                        <td>&nbsp;<?php echo $record->pdateprix;  ?></td>
                    </TR>                                    
                   <!--TD>
                       &nbsp;<INPUT TYPE="SUBMIT" NAME="UPDATE" VALUE="Modifier">
                       &nbsp;<INPUT TYPE="SUBMIT" NAME="DELETE" VALUE="Supprimer">
                   </TD-->                                     
    				    </tr>   
    <?php
                } ?>            	  
         </TABLE>          
     
    <BR>        
     
            <TABLE BORDER="1" WIDTH="60%">
                <TR bgcolor=#ccff99>
    <?php                // Montrer les liens de navigation dans une table HTML
                    if ($pageCourante > 1) {
                        // Début et Précédent    ?>
                        <!--TH><a href="<?php echo $_SERVER['SCRIPT_NAME']?>?next=1">&lt;&lt;</a></TH-->
                        <TH><a href="<?php echo $_SERVER['REQUEST_URI']?>?page=1">&lt;&lt;</a></TH>                    
                        <TH><a href="<?php echo $_SERVER['REQUEST_URI']?>?page=<?php echo $pageCourante - 1 ?>">&lt;</a></TH>
    <?php
                    } else {
                        // Début et Précédent désactivés ?>
                        <TH>&lt;</TH><TH>&lt;&lt;</TH>
    <?php
                    }
                    // Navigation directe vers une page
                    for ($i = 2; $i <$nombrePages; $i++) {
                        if ($i != $pageCourante) { ?>
                            <TH><a href="<?php echo $_SERVER['REQUEST_URI']?>?page=<?php echo $i ?>"><?php echo $i ?></a></TH>
    <?php
                        } else
                            echo "<TH>$i</TH>";
                    }
                    if ($pageCourante < $nombrePages) {
                        // Suivant et Dernier    ?>
                        <TH><a href="<?php echo $_SERVER['REQUEST_URI']?>?page=<?php echo $pageCourante + 1 ?>">&gt;</a></TH>
                        <TH><a href="<?php echo $_SERVER['REQUEST_URI']?>?page=<?php echo $nombrePages ?>">&gt;&gt;</a></TH>
    <?php
                    } else {
                        // Suivant et Dernier désactivés?>
                        <TH>&gt;</TH><TH>&gt;&gt;</TH>
    <?php
                    } ?>
                </TR>
            </TABLE>

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Si je comprends bien ton problème, tu veux obtenir une page en passant 2 variables : la page 2 de produits-affiche2 par exemple, c'est ça ?

    En tout cas, tu as un problème dans le passage de tes variables puisque tu renvoies 2 variables page (fichier.php?page=produits-affiche2?page=2). En plus, tu mets 2 fois "?"
    Essaie de changer comme ceci : fichier.php?page=produits-affiche2&partie=2 par exemple.
    Je pense que ça devrait résoudre ton problème.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 44
    Points
    44
    Par défaut problème INCLUDE PHP ... PRESQUE résolu
    Tout d'abord un grand merci à julien.63 et Pellirojo pour leur aide.
    Vous m'avez mis sur la bonne voie.
    La pagination fonctionne bien en mettant dans l'URL "&partie".
    Par contre, quand on regarde le lien, il s'allonge au gré de la pagination.
    C'est à dire qu'on obtient en bout d'URL, par exemple :
    ...&partie1&partie2&partie3&partie4&partie2 ...
    Comme la pagination fonctionne bien, je chipotte peut-être mais au bout d'un certain nombre de pagination, l'URL pourrait saturer ? et envoyer un message du genre "URL too long" ?
    J'ai pensé garder dans une variable $_SERVER[REQUEST_URI] mais le problème reste le même quel que soit l'endroit où je place cette variable dans le programme.
    Y a-t-il une astuce qui me règlerait ce petit problème ?

  10. #10
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    ...&partie1&partie2&partie3&partie4...
    Salut,

    Pourquoi ne pas utiliser plutôt partie=1 ou partie=2 ou partie=3... ?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    c'est bien :
    ...&partie=1&partie=2&partie=3&partie=4&partie=2 ...
    que j'obtiens dans mon lien.
    Désolé, j'ai rédigé trop vite ma question.
    Donc, quelle est l'astuce pour n'avoir en bout d'URL que :
    &partie=1
    ou &partie=2
    ou &partie=3 ... ?

  12. #12
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    En fait, je ne suis pas certain de comprendre comment tu es parvenu à ce résultat. Peux-tu m'indiquer clairement la portion de code incriminée (la boucle) ?

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    un bout du code de mon script produits-affiche2.inc.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            // Définir la page courante
            if ( (isset($_GET['partie'])) && ($_GET['partie'] > 0))
                $pageCourante = min($_GET['partie'], $nombrePages);
            else
                $pageCourante = 1;
     
            // Récupérer les enregistrements de la page courante
            $debut = LIGNES_PAR_PAGE * ($pageCourante - 1);
    Voilà le code de ma "table" Pagination :
    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
     
             <TABLE BORDER="1" align=center height="32" WIDTH="60%">
                <TR valign=middle bgcolor=white>
    <?php                // Montrer les liens de navigation dans une table HTML
                    if ($pageCourante > 1) {
                        // Début et Précédent    ?>
                        <TH><a href="<?php echo $_SERVER[REQUEST_URI]?>&partie=1">
                        <img src="images/leftend.gif" width="20" height="22" border="0" alt="&lt;&lt;"></a></TH>                    
                        <TH><a href="<?php echo $_SERVER[REQUEST_URI]?>&partie=<?php echo $pageCourante - 1 ?>">
                        <img src="images/left.gif" width="20" height="22" border="0" alt="&lt;"></a></TH>
    <?php
                    } else {
                        // Début et Précédent désactivés ?>
                        <TH><img src="images/leftend.gif" width="20" height="22" border="0" alt="&lt;&lt;"></TH>
                        <TH><img src="images/left.gif" width="20" height="22" border="0" alt="&lt;"></TH>                    
    <?php
                    }
                    // Navigation directe vers une page
                    for ($i = 2; $i <$nombrePages; $i++) {
                        if ($i != $pageCourante) { ?>
                            <TH><a href="<?php echo $_SERVER[REQUEST_URI]?>&partie=<?php echo $i ?>"><?php echo $i ?></a></TH>
    <?php
                        } else
                            echo "<TH>$i</TH>";
                    }
                    if ($pageCourante < $nombrePages) {
                        // Suivant et Dernier    
    ?>
                        <TH><a href="<?php echo $_SERVER[REQUEST_URI]?>&partie=<?php echo $pageCourante + 1 ?>">
                        <img src="images/right.gif" width="20" height="22" border="0" alt="&gt;"></a></TH>
                        <TH><a href="<?php echo $_SERVER[REQUEST_URI]?>&partie=<?php echo $nombrePages ?>">
                        <img src="images/rightend.gif" width="20" height="22" border="0" alt="&gt;&gt;"></a></TH>
    <?php
                    } else {
                        // Suivant et Dernier désactivés          
    ?>
                        <TH><img src="bouton2.jpg" width="160" height="34" border="0" alt="suiv"></TH><TH>&gt;&gt;</TH>
    <?php
                    } ?>
                </TR>
            </TABLE>

  14. #14
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Je ne vois pas le code qui produit cette sortie :
    ...&partie=1&partie=2&partie=3&partie=4&partie=2 ...

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    A mon avis, le problème se situe là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <TH><a href="<?php echo $_SERVER[REQUEST_URI]?>&partie=<?php echo $pageCourante - 1 ?>">
                        <img src="images/left.gif" width="20" height="22" border="0" alt="&lt;"></a></TH>
    le REQUEST_URI conserve le lien en cours avec partie="n" à chaque changement de "partie".
    J'ai donc :
    .../index.php?page=produits-affiche2&partie=2&partie=3&partie=2 dans l'URL
    si je vais en partie 2 puis 3 puis reviens en partie 2 !

  16. #16
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Ah ok, pardon ^^

    Il y a d'autres solutions :
    • $_SERVER['PHP_SELF']
    • __FILE__

    Attention toutefois --> $_SERVER['PHP_SELF'] et XSS

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    J'ai déjà testé les 2 et même le reste !
    Je n'ai pas trouvé la solution qui convient.
    Ce qui m'étonne quand même c'est que cet URL quio s'allonge "à l'infini" fontionne quand même !

  18. #18
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Si si, un truc très courant est d'utiliser basename(__FILE__) car cela récupère uniquement le nom du script en cours.
    Sinon, tu peux utiliser $uri = parse_url($_SERVER['REQUEST_URI']) puis utiliser uniquement le nom du script (cf. la doc de la fonction), mais je pense que ça devient tiré par les cheveux.

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/02/2006, 19h06

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