Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: tablice, zmienne i sql
Forum PHP.pl > Forum > Przedszkole
Fallout
Witam,

najpierw wrzuce listingi a potem napisze o co chodzi smile.gif

pokaz.php:
  1. <?php
  2. include (&#092;"funkcje.php\");
  3. // jesli wszystkie pola (jak=0) to wypisanie ich
  4. if ($_SESSION['jak']==0)
  5. {
  6.  switch($_SESSION['gdzie'])
  7.  {
  8. case 'bank':  $tabela = 'centrala'; break;
  9. case 'oddzialy': $tabela = 'oddzial'; break;
  10. case 'klienci': $tabela = 'klient';  break;
  11. case 'konta': $tabela = 'konto'; break;
  12.  }
  13. }
  14. // wypisanie wynikow
  15. $link = mysql_connect(&#092;"host\",\"user\",\"pass\");
  16. $db = mysql_select_db(&#092;"db_bank\", $link);
  17. $sql = &#092;"SELECT * FROM $tabela\";
  18. $wynik = mysql_query($sql, $link) or Die(&#092;"blad zapytania!\");
  19. // tworzenie tabeli
  20. th($tab_klient);
  21.  
  22. while($row = mysql_fetch_array($wynik))
  23. {
  24.  
  25. }
  26. // wypisanie wynikow
  27. echo &#092;"<tr><td>$a</td></tr>\";
  28. // zamkniecie tabeli
  29. echo&#092;"</TABLE>\";
  30. mysql_close($link);
  31. ?>


funckje.php:
  1. <?php
  2. $tab_klient = array(&#092;"id_klient\", \"imie\", \"nazwisko\", \"pesel\" ,\"data_ur\" , \"adr_ulica\",
  3. &#092;"adr_miasto\", \"adr_dom\", \"adr_mieszkanie\", \"adr_kod\");
  4.  
  5. function th($tabela)
  6. {
  7.  echo &#092;"<TABLE border=1>\";
  8.  foreach ($tabela as $nazwa)
  9.  {
  10. echo &#092;"<TH>$nazwa</TH>\";
  11.  }
  12. }
  13. ?>


a teraz jak obiecalem smile.gif napisze o co chodzi...

1) w funkcje.php mam tablice $tab_klient, zamiar byl taki aby nazywala sie $klient (beda jeszcze inne $oddzial, $centrala, $konto) i chodzi o to zeby w funkcji th zmienna byla ze switcha (linia 8, pokaz.php) czyli mniej wiecej tak:
  1. <?php
  2.  
  3.  switch($_SESSION['gdzie'])
  4. {
  5. case 'bank':  $tabela = 'centrala'; break;
  6. case 'oddzialy': $tabela = 'oddzial'; break;
  7. case 'klienci': $tabela = 'klient';  break;
  8. case 'konta': $tabela = 'konto'; break;
  9. }
  10.  
  11. (...)
  12.  
  13. th($tabela);
  14.  
  15. ?>


niestety takie przypisanie nie dziala sad.gif jak to zrobic o ile sie da? jesli czego nie rozumiecie (troche to zagmatwane) to chetnie wyjasnie smile.gif

2. jak dynamicznie to dynamicznie smile.gif chodzi o to aby
1) ze switcha dostaje o ktora tabele chodzi
2) tworze tabele na podstawie tablicy odpowiedniej dla tej tabeli
3) z fetch pobieram dane do tablicy (odpowiedniej dla tabeli)
4) wypisuje
  1. <?php
  2.  echo &#092;" <td>$wynik_dla_tab_klient['id_klient']</td>\"; 
  3. ?>


jednego jestem pewien ze musi byc jakas petelka smile.gif tylko jaka.. kompletnie nie mam pomyslu jak to rozwiazac.. nawet nie jestem pewien czy tak sie da sad.gif

pomysl mam taki (pewnie bledny)

  1. <?php
  2.  
  3. for ($i=1; i$==count($tabela); $i++)
  4. {
  5.  fetch(..)
  6.  {
  7. $wynik_tab_klient[1] = $row['id_klient'];
  8.  }
  9. }
  10.  
  11. ?>


nawet nie wiem jak to opisac i napisac smile.gif wynik tego wszystkie ma byc mniej wiecej taki:

  1. <?php
  2.  
  3. (...)
  4. // tworzenie tabeli
  5. th($tabela);
  6. while($row = mysql_fetch_array($wynik))
  7. {
  8.  wyniki[1] = row[$tabela[1]];
  9. }
  10. // wypisanie wynikow
  11. echo &#092;"<tr><td>$wyniki[1]</td></tr>\";
  12.  
  13. ?>


bosz.. mam nadzieje ze za bardzo nie zakrecilem smile.gif
z gory dziekuje za jakiekolwiek odpowiedzi, listingi i odwolania do manuala tongue.gif

pozdrawiam
sf
Nie rozumiem. Napisz może co wprowadzasz, a co ma wyjść na końcu.
Fallout
Cytat(sf @ 2004-12-07 19:47:22)
Nie rozumiem. Napisz może co wprowadzasz, a co ma wyjść na końcu.

moze napisze to tak:

1) ze switcha dostaje zmienna $tabela, ktora zawiera nazwe tabeli w bazie
2) na podstawie tej zmiennej odwoluje sie do funckji th($tabela), dzieki ktorej tworze naglowki tabeli w html
3) lacze sie do bazy,
4) pobieram dane z $tabela
i do tego momentu jest ok (poza problemem nr. 1)

dalej mialobyc tak:

5) dane z tabeli ida do $tablica2
6) wypisuje dane z $tablica2 na podstawie $tablica1 np

echo "<td>$tablica2[$tablica1[1]]</td>";

np. echo "<td>$tablica2[$tablica1['id_klient']]";

7) zamykam polaczenie i ogladam tabele w przegladarce smile.gif

po prostu mam gotowe nazwy kolumn z tabel w tablicach i na podstawie ich
chcialbym generowac strony, mialo byc szybko prosto i latwie a na razie jest lipa sad.gif

i jak jasniej?

pzdr.
scanner
Jak ja nienawidzę nagabywania na PW o "pilne zaglądnięcie do wątku, bo mi sie spieszy" lub podobnie...

1. pokaz.php
- skąd się bierze zmienna $tab_klient?

2. Widżę po kodzie, ze zapowiada się większa aplikacja. Skoro tak, to zacznij od nowa i naucz się stosować szablony - odpadnie Ci tworzenie funkcji generujących jakieś html'owe outputy.

3. Zapoznaj się z jakims silnikiem DAO w eZ SQL na przykład (ja używam) jedną linijką dostaje gotową tablicę / obiekt ze "sfetchowanymi" (sorki za określenie) danymi.

Jeśłi podajesz jakieś operacje na bazie, dobzre by było pokaząc nam strukturę (zapytanie CREATE TABLE) tej bazy - oczywiście tylko tych tabel, które są konieczne.

Zacznij stosować Standardy Kodowania, które polecaliśmy na Wortalu.

Na razie Twoje kody sa z leksza nieczytelne, a i problem chyba zbytnio się zagmatwał przez przekombinowanie.
Fallout
Cytat(scanner @ 2004-12-09 07:56:06)
Jak ja nienawidzę nagabywania na PW o "pilne zaglądnięcie do wątku, bo mi sie spieszy" lub podobnie...

1. pokaz.php
- skąd się bierze zmienna $tab_klient?

2. Widżę po kodzie, ze zapowiada się większa aplikacja. Skoro tak, to zacznij od nowa i naucz się stosować szablony - odpadnie Ci tworzenie funkcji generujących jakieś html'owe outputy.

3. Zapoznaj się z jakims silnikiem DAO w eZ SQL na przykład (ja używam) jedną linijką dostaje gotową tablicę / obiekt ze "sfetchowanymi" (sorki za określenie) danymi.

Jeśłi podajesz jakieś operacje na bazie, dobzre by było pokaząc nam strukturę (zapytanie CREATE TABLE) tej bazy - oczywiście tylko tych tabel, które są konieczne.

Zacznij stosować Standardy Kodowania, które polecaliśmy na Wortalu.

Na razie Twoje kody sa z leksza nieczytelne, a i problem chyba zbytnio się zagmatwał przez przekombinowanie.

Co do nagabywania to ja tylko grzecznie poprosilem, spieszyc mi sie nie spieszy, chodzilo o fachowe oko, bo mialem wrazenie ze nikt nie wie za bardzo jak mi pomoc...

1. $tab_klient, bierze sie z pliku funkcje.php (3 linia)
2. masz na myśli smarty?

znalazlem cos takiego:
  1. <?php
  2.  
  3. $query = &#092;"select link, descr, DATE_FORMAT(date_added, '%e %M %Y') as date, name from intranet_links\";
  4.  
  5. // search for $s
  6. if ($s)
  7. $query .= &#092;" where (descr like '%$s%' or link like '%$s%')\";
  8.  
  9.  
  10. $result = mysql_query($query);
  11. while ($data = mysql_fetch_array ($result)) 
  12. {
  13. $url[] = $data[link];
  14. $descr[] = $data[descr];
  15. $name[] = $data[name];
  16. $date[] = $data[date];
  17. }
  18. $smarty->assign(&#092;"url\",$url);
  19. $smarty->assign(&#092;"descr\",$descr);
  20. $smarty->assign(&#092;"name\",$name);
  21. $smarty->assign(&#092;"date\",$date);
  22.  
  23.  
  24. $smarty->display(&#092;"mysql.tpl\");
  25.  
  26. ?>


mam wrazenie ze to jest cos w tym stylu vo ja bym chcial ale glowy nie dam smile.gif
przyklad ze strony: http://smarty.php.net/contribs/examples/mysql/

btw. tak sobie poczytałem o tym smarty i za ciekawie to sie nie zapowiada :/ proste pytanie.. smarty ma jakies wymagania co do wersji php/mysql/apache?

3. hmm... co do eZ to jakos nie widzi mi sie grzebanie w setkach jak nie tysiacach lini kodu :/ zwlaszcza ze coraz bardziej zaczynam watpic ze cokolwiek potrafie w php napisac smile.gif

jesli chodzi o sama baze, to ja tworze je w "CASE Studio 2" (polecam!), i mam wygenerowany pliczek sql, potem phpmyadmin, tworze baze, wykonaj sql i piknie...

ale jesli trzeba to prosze bardzo (choc nie sadze aby to mialo duze znacznie przy moch problemach:

  1. CREATE TABLE konto (
  2. id_klient Int NOT NULL,
  3. nr_konta Int NOT NULL AUTO_INCREMENT,
  4. data_otwarcia Date NOT NULL,
  5. saldo Float,
  6. id_oddzial Int NOT NULL,
  7. UNIQUE (nr_konta),
  8. PRIMARY KEY (nr_konta)) TYPE = MyISAM
  9. ROW_FORMAT = DEFAULT;
  10.  
  11. CREATE TABLE klient (
  12. id_klient Int NOT NULL AUTO_INCREMENT,
  13. imie Char(20) NOT NULL,
  14. nazwisko Char(20) NOT NULL,
  15. pesel Smallint NOT NULL,
  16. data_ur Date NOT NULL,
  17. adr_ulica Char(20) NOT NULL,
  18. adr_miasto Char(20),
  19. adr_dom Char(4) NOT NULL,
  20. adr_mieszkanie Char(4),
  21. adr_kod Char(6),
  22. UNIQUE (pesel),
  23. PRIMARY KEY (id_klient)) TYPE = MyISAM
  24. ROW_FORMAT = DEFAULT;
  25.  
  26. CREATE TABLE oddzial (
  27. nazwa_banku Char(20) NOT NULL,
  28. id_oddzial Int NOT NULL AUTO_INCREMENT,
  29. nazwa_oddzialu Char(20) NOT NULL,
  30. adr_miasto Char(20) NOT NULL,
  31. adr_nrlokalu Char(20) NOT NULL,
  32. adr_kod Char(20) NOT NULL,
  33. telefon Char(12),
  34. PRIMARY KEY (id_oddzial)) TYPE = MyISAM
  35. ROW_FORMAT = DEFAULT;
  36.  
  37. CREATE TABLE centrala (
  38. nazwa_banku Char(20) NOT NULL,
  39. adr_miasto Char(20) NOT NULL,
  40. adr_ulica Char(20) NOT NULL,
  41. adr_nrlokalu Char(8),
  42. adr_kod Char(6),
  43. PRIMARY KEY (nazwa_banku)) TYPE = MyISAM
  44. ROW_FORMAT = DEFAULT;


zapewne zaraz bedzie ze tam varchar tam to tongue.gif to mozna zmienic pozniej narazie musi mi chodzic chociaz wyswietlanie rekordow nie mowie juz o dodawania i modyfikowaniu i szukaniu

pewien rzut oka na moja prace mozna zobaczyc na: http://fallnet.sytes.net/bank/nowy/

co do standardow kodowania.. to sa wycinku z kodu, wiec nie moga swiadczyc o calosci smile.gif
(do edycji uzywam DzSoft php Editor no i notepad.exe )

jesli nadal nic nie rozumiecie to sie wkurze i chyba wszysto to wrzuce nawet z plikiem stopka.inc smile.gif

dzieki za odpowiedz i licze na wiecej smile.gif
pozdrawiam
rogrog
Cytat
co do standardow kodowania.. to sa wycinku z kodu,  wiec nie moga swiadczyc o calosci smile.gif

o standardach kodowania programisty można się dowiedzieć nawet z małego fragmentu jego kodu - u Ciebie w niektórych miejscach brakuje np. wcięć.

Cytat
jesli nadal nic nie rozumiecie to sie wkurze i chyba wszysto to wrzuce nawet z plikiem stopka.inc smile.gif

po co ten ton groźby... jakby każdemu tutaj zależało żeby Ci pomóc - to Tobie powinno zależeć...

mam propozycję: może podaruj sobie te oddziały, banki, klientów itd., a powiedz tylko co chcesz zrobić smile.gif
Fallout
Cytat(rogrog @ 2004-12-09 17:58:32)
o standardach kodowania programisty można się dowiedzieć nawet z małego fragmentu jego kodu - u Ciebie w niektórych miejscach brakuje np. wcięć

po co ten ton groźby... jakby każdemu tutaj zależało żeby Ci pomóc - to Tobie powinno zależeć...

mam propozycję: może podaruj sobie te oddziały, banki, klientów itd., a powiedz tylko co chcesz zrobić smile.gif

co do wcięć... to one są po to aby ułatwić czytelność i orientację w kodzie. I ja taki stosuje, może nie w pełni kompatybilny smile.gif ze standardami ale po prostu tak sie przyzywczailem i tak jest mi wygodnie, i nie przesadzajmy, ten kod nie jest wcale nie czytelny, na forum widziałem o wiele gorsze tongue.gif

co do "gróźb" to chyba nie zrozumiałeś sensu tego zdania... w żadnym wypadku to nie są groźby z mojej strony a raczej humorystyczny przejaw frustracji, bo utknałem i dalej nie moge.. tzn moge ale nadłożył bym sobie 50% roboty a własnie chciałem tego uniknąć. Dobrze wiem, że pomoc tutaj jest dobrowolna i wynika z chęci pomocy przez innych, więc uwierz mi napewno nie groźilłem, bo nie mam komu, za co i po co...

hmm nie moge sobie ich podarować ze wzgledu na to ze jak sobie podaruje to nie bede mial co zrobic tongue.gif

rozumiem ze chcialbys dowiedziec o sens kodu smile.gif chodzi o to ze majac tablice z atrybutami encji tj. ich nazwami chcialbym zrobic uniwersalna funckje wyciagajacach dane z danej encji na podstawie jej nazwy do tablicy odpowiedniej dla tej encji:) <- tego juz wogole nikt nie zrozumie biggrin.gif

moze jakos schematycznie sie postaram.. (juz koncza mi sie pomysly jak mam powiedziec o co mi chodzi... mad.gif <- to nie jest grozba tongue.gif)

posiadamy:

a) 4 gotowe tablice z nawa taka sama jak nazwa tabeli w bazie, kazda z nich posiada odpowiednie dla tej tabeli "nagłówki" kolumn
cool.gif switch ktory na podstawie zmiennej $gdzie wskazuje o ktora tabele chodzi ($tabela)
c) funkcje th(nazwa_tabeli) ktora wypisuje naglowki na podstawie tablic z pkt. a
d) pobieram dane z bazy z tabeli o nazwie zawartej w zmiennej $tabela i trafiaja do nowej tablicy (np. $tab_wyniki)
e) wypisuje dane ale chce miec mozliwosc wyboru selektywnego tj. chcialbym
miec mozliwosc wykonania czegos w tym stylu:
tablica_z_wynikami_z_fetch[tablica_z_naglowkami_wybranej_tabeli[nazwa_kolumny]] np.

  1. <?php
  2. echo&#092;"<td>$tab_wyniki[$klienci['id_klient']];</td>\"; 
  3. ?>


co mialo by dac skutek taki ze w fetchu nie musial bym tworzyc do kazdej tabeli nowych zmiennych, przypisywac im wyniki, a potem je wypisywac.. wszystko chcialbym miec wlasnie w tej $tab_wyniki...

mam nadzieje ze teraz choc w pewnym stopniu ktokolwiek sie domysla o co biega..

i mam wrazenie ze dzialu pomylilem... powinienem dac ten topic do php pro smile.gif smile.gif smile.gif

pozdrawiam,
Marcin nie groźny tongue.gif
scanner
Po pierwsze:

Smarty to system szablonów, który pozwala na unieknięcie wklepywania wielu podobnych fragmentów HTMLowych (a nawet więcej - wizualizacyjnych). Polecam zapoznanie się ze: http://smarty.php.net

Po drugie.

http://www.php.net/manual/pl/language.variables.variable.php

ergo:
  1. <?php
  2.  
  3. $klient = array(&#092;"id_klient\", \"imie\", \"nazwisko\", \"pesel\" ,\"data_ur\" , \"adr_ulica\",
  4. &#092;"adr_miasto\", \"adr_dom\", \"adr_mieszkanie\", \"adr_kod\");
  5.  
  6. function th($tabela)
  7. {
  8. echo &#092;"<TABLE border=1>\";
  9. foreach ($$tabela as $nazwa)
  10. {
  11. echo &#092;"<TH>$nazwa</TH>\";
  12. }
  13. }
  14.  
  15. switch($_SESSION['gdzie'])
  16. {
  17. case 'bank':
  18. $tabela = 'centrala';
  19. break;
  20. case 'oddzialy':
  21. $tabela = 'oddzial';
  22. break;
  23. case 'klienci':
  24. $tabela = 'klient';
  25. break;
  26. case 'konta':
  27. $tabela = 'konto';
  28. break;
  29. }
  30. th($tabela);
  31.  
  32.  
  33. ?>


To powinno Ce naprowadzić na trop.
Zwróć uwage na podwójny $$ w foreachu.
bigZbig
Osobiscie zamiast bawic sie w switche w tym przypadku uzylbym tablicy wielowymiarowej wg przykladu.

  1. <?php
  2. $tablica_tabel = array (
  3. 'bank' => array (
  4. 'tabela' => 'centrala', 
  5. 'naglowki' => array('nazwa','adres','itd'),
  6. ),
  7. 'oddzialy' => array (
  8. 'tabela' => 'oddzial', 
  9. 'naglowki' => array ('nazwa_oddzialu', 'itd'),
  10. ),
  11. 'klienci' => array (
  12. 'tabela' => 'klient', 
  13. 'naglowki' => array ('imie','nazwisko','itd'),
  14. )
  15. 'konta' => array (
  16. 'tabela' => 'konto', 
  17. 'naglowki' => array ('stan_konta','itd'),
  18. )
  19. );
  20.  
  21. $tablica_wybranej_tabeli = $tablica_tabel[$_SESSION['gdzie']];
  22.  
  23. echo $tablica_wybranej_tabeli['tabela']; // Wyswietli nazwe tabeli
  24. echo $tablica_wybranej_tabeli['naglowki']['0']; // Wyswietli pierwszy naglowek danej tabeli
  25. ?>
Fallout
witam ponownie,

no widze ze sie juz rozkreca smile.gif faktycznie ten przyklad co podal bigZbig wydaje się prostszy i chyba oto mi chodziło smile.gif zaraz sie biore do roboty smile.gif nieomieszkam zdać raportu z moich wypocin smile.gif

Scanner:

a znasz jakis kurs smarty w stylu takim jak sa kursy php/html/itp?

na forum czytalem co nie co o smarty, sciganalem, zainstalowalem, uruchomilem przyklady jakie znalazlem na necie ale nadal nie pojmuje tego wszystkiego.. to jakby nowy php a samego php doglebnie nie poznalem smile.gif

dziekuje i pozdrawiam!
bela
http://rzseattle.piwko.pl/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.