Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

citire fisiere din dir [rezolvat]
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> Instalare
Subiectul anterior :: Subiectul următor  
Autor Mesaj
danielsen



Data înscrierii: 14/Feb/2004
Mesaje: 104
Locație: Cluj-Napoca

Trimis: Mar Aug 12, 2008 2:31 am    Titlul subiectului: citire fisiere din dir [rezolvat]  

Am o functie pt schimbare limba pe site. Arata cam asa:

Cod: // limba implicita
if (!isset($_SESSION['lang'])) {
   $_SESSION['lang'] = 'ro';
}

if (isset($_GET['lang'])) {
   $_SESSION['lang'] = $_GET['lang'];
}

// functia text()

function text($nr) {

switch ($_SESSION['lang']) {
   case 'ro':
      $txt[0] = 'Pagină încărcată în %.3f secunde.';
      $txt[1] = 'căutare...';
      $txt[2] = 'utilizator';
      ...
   break;
   case 'en':
      $txt[0] = 'Page loaded in %.3f sec.';
      $txt[1] = 'search...';
      $txt[2] = 'user';
      ...
   break;
}

}

// switch-ul asta vreau sa-l fac altfel;
// sa fie o functie care sa citeasca fiecare fisier de limba dintr-un director
// (in cazul asta, case-urile de mai sus)

   function text($nr) {

      $director = opendir('./languages');

      while (false !== ($fisier_limba = readdir($director))):

         if (strpos($fisier_limba, '.php', 1)):

            include 'languages/'.$fisier_limba;

         endif;

      endwhile;

      $_SESSION['lang'] = $fisier_limba;

      return $txt[$nr];
   }

Am doua fisiere in directorul /language : ro.php si en.php
Daca dau link cu index.php?lang=en, e tot cu informatia pt ro; nu se schimba informatia, imi da cineva o idee?
Daca mai adaug un fisier de.php si daca dau un link cu index.php?lang=de sa se schimbe pe limba aia.
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 630
Locație: Drobeta Turnu Severin

Trimis: Mar Aug 12, 2008 3:32 am    Titlul subiectului:  

Tu programezi in Fox ? Ce-i cu "endif", "endwhile" ?
Vezi daca te ajuta asta :
Cod:
function text()
{
    $dir = './languages/';
    $file = glob($dir.$_SESSION['lang'].'.php');
    if (count($file)==1) include $file[0];
    if (isset($txt)) return $txt;
    return array();
}
Sus  
griffin



Data înscrierii: 07/Dec/2006
Mesaje: 95

Trimis: Mar Aug 12, 2008 8:32 am    Titlul subiectului:  

Nu programeaza in Fox, e doar sintaxa alternativa( Alternative syntax for control structures ) a PHP-ului pentru structurile de control.
http://phpbuilder.com/manual/en/control-structures.while.php
Oricum nu prea e ok sa scrie asa, dar daca ii convine asa......Eu folosesc structura alternativa in pagini in care e mult html ca arata mai ok codul.
Sus  
danielsen



Data înscrierii: 14/Feb/2004
Mesaje: 104
Locație: Cluj-Napoca

Trimis: Mar Aug 12, 2008 11:43 am    Titlul subiectului:  

In loc de textele corespondente pt fiecare limba, imi returneaza Array, intr-adevar include fisierele cum trebuie, dar nu si continutul, si de fapt e vina mea intr-un fel, ca n-am zis toata povestea, ce am facut si ce vreau sa fac. Cu endif si endwhile, n-are a face cu programarea in Fox, puteam foarte bine sa pun cu acolade, era un moft de-al meu doar.

Am incercat sa fac o clasa pe care o sa o dezvolt mai incolo. Arata asa:

Cod: class Limba {

   function text($nr) {

      switch ($_SESSION['lang']) {
         case 'ro':
            include 'lang/ro.php';
         break;
         case 'en':
            include 'lang/en.php';
         break;
      }

      return $txt[$nr];
   }
}
Un fisier ro.php sau en.php arata cam asa:
Cod: <?php

$txt[0] = 'nume/prenume:';
$txt[1] = 'adresa e-mail:';
$txt[2] = 'mesajul dvs:';
$txt[3] = 'trimite';

?>
si in context unde avem meniuri sau alte chestii apelam:

$limba = new Lang;

bla bla bla '. $limba->text(0) .' bla bla bla...
bla bla bla '. $limba->text(1) .' bla bla bla...

si asa mai departe.

Ziceam ca ar fi fost mai bine ca in loc de switch-ul ala, sa fie o functie care recunoasca si sa citeasca fisierele php din director si sa se foloseasca de variabila lang ... am folosit ce mi-ai dat tu, dar imi returneaza Array, nimic altceva.
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 630
Locație: Drobeta Turnu Severin

Trimis: Mar Aug 12, 2008 4:15 pm    Titlul subiectului:  

@griffin merci
@danielsen - functia de mai sus cred ca rezolva problema ta, eventual $_SESSION['lang'] il pui ca parametru al functiei si-ti intoarce intreg array-ul
Sus  
danielsen



Data înscrierii: 14/Feb/2004
Mesaje: 104
Locație: Cluj-Napoca

Trimis: Mar Aug 12, 2008 5:30 pm    Titlul subiectului:  

Ca bine zici tu, dar nu $_SESSION['lang'] ala il pun ca parametru, ci $nr:

Cod: class Lang {

   function text($nr) {

   $dir = './languages/';
   $file = glob($dir.$_SESSION['lang'].'.php');
   if (count($file) == 1) include $file[0];
   if (isset($txt)) return $txt[$nr];
   return array();

}}

Uitasem sa pun return $txt[$nr];
Mersi.
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> Instalare
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community