Page 1 sur 1

Remplir une variable NULL dans un autre doc .php

Posté : 05 déc. 2014, 20:50
par Staycem
Bonjour tout le monde,
N'étant pas une grande codeuse je me décide enfin à demander un peu d'aide de votre part à vous communauté de l'anneau...euh pardon du php.
Sans vous faire tout un roman, php je sais à quoi correspond "echo" (c'est une malade dans sa tête celle là me direz vous!) et comment on peut utiliser les variables (enfin a peu près).
Il y a quelques temps j'en ai eu assez de modifier du code html / css sur chaque page son mon site (même si c'est un site vitrine je voudrais que le code soit plus simplifié) car les risque d'erreurs et le temps perdu sont chose fréquentes avec cette manière de travailler.
Sur chaque page de mon site (qui est un portfolio) j'ai créé un tableau (1 ligne X 3 colonnes) pour y claquer des éléments stylisés (via css) , constatez par vous même:

Image
avec le code :
<div class="fleches">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
/* les class "avant" et "apres" gèrent des effets d'opacité de survol de souris tandis que les class "precedent" et "suivant" sont les deux triangles réalisés en pur css */
  <tr>
    <td class="avant" style="width:20%"><a href="machin.html"><div class="precedent"></div><h3>Lien Page MACHIN <h3></a></td>
    <td style="width:60%"></td>
    <td class="apres" style="width:20%"><a href="truc.html"><div class="suivant"></div><h3>Lien Page TRUC<h3></a></td>
  </tr>
</table>
</div>
Pour éviter de répéter le code je me suis dit que Php et les variables pourrait m'aider, donc j'ai cherché sur internet et j'ai vu qu'on pouvait créer un fichier ".php" avec des bouts de codes html dedans, et ce que j'ai fait donne ceci :
<?php 
$avant = NULL ;
$apres = NULL ;
$lienavant=NULL;
$lienapres= NULL;


?>

<div class="fleches">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td class="avant" style="width:20%"><a href="<?php echo $lienavant?>"><div class="precedent"></div><h3><?php echo $avant?><h3></a></td>
    <td style="width:90%"></td>
    <td class="apres" style="width:20%"><a href="<?php echo $lienapres?>"><div class="suivant"></div><h3><?php echo $apres?><h3></a></td>
  </tr>
</table>
</div>
Ce fichier je l'ai nommé "avant_apres.php"

D'après ce que j'ai compris, une valeur "Null" serait vide, donc il est possible de la remplir avec un valeur définie dans un autre fichier ".php"? ( Par exemple définir toutes mes variables de "avant_apres.php" dans un fichier "illustrations.php" par ex)
En gros je voudrais avoir la main sur mon code et les variables $avant (qui serait le texte clickable qui envoie vers la page précédente cf "Lien page machin" sur l'image) mais aussi la variable du lien $lienavant .
L'idée est donc de définir les variables dans mon deuxième fichier celui qui reçoit la commande " <?php include("php/avant_apres.php"); ?> "], ainsi je pourrais répéter ce code sur d'autre page (avec le même code diminué mais pas les mêmes liens et intitulés des liens)...
Comme je vous l'ai dit je suis une débutante basique donc je pense que l'idée générale y est, après, est il possible de faire ça ? (Je l'espère), et si non existe t il une autre méthode?
Bon je ne sais pas trop si je me suis bien fait comprendre =@ mais si ce n'est pas le cas dites moi tout =D

(Ps même si ce code n'a l'air de rien, je viens de me rendre compte que si ce "problème" est résolu, je pourrais en faire un usage plus important =O)

Merci à toi lecteur qui a tenu en vie jusqu'à la fin de ce post, et merci encore plus à ceux qui prendront du temps pour me répondre =D

Re: Remplir une variable NULL dans un autre doc .php

Posté : 05 déc. 2014, 21:09
par Nestecha
Hello,

A mon avis tu mélanges deux choses, l'inclusion de bouts de fichier qui est très pratique, et le fait de pouvoir dynamiser son code en fonction de la page sur laquelle on se trouve.

Inclusion des bouts de code HTML :
Pour éviter de répéter le code je me suis dit que Php et les variables pourrait m'aider, donc j'ai cherché sur internet et j'ai vu qu'on pouvait créer un fichier ".php" avec des bouts de codes html dedans, et ce que j'ai fait donne ceci :
J'imagine que ta <div class=fleches"> est présente sur toutes tes pages. Donc ce que tu peux faire, c'est créer une page avant_apres.php (comme tu l'as fait) mais dont le contenu ne serait QUE du code HTML :
<div class="fleches">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
/* les class "avant" et "apres" gèrent des effets d'opacité de survol de souris tandis que les class "precedent" et "suivant" sont les deux triangles réalisés en pur css */
  <tr>
    <td class="avant" style="width:20%"><a href="machin.html"><div class="precedent"></div><h3>Lien Page MACHIN <h3></a></td>
    <td style="width:60%"></td>
    <td class="apres" style="width:20%"><a href="truc.html"><div class="suivant"></div><h3>Lien Page TRUC<h3></a></td>
  </tr>
</table>
</div>
Ensuite, partout où tu voudras cette div, tu l'inclueras. Imaginons que je désire cette div entre deux <p> :
<p>lorem</p>
<?php include 'avant_apres.php'; ?>
<p>lorem</p>
Et ceci sera absolument la même chose qu'écrire :
<p>lorem</p>
<div class="fleches">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
/* les class "avant" et "apres" gèrent des effets d'opacité de survol de souris tandis que les class "precedent" et "suivant" sont les deux triangles réalisés en pur css */
  <tr>
    <td class="avant" style="width:20%"><a href="machin.html"><div class="precedent"></div><h3>Lien Page MACHIN <h3></a></td>
    <td style="width:60%"></td>
    <td class="apres" style="width:20%"><a href="truc.html"><div class="suivant"></div><h3>Lien Page TRUC<h3></a></td>
  </tr>
</table>
</div><p>lorem</p>
Maintenant tu aimerais dynamiser ton code en fonction de la page sur laquelle tu te trouves :
D'après ce que j'ai compris, une valeur "Null" serait vide, donc il est possible de la remplir avec un valeur définie dans un autre fichier ".php"? ( Par exemple définir toutes mes variables de "avant_apres.php" dans un fichier "illustrations.php" par ex)
En gros je voudrais avoir la main sur mon code et les variables $avant (qui serait le texte clickable qui envoie vers la page précédente cf "Lien page machin" sur l'image) mais aussi la variable du lien $lienavant .
L'idée est donc de définir les variables dans mon deuxième fichier celui qui reçoit la commande " <?php include("php/avant_apres.php"); ?> "], ainsi je pourrais répéter ce code sur d'autre page (avec le même code diminué mais pas les mêmes liens et intitulés des liens)...
Avant d'expliquer, est-ce que ton idée générale est de faire une navigation "comme" dans un livre ? Je clique sur le lien vers la droite, il m'emmène à la page suivante, je clique sur le lien vers la gauche, il m'emmène à la page précédente ?

Re: Remplir une variable NULL dans un autre doc .php

Posté : 05 déc. 2014, 21:21
par Staycem
Tout d'abord, merci de ta réponse Nestecha,
C'est déjà un peu plus clair grâce à ton explication et pour répondre à ta question oui, l'idée était en effet que la flèche vers la droite m'emmène vers la page d'après et la flèche de gauche à la page précédente. =)

Re: Remplir une variable NULL dans un autre doc .php

Posté : 05 déc. 2014, 23:09
par Nestecha
Ok, donc pour faire cela, pour tester crée :
avantapres.php, index.php, pageDeux.php, pageTrois.php, pageQuatre.php.

Code de index pageDeux etc :
<?php include 'avantapres.php'; ?>

<p>Index</p>
Avec entre les <p> ce que tu veux, c'est juste pour voir sur quelle page tu te trouves. C'est ainsi que tu procéderais sur tes vraies pages.

Ensuite le code de avantapres.php :
<?php

// On récupère l'URL complète dans REQUEST_URI, et on sépare chaque mot trouvé entre les / afin de mettre chaque valeur dans un tableau //
$aPartsOfPage = explode('/', $_SERVER['REQUEST_URI']);

// On récupère le nom réel de la page (index.php, ou pageDeux.php...) en cherchant la dernière valeur du tableau qu'on vient de créer
$sPageName = end($aPartsOfPage);

// Dans le cas où la dernière valeur est = '', c'est qu'on est sur le index.php mais qu'il n'est pas affiché, donc on change la variable en index.php.
if ($sPageName == '') {
    $sPageName = 'index.php';
}

// On crée un tableau avec toutes nos pages dedans, dans l'ordre (!!)
$aPages = ['index.php', 'pageDeux.php', 'pageTrois.php', 'pageQuatre.php'];

// On crée un compteur qui nous servira pour faire avancer les pages, on cherche la clé associée à la valeur $sPageName dans $aPages, sur index.php on cherchera donc quelle clé est attribuée à index.php dans $aPages, ici 0
$iCounterForward = array_search($sPageName,$aPages);

// Si le compteur dépasse le nombre de cases de notre tableau $aPages, on le fait revenir à zéro (sinon il ne saura plus où aller après la dernière page)
if ($iCounterForward >= count($aPages)-1) {
    $iCounterForward = 0;
}

// Tant que le nom de la page (index.php par exemple) est le même que la valeur de $aPages[compteur], on augmente de 1 le compteur, ainsi on accèdera à la page suivante
while ($sPageName == $aPages[$iCounterForward]) {
    $iCounterForward++;
}

$iCounterBackward = array_search($sPageName,$aPages);

// Même principe qu'au dessus, sauf qu'ici on sait que la première case est 0, donc on ne veut pas aller dans les -1 -2, donc si le compteur est à 0, on le fait remonter à la clé de la dernière case
if ($iCounterBackward <= 0) {
    $iCounterBackward = count($aPages) - 1;
}

// Même principe qu'au dessus, mais à l'envers
while ($sPageName == $aPages[$iCounterBackward]) {
    $iCounterBackward--;
}

// Ici ça servira à afficher le nom des pages sur lesquelles nous allons aller en fonction du nom des fichiers. C'est pas top, mais c'est déjà ça. On enlève simplement le .php avec des fonctions sur les chaînes de caractères.
$sAvant = substr($aPages[$iCounterBackward],0,strpos($aPages[$iCounterBackward],'.'));
$sApres = substr($aPages[$iCounterForward],0,strpos($aPages[$iCounterForward],'.'));

?>
<!-- Ici ton code original, sauf que j'ai ajouté le php dans les <a> et dans les <h3> -->
<div class="fleches">
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
            <td class="avant" style="width:20%"><a href="<?= $aPages[$iCounterBackward]; ?>">
                    <div class="precedent"></div>
                    <h3>Lien Page <?= $sAvant; ?></h3>
                </a>
            </td>
            <td style="width:60%"></td>
            <td class="apres" style="width:20%"><a href="<?= $aPages[$iCounterForward]; ?>">
                    <div class="suivant"></div>
                    <h3>Lien Page <?= $sApres; ?></h3>
                </a></td>
        </tr>
    </table>
</div>
Je sais, ça fait beaucoup. C'est assez rare de vouloir faire ce que tu veux faire, mais à mon avis t'apprendras beaucoup en comprenant tout ça, j'ai commenté tout le code pour que tu comprennes. Si tu as des questions n'hésite pas !

Re: Remplir une variable NULL dans un autre doc .php

Posté : 06 déc. 2014, 10:18
par sirakawa
Il serait beaucoup plus simple de nommer les pages
page1.html
page_2.html
et de mettre le numero '1,2...) de page courante en sESSION

Re: Remplir une variable NULL dans un autre doc .php

Posté : 06 déc. 2014, 21:52
par Staycem
Bonsoir Nestecha et Sirakawa,
je vous remerci pour ces deux réponses, je pense que j'ai de quoi faire avec ce que vous m'avez fourni merci de l'aide =D