Includere fisier cu nume din variabila

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
bvlucretiu
Mesaje: 88

Includere fisier cu nume din variabila

Bună!
Pot să înlocuiesc valoarea lui case cu o variabilă pentru a nu fi nevoit să întind o listă enormă în cazul în care am mai multe pagini?
Am acest cod, iar la mai multe pagini acesta crează o listă din ce în ce mai mare !

Cod: Selectaţi tot

case 'prima':
	  if (file_exists("prima.php"))
	     {
	     include_once("prima.php");
	     $afisare = '';
	     }
	     else
	     {
	     $afisare = '<br>Eroare: Nu se gaseste fisierul prima.php';
	     }
		break;
Vă mulțumesc!

MarPlo Mesaje: 4343
Salut
Poti sa faci asa, fara "case":

Cod: Selectaţi tot

//array with allowed files to include
$files =['prima', 'alta', 'xts123'];

$file ='prima';  //get file name
$afisare ='';
if(in_array($file, $files)){
  if(file_exists($file .'.php')) include $file .'.php';
  else $afisare ='<br>Eroare: Nu se gaseste fisierul: '. $file .'.php';
}
else $afisare ='<br>Eroare: Nu e permis nume fisier: '. $file;

bvlucretiu Mesaje: 88
Bună!
$files cum aş putea face să o preiau dintr-un tabel din baza de date cu MySQL fără să mai fiu nevoit să extind acel array, şi în acest caz aş putea popula coloana din care se preia variabila automat în momentul creeri necesităţii respectivei pagini!?
Vă mulţumesc mult, am învăţat mult de la dv din acest site!
Am studiat aproape tot siteul ceea ce ţine de programare, dar unele lucruri pe care nu le înţeleg, nu le pot învăţa decât de aici, din forum!
Vă mulţumesc!

MarPlo Mesaje: 4343
Faci un Select la acel tabel si adaugi datele (numele fisierelor) din coloana respectiva in $files.

Cod: Selectaţi tot

$files =[];
$sql ="SELECT nume_coloana FROM tabel";
$result = $conn->query($sql);

while($row = $result->fetch_assoc()){
  $files[] = $row['nume_coloana'];
}
- Sau, mai indicat, verifici direct daca $file e in tabel, fara sa mai creezi array-ul $files, si daca e, aplici include.

Cod: Selectaţi tot

$sql = "SELECT id FROM tabel WHERE coloana_fisier ='$file' LIMIT 1";
Daca e rand returnat, continui cu include.

Iar la crearea paginii faci un Insert in acel tabel, cu numele fisierului /paginii.

bvlucretiu Mesaje: 88

Cod: Selectaţi tot

<?php
$pagina = isset($_GET['pagina']) ? trim(strip_tags($_GET['pagina'])) :'index';
 if(file_exists($pagina .'.php')) include $pagina .'.php';
  else $afisare ='<br>Eroare: Nu se gaseste fisierul: '. $pagina .'.php';
?>
Cu această formulă funcționează perfect, adică mă refer la faptul că nu mai am nevoie să mai evidențiez prin case cu switch și nu mai spune ca se cere pagina prima sau alta dar nu există pe server cu era înainte, însă funcționează fără baza de date, iar else-ul de la funcția if nu funcționează, nu știu de ce; adică chiar dacă fișierul nu există nu se afișează mesajul specificat,respectiv Eroare: Nu se gaseste fisierul: pur și simplu îmi afișează o pagină goală cu fundalul siteului din body decorat de css!
Toate bune!

MarPlo Mesaje: 4343
Acel mesaj e continut in variabila $afisare; ca sa apara in pagina aplica-i "echo" in <body>:

Cod: Selectaţi tot

<?php if(isset($afisare)) echo $afisare; ?>

Subiecte similare