Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> generowanie zapytan poprzez __get...
kicaj
post
Post #1





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


Mam sobie plik php:
  1. Lorem...
  2. <?php echo $this -> user['first_name']; ?> - <?php echo $this -> user['last_name']; ?>
  3. ...ipsum


Chcialbym stworzyc teraz 2 zmienne, string i tablice
// $sGroup = 'user';
// $aGroup = array( 'first_name', 'last_name' );

Kombinowalem z __get(), ale nie moglem dostac sie do tych nazw...
Go to the top of the page
+Quote Post
LBO
post
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


$aGroup to jedna zmienna, nie może mieć dwóch wartości jednocześnie - stringa i tablicy.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


LBO - tam jest sGroup i aGroup (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

pozatym, kicaj, zupelnie nie wiem co chcesz osiagnac
Go to the top of the page
+Quote Post
phpion
post
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Również nie wiem co autor chce osiągnąć ale może przyda mu się is_array" title="Zobacz w manualu PHP" target="_manual oraz implode" title="Zobacz w manualu PHP" target="_manual.
Go to the top of the page
+Quote Post
Whisller
post
Post #5





Grupa: Zarejestrowani
Postów: 77
Pomógł: 5
Dołączył: 29.03.2006
Skąd: Poznań

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


Hmm chcesz coś takiego?

  1. <?php
  2. class MyExample
  3. {
  4. public function __get($field)
  5. {
  6. isset($this->myArray[$field]) ? return $this->myArray[$field] : '';
  7. }
  8.  
  9. private $myArray = array();
  10. }
  11.  
  12. $obj = new MyExample();
  13. echo $obj->first_name;
  14. echo $obj->last_name;
  15. ?>


Wartosci w tablicy $myArray mozesz w konstruktorze chocby ustawiac.
Go to the top of the page
+Quote Post
kicaj
post
Post #6





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


Rzeczywiscie wyrwane z konstektu, nie napisalem co mniej wiecej chce osiagnac.

Kod przedstawiony w moim poscie to cos a'la szablon, chcialbym zebrac wywolane zmienne, na tej zasadzie utworzyc zapytanie SQL: SELECT first_name, last_name FROM user LIMIT 1
Wybeplnic ta tablice i dopiero wyswietlic, niestety nachodzi mnie mysl ze od zlej strony sie za to zabieram...

Jakies propozycje?
Go to the top of the page
+Quote Post
Whisller
post
Post #7





Grupa: Zarejestrowani
Postów: 77
Pomógł: 5
Dołączył: 29.03.2006
Skąd: Poznań

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


Trochę jakby od końca dupy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Bo w zasadzie mógłbyś to zrobić przy użyciu __get, zebrać nazwy pól w tablicy albo jakieś zmiennej i potem wywoływać ->makeSelect który ci zrobi ten select. Ale sądzę że nie chcesz się ograniczać do tak prostych zapytań. Więc Moim zdaniem idea którą przedstawiasz się kompletnie do tego nie nadaje.
Nie wiem może chcesz osiągnąć coś co zostało już zaimplementowane w propel'u?
Go to the top of the page
+Quote Post
Sh4dow
post
Post #8





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


w sumie dalo by sie to zrobic, ale i tak musialbys filtrowac nazwy pol tak zeby nie wypisywac nazw nie istaniejacych w danej tabeli w bazie. Wiec musial bys na podstawie bazy danych robic klase, a wiec to jest Propel, ktory daje juz gotowe rozwiazanie i to z calkiem duzymi mozliwosciami.
Go to the top of the page
+Quote Post
kicaj
post
Post #9





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


@Whisller: Na poczatek moga byc proste zapytania, jak mozesz przedstaw bardziej jak to widzisz...

Plik template.phtml
  1. <html>
  2. <head>
  3. <title><?php echo $product_title; ?></title>
  4. </head>
  5. <body>
  6. <h1><?php echo $product_name; ?></h1>
  7. </body>
  8. </html>


Plik "parsera":
  1. <?php
  2. // plik szablonu
  3. $sFile = 'template.phtml';
  4. // pobiera zawartosc szablonu
  5. $sTemplate = file_get_contents( $sFile );
  6. // pobiera nazwy zmiennych (amatorka)
  7. preg_match_all( '/$([a-z_]+)/is', $sTemplate, $aVars );
  8. // laczy pobrane nazwy zmiennych w ciag znakow oddzielonych przecinkami
  9. $sColumns = implode( ', ', $aVars[1] );
  10. // tworzy zapytanie
  11. $sSQL = 'SELECT '. $sColumns .' FROM products';
  12. // tablica wygenerowana z bazy danych
  13. $aProducts = array( 'product_title' => 'Ksiazka PHP', 
  14. 'product_name' => 'PHP. Nowe mozliwosci, wyd. OReilly' );
  15. // konwertuje tablice do postaci:
  16. $product_title = 'Ksiazka PHP';
  17. $product_name = 'PHP. Nowe mozliwosci, wyd. OReilly';
  18. // wyswietla wypelniony szablon
  19. include( $sFile );
  20. ?>


Dziala to poprawnie jak chce, jednak nie jest to zbyt profesjonalnie zrobione, mam nadzieje ze ten kod nakresli co chce osiagnac, mile widziane ciekawsze propozycje...

(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

A jak CakePHP to robi? Jest ktos doswiadczony z CakePHP?

Ten post edytował kicaj 20.11.2007, 23:22:55
Go to the top of the page
+Quote Post

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: 27.09.2025 - 20:08