Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Ścieżka pliku jako zmienna
shpaque
post
Post #1





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Witam znów serdecznie; mam tym razem taki problem /pewnie jak zwykle prosty ale mnie juz trafia szlag/ (IMG:style_emoticons/default/biggrin.gif) .
  1. <?php
  2.  
  3. ini_set('display_errors', 1);
  4.  
  5. "Content-Type: text/plain; charset=UTF-8";
  6. $error_message = "";
  7. if ($_SERVER['REQUEST_METHOD'] == 'POST')
  8. {
  9. $action = isset($_POST['action']) ? $_POST['action'] : '';
  10. $database = './../.db/data.db';
  11. $success_page = './nok.php';
  12.  
  13. if (!file_exists($database))
  14. {
  15. echo 'Nie odnaleziono bazy danych!';
  16. }
  17.  
  18. if ($action == 'dodaj')
  19. {
  20. $newkod = $_POST['kod'];
  21. $newopis = $_POST['opis'];
  22. $newcena = $_POST['cena'];
  23. $newfileupload =
  24.  
  25. $items = file($database);
  26. foreach($items as $line)
  27. {
  28. list($zdjecie, $kod, $opis, $cena, $status) = explode('|', trim($line));
  29. if ($newkod == $kod)
  30. {
  31. $error_message = 'Wygenerowany kod już istnieje! Odśwież formularz w celu wygenerowania nowego kodu.';
  32. break;
  33. }
  34. }
  35. if (empty($error_message))
  36. {
  37. $file = fopen($database, 'a');
  38. fwrite($file, $newkod);
  39. fwrite($file, '.jpg|');
  40. fwrite($file, $newkod);
  41. fwrite($file, '|');
  42. fwrite($file, $newopis);
  43. fwrite($file, '|');
  44. fwrite($file, $newcena);
  45. fwrite($file, '|1');
  46. fwrite($file, "\r\n");
  47. fclose($file);
  48. header('Location: '.$success_page);
  49. }
  50. }
  51. }
  52. ?>


chodzi mi o linijke
  1. $database = './../.db/data.db';
- jesli jest stala sciezka - wszystko gra; tyle że ja mam ok 10 plików *.db i chcialbym w zaleznosci od wartosci zmiennej zebypodmieniał wartosc pliku bazowego - tyle ze to nie dziala!

Najpierw zrobilem tak
na poczatku strony
  1. <?php
  2. $category = $_GET['category'];
  3. $generate = rand(0000000, 9999999);
  4. $cat = '';
  5. $text = '';
  6. $dbase = '';
  7. if ($category == balony)
  8. {
  9. $cat = "BA";
  10. $text = "Balony";
  11. $dbase = "./../db/balony.db";
  12. }
  13. else if ($category == ceramika)
  14. {
  15. $cat = "CE";
  16. $text = "Ceramika";
  17. $dbase = "./../db/ceramika.db";
  18. }
i tak dalej = więc zmienna $dbase przybiera rozne wartosci, tyle ze jesli pozniej zrobie
  1. $database = $dbase;
to nic nie pobiera... jak to rozwiazac?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


A na jakiej zasadzie są tworzone te zmienne? Jeśli $cat to dwie pierwsze litery zamienione na duże, a $text to nazwa pisana z dużej litery, to możesz to zrobić tak:
  1. if(isset($_GET['category']) && $_GET['category'] != '') {
  2. $dbName = $_GET['category'].'.db';
  3. $dbDirectory = './../db/';
  4. $dbPath = $dbDirectory.$dbName;
  5. $cat = strtoupper(substr($_GET['category'], 0, 2));
  6. $text = ucfirst($_GET['category']);
  7. // reszta skryptu
  8. } else {
  9. // coś jest nie tak, więc trzeba ten błąd obsłużyć
  10. }

A jeśli istnieją jakieś szczególne przypadki, to lepiej użyć switch():
  1. if(isset($_GET['category']) && $_GET['category'] != '') {
  2. $dbName = $_GET['category'].'.db';
  3. $dbDirectory = './../db/';
  4. $dbPath = $dbDirectory.$dbName;
  5. switch($_GET['category']) {
  6. 'dziwnie_nazwana_kategoria':
  7. $cat = 'DZI';
  8. $text = 'DziwnieNazwanaKategoria';
  9. break;
  10. default:
  11. $cat = strtoupper(substr($_GET['category'], 0, 2));
  12. $text = ucfirst($_GET['category']);
  13. }
  14. } else {
  15. // coś jest nie tak, więc trzeba ten błąd obsłużyć
  16. }


Cytat
no tak tyle że kiedy zmienna $category przybiera rozne wartości - wszystkie zmienne w klamrze przybieraja okreslone wartosci - wiec tutaj dziala; problem polegal tylko na pliku $database poniewaz jesli dostawał cos innego niz konkretna sciezke w '' to wariowal...

Szczerze wątpię, że Ci to działało, chyba że popełniłeś błąd podczas przepisywania skryptu tutaj na forum. Myślę jednak, że to po prostu nie działało i dlatego zmienna $database nie była tym, czym powinna być. Zresztą co za problem zrobić tak:
  1. $database = $dbase;
  2. var_dump($database);


Ten post edytował mortus 14.09.2011, 16:29:47
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 05:40