Afficher le nom de mes variables
pyn -
Bonjour.
Je prepare un interface d'adminixtration pour le gestionnaire d une web.
J'ai un fichier php qui contient mes variable.
J'autorise la modification de la valeur des variable et sauvegarde une copie de la variable initiale en ajoutant la date au nom de la variable.
Par exemple.
$titre = "mon titre"
Le egstionaire modife une variable et j'ai donc:
$titre_2026_01_14_20_12_10 = "mon titre"
$titre = "mon nouveau titre
$sous_titre_2026_01_14_20_12_10 = "mon sous titre"
$sous_titre = "mon nouveau sous titre"
Je veux recuperer le nom de la variable avec la date
Avec un formulaire je voudrais choisir la "categorie" ($titre ) de variable que je veux afficher afin de definir la date de la modiccation en recuperant le 2026_01_14_20_12_10
J ai essayer
$file = file_get_contents('texte.php', true);
print_r($file);
Mais cela me donne seulemet les valeurs des variables.
Comment puis-je obtenir la des variable suivant le choix formulaire.
Merci pour votre aide
4 réponses
-
Bonjour,
<?php // articles.php $articles = [ '2026-01-01' => [ 'titre' => 'un super titre', 'sous-titre' => 'ceci est le premier sous-titre', ], '2026-01-02' => [ 'titre' => 'un autre titre', 'sous-titre' => 'ceci est le deuxième sous-titre', ], ];<?php include 'articles.php'; ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>Consultation article</title> </head> <body> <form> <select name="date"> <?php foreach (array_keys($articles) as $date) : ?> <option value="<?= htmlspecialchars($date) ?>"><?= htmlspecialchars($date) ?></option> <?php endforeach; ?> </select> <input type="submit"> </form> <?php if (isset($_GET['date'])) : if (!is_string($_GET['date']) || !array_key_exists($_GET['date'], $articles)) : ?> <p class="alert-error">Date invalide</p> <?php else : $article = $articles[$_GET['date']]; ?> <h1><?= htmlspecialchars($article['titre']) ?></h1> <small><?= htmlspecialchars($article['sous-titre']) ?></small> <?php endif; endif; ?> </body> </html> -
Ouhaouuu super Pyn. je comprend pourquoi je n'y arrivais pas. MERCI
-
Bonjour je sais que j'ai marqué en "résolu" mais je n'arrive pas a le remettre en actif.
La solution apportée est geniale, mais comment puis-je faire pour ajouter ou modifier ou supprimer une variable dans ce tableau dynamique.
Pour ajouter j'ai essayé avec puch_array() mais sans résultat. MA sintaxe doit être mauvaise. LA voici
$arr = array('articles'); array_push($arr, "debut");pour supprimer
unset($articles['2026-01-01']);merci pour votre soutien
-
Je pensais que l'administrateur allait modifier directement le fichier contenant les données à la main.
Si tu veux rendre modifiable le tableau des données via la page html, l'utilisation d'un tableau php pour le stockage des données n'est pas le mieux adapté.L'idéal serait surement de te tourner vers l'utilisation d'une base données.
Sans base de données, tu peux utiliser un autre format tel que le json pour le stockage des données.
PHP propose les fonctions json_encode() et json_decode() pour convertir un tableau php en json et inversement.Un exemple plus complet avec l'utilisation d'un fichier json.
Fichier articles.json :
{ "2026-01-01": { "titre": "un super titre", "sous-titre": "ceci est le premier sous-titre" }, "2026-01-02": { "titre": "un autre titre", "sous-titre": "ceci est le deuxième sous-titre" } }Fichier index.php :
<?php $articles = json_decode(file_get_contents('./articles.json'), true); if (isset($_POST['action']) && 'ajouter' === $_POST['action']) { if (empty($_POST['date']) || empty($_POST['titre']) || empty($_POST['sous-titre'])) { echo 'Données invalides'; } else { $articles[$_POST['date']] = []; $articles[$_POST['date']]['titre'] = $_POST['titre']; $articles[$_POST['date']]['sous-titre'] = $_POST['sous-titre']; file_put_contents('./articles.json', json_encode($articles, JSON_PRETTY_PRINT)); header('Location: '.$_SERVER['PHP_SELF']); exit(); } } if (isset($_POST['action']) && 'supprimer' === $_POST['action']) { if (!is_string($_POST['date']) || !array_key_exists($_POST['date'], $articles)) { echo 'Date invalide'; } else { unset($articles[$_POST['date']]); file_put_contents('./articles.json', json_encode($articles, JSON_PRETTY_PRINT)); header('Location: '.$_SERVER['PHP_SELF']); exit(); } } ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>Gestion article</title> </head> <body> <h1>Gestion article</h1> <form> <h2>Consulter un article</h2> <select name="date"> <?php foreach (array_keys($articles) as $date) : ?> <option value="<?= htmlspecialchars($date) ?>"><?= htmlspecialchars($date) ?></option> <?php endforeach; ?> </select> <input type="submit" value="Consulter"> </form> <?php if (isset($_GET['date'])) : if (!is_string($_GET['date']) || !array_key_exists($_GET['date'], $articles)) : ?> <p class="alert-error">Date invalide</p> <?php else : $article = $articles[$_GET['date']]; ?> <h1><?= htmlspecialchars($article['titre']) ?></h1> <small><?= htmlspecialchars($article['sous-titre']) ?></small> <hr> <?php endif; endif; ?> <form method="post"> <h2>Ajouter un article</h2> <label>Date : <input type="text" name="date" placeholder="2026-01-03" required></label> <label>Titre : <input type="text" name="titre" placeholder="un nouveau titre" required></label> <label>Sous-titre : <input type="text" name="sous-titre" placeholder="un nouveau sous-titre" required></label> <input type="submit" value="Ajouter"> <input type="hidden" name="action" value="ajouter"> </form> <form method="post"> <h2>Supprimer un article</h2> <select name="date"> <?php foreach (array_keys($articles) as $date) : ?> <option value="<?= htmlspecialchars($date) ?>"><?= htmlspecialchars($date) ?></option> <?php endforeach; ?> </select> <input type="submit" value="Supprimer" onclick="return confirm('Êtes-vous sûr de vouloir supprimer cet article ?')"> <input type="hidden" name="action" value="supprimer"> </form> <pre> Debug : <?php foreach ($articles as $date => $article) { echo $date . "\n"; foreach ($article as $name => $value) { echo $name . ' : ' . $value . "\n"; } } ?> </pre> </body> </html>L'interface que tu veux développer ce nomme généralement CRUD qui est un accronyme pour les 4 opérations Create, Read, Update, Delete.
L'utilisation d'une base de données est souvent recommandée pour ce genre d'interface, tu peux trouver pleins de tutos sur le net pour réaliser une CRUD avec une bdd, un exemple parmis d'autres :
https://nouvelle-techno.fr/articles/live-coding-creer-un-crud-en-php