Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem ze skryptem, i funkcjami, include i zmiennymi
Fallout
post
Post #1





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Olsztyn

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


Witam,

na początek listingi ,niestety rozjezdzaja sie tu na forum sad.gif

Plik config.inc.php

  1. <?php
  2.  
  3. // system
  4. $img_sys_root = &#092;"img/sys/\";
  5. $img_prod_root = &#092;"img/prod/\";
  6. // bledy
  7. $blad = array( 'E_BASE'  => &#092;"Połącznie do bazy nie powiodło się!\",
  8. 'E_DB' => &#092;"Wybranie bazy nie powiodło się!\",
  9. 'E_QUERY' => &#092;"Pobranie danych nie powiodło się\");
  10. // baza
  11. $host = &#092;"xxxt\";
  12. $user  = &#092;"xxx\";
  13. $pass = &#092;"xxx\";
  14. $baza = &#092;"xxx\";
  15. // tabele
  16. $tab_end  = &#092;"</table>\";
  17. $cechy_tab_start = &#092;"<table border=1>
  18. <tr>
  19. <th><a href=&#092;"tabele.php?co=cechy&akcja=pokaz&jak=id_cn\">ID</a></th>
  20. <th><a href=&#092;"tabele.php?co=cechy&akcja=pokaz&jak=nazwa_cechy\">Nazwa Cechy</a></th>
  21. </tr>&#092;";
  22.  
  23. $cechy_tab_end = &#092;"<tr align=center>
  24. <td>$id_cn</td>
  25. <td>$nazwa_cechy</td>
  26.  </tr>&#092;";
  27.  
  28. $producenci_tab_start  = &#092;"<table border=1>
  29. <tr>
  30. <th><a href=&#092;"tabele.php?co=producenci&akcja=pokaz&jak=id_producent\">ID</a></th>
  31. <th><a href=&#092;"tabele.php?co=producenci&akcja=pokaz&jak=nazwa\">Nazwa Producenta</a></th>
  32. <th><a href=&#092;"tabele.php?co=producenci&akcja=pokaz&jak=www\">Adres WWW</a></th>
  33. <th>Logo</th>
  34. </tr>&#092;";
  35.  
  36. $producenci_tab_end =  &#092;"<tr align=center>
  37. <td>$id_producent</td>
  38. <td>$nazwa</td>
  39. <td>$www</td>
  40. <td><img src=&#092;"$img_prod_root$foto\"></td>
  41.  </tr>&#092;";
  42. ?>


plik tabele.php:

  1. <?php
  2. include 'tabele.inc.php';
  3. if (isset($_GET['co'])) { $co = $_GET['co']; } else $co = '';
  4. if (isset($_GET['akcja']))  { $akcja  = $_GET['akcja'];  } else $akcja  = '';
  5. if (isset($_GET['jak']))  { $jak  = $_GET['jak'];  } else $jak  = '';
  6. ?>
  7. <head>
  8. <meta http-equiv=\"content-type\" content=\"text/html; charset=iso-8859-2\">
  9. <title>Panel Administratora - Menu</title>
  10. </head>
  11. <center>
  12. <table border=\"1\">
  13. <tr><td><a href=\"tabele.php?co=cechy\"><strong>Cechy</strong></a></td></tr>
  14. <tr><td><a href=\"tabele.php?co=cechy&akcja=pokaz&jak=id_cn\">Pokaż listę cech</a></td></tr>
  15. <tr><td><a href=\"tabele.php?co=cechy&akcja=dodaj\">Dodaj cechę</a></td></tr>
  16. <tr><td><a href=\"tabele.php?co=cechy&akcja=kasuj\">Usuń cechy</a></td></tr>
  17. <tr><td><a href=\"tabele.php?co=cechy&akcja=zmien\">Popraw cechy</a></td></tr>
  18. </table> <br><br>
  19. <table border=\"1\">
  20. <tr><td><a href=\"tabele.php?co=producenci\"><strong>Producenci</strong></a></td></tr>
  21. <tr><td><a href=\"tabele.php?co=producenci&akcja=pokaz&jak=id_producent\">Pokaż listę producentów</a></td></tr>
  22. <tr><td><a href=\"tabele.php?co=producenci&akcja=dodaj\">Dodaj producenta</a></td></tr>
  23. <tr><td><a href=\"tabele.php?co=producenci&akcja=kasuj\">Usuń wpisy producentów</a></td></tr>
  24. <tr><td><a href=\"tabele.php?co=producenci&akcja=zmien\">Popraw wpisy producentów</a></td></tr>
  25. </table>
  26. <?php
  27. switch ($akcja)
  28. {
  29.  case 'pokaz':
  30.  pokaz($co,$jak);
  31.  break;
  32. }


i na koniec plik: tabele.inc.php

  1. <?php
  2.  
  3. include 'config.inc.php';
  4. function pokaz($co, $jak)
  5. {
  6. include 'config.inc.php';
  7. $p = mysql_connect($host,$user,$pass)  or Die ($blad['E_BASE']);
  8. $db = mysql_select_db($baza,$p)  or Die ($blad['E_DB']);
  9. $sql = &#092;"SELECT * FROM $co ORDER BY $jak\";
  10. $wynik = mysql_query($sql,$p)  or Die ($blad['E_QUERY']);
  11. switch ($co)
  12. {
  13. case 'cechy': echo $cechy_tab_start; break;
  14. case 'producenci': echo $producenci_tab_start; break;
  15. }
  16. while ($wiersz = mysql_fetch_array($wynik))
  17. {
  18. switch ($co)
  19. {
  20. case 'cechy':
  21. {
  22.  
  23.  $id_cn = $wiersz['id_cn'];
  24.  $nazwa_cechy = $wiersz['nazwa_cechy'];
  25. echo $cechy_tab_end;
  26. }
  27. break;
  28.  
  29. case 'producenci':
  30. {
  31. $id_producent = $wiersz['id_producent'];
  32.  $nazwa = $wiersz['nazwa'];
  33. $www = $wiersz['www'];
  34. $foto = $wiersz['foto'];
  35. echo $producenci_tab_end;
  36. }
  37. break;
  38.  
  39. }
  40. echo $tab_end;
  41. }
  42. }
  43.  
  44. ?>


A teraz problem... Nie działa biggrin.gif heeh no dobra..
jak wida idea skryptu jest aby zrobic uniwersalna funkcje do pobierania danych z bazy. taki byl plan.. niestety nie chodzi mi to mysle ze przez to ze includowane sa zmienne.. dobrze mysle?

ten sam skrypt mam rozbity na osobne tabele i wszystko chodzi. ale jako ze tabel jest pare i roznych operacji na nich jest tez kilka chcialem sobie ulatwic zycie a tu jak na zlosc..

tu jest przyklaodwy skrypt chodzacy "osobno" dla tabeli:

  1. <?php
  2.  
  3. function cechy_pokaz($jak)
  4. {
  5. include 'config.inc.php';
  6. $p = mysql_connect($host,$user,$pass) or Die(&#092;"Połącznie do bazy nie powiodło się!\");
  7. $db = mysql_select_db($baza,$p) or Die(&#092;"Wybranie bazy nie powiodło się!\");
  8. $sql = &#092;"SELECT * FROM cechy ORDER BY $jak\";
  9. $wynik = mysql_query($sql,$p) or Die(&#092;"Pobranie danych nie powiodło się\");
  10.  echo &#092;"<table border=1>
  11. <tr>
  12. <th><a href=&#092;"t_cechy.php?akcja=pokaz&jak=id_cn\">ID</a></th>
  13. <th><a href=&#092;"t_cechy.php?akcja=pokaz&jak=nazwa_cechy\">Nazwa Cechy</a></th>
  14. </tr>&#092;";
  15. while ($wiersz = mysql_fetch_array($wynik))
  16. {
  17.  $id_cn = $wiersz['id_cn'];
  18.  $nazwa_cechy = $wiersz['nazwa_cechy'];
  19. echo &#092;"<tr>
  20. <td>$id_cn</td>
  21. <td>$nazwa_cechy</td>
  22.  </tr>&#092;";
  23. }
  24. echo &#092;"</table>\";
  25.  
  26. }
  27.  
  28. ?>


troszke sie rozni to (1. jedna tabela, 2. bez bledow w tablicy, 3. odwolania do innych plikow) ale idea jest ta sama.. ..

dodam ze przy probie wykonywania nowego skryptu (wielotabelowego) mam od cholery notice`ow o nie zadeklarowanych zmiennych np. "Notice: Undefined variable: id_cn in (...) on line 23"

prosze pomozcie, nie ma sensu robic osobnych plikow z podobnymi funkcjami (dodaj,usun,zmien,itp) dla kazdej tabli gdy tylko zmieniaja sie zmienne i tabela...

z gory dziekuje z (p)odpowiedzi
pozdrawiam
Marcin

Ten post edytował Fallout 21.02.2005, 17:52:26


--------------------
Go to the top of the page
+Quote Post
gruszek_
post
Post #2





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 21.02.2005

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


zdaje sie ze zmienne z plikuw includnietych nie sa widoczne w plikach "nadrzednych", tych, w ktorych zostalo wywolane polecenie include. (ale zmienne z nadrezedbnych plikow sa dostepne w plikach includowanych)

jezeli myslisz ze to wina tego (nie wiem bo nei analizowalem za bardzo kodu tongue.gif ) to zamiast include uzyj require (nazwa dolaczanego pliku musi byc podana - nie moze byc to zmienna), z tego co w manualu czytalem to przy require najpierw dolaczane sa potrzebne pliki a potem dopiero rozpoczyna sie cala machina przetwarzania czy jak to nazwac winksmiley.jpg (a przy include pliki dolaczane sa na zawolanie, przy napotkaniu instrukcji include).


--------------------
a w zeszle swieto mialem kobite co miala obie nogi umyte :P
Kliknij mi w Operkę <-- zbieram kliki na legalna rejestracje
Go to the top of the page
+Quote Post
Fallout
post
Post #3





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Olsztyn

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


Cytat(gruszek_ @ 2005-02-21 17:03:39)
zdaje sie ze zmienne z plikuw includnietych nie sa widoczne w plikach "nadrzednych", tych, w ktorych zostalo wywolane polecenie include. (ale zmienne z nadrezedbnych plikow sa dostepne w plikach includowanych)

jezeli myslisz ze to wina tego (nie wiem bo nei analizowalem za bardzo kodu tongue.gif ) to zamiast include uzyj require (nazwa dolaczanego pliku musi byc podana - nie moze byc to zmienna), z tego co w manualu czytalem to przy require najpierw dolaczane sa potrzebne pliki a potem dopiero rozpoczyna sie cala machina przetwarzania czy jak to nazwac winksmiley.jpg (a przy include pliki dolaczane sa na zawolanie, przy napotkaniu instrukcji include).

Hmm.. cos chyba ci sie pokrecilo ale oka smile.gif Manual mówi, że require i include różnią się tylko raportowaniem błędów..... ale poprawiłem troszke kod, i już znalazłem co nie pasuje...

w tym fragmencie:

  1. <?php
  2.  
  3. case 'cechy':
  4. {
  5.  
  6. $id_cn = $wiersz['id_cn'];
  7. $nazwa_cechy = $wiersz['nazwa_cechy'];
  8. echo $cechy_tab_end;
  9. }
  10. break;
  11.  
  12. ?>


jest odwolanie do zmiennej $cechy_tab_end ktora wyglada tak:

  1. <?php
  2.  
  3. $cechy_tab_end = &#092;"<tr align=center>
  4. <td>$id_cn</td>
  5. <td>$nazwa_cechy</td>
  6.  </tr>&#092;";
  7.  
  8. ?>


Gdy zamiast <td>$id_cn</td> dam <td>$id_cn AAA</td> to mi wyświetli tylko AAA. zmienna $id_cn nie posiada wartości z "$id_cn = $wiersz['id_cn']

W takim razie pytanie brzmi już o wiele prościej.. jak to rozwiązać? Jak przypisać do zmiennej w <td>$id_cn</td> wartosc z $wiersz['id_cn']?

Bardzo prosze o pomoc,
Pozdrawiam


--------------------
Go to the top of the page
+Quote Post
gruszek_
post
Post #4





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 21.02.2005

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


na poczatek musze sam siebie ochrzanic:
Cytat
z plikuw
- polska jezyk trudna mowa tongue.gif

a teraz do rzeczy: NAJPIERW includujesz plik w ktorym uzywasz tej zmiennej a POTEM nadajesz jej wartosc (w tej petli) winksmiley.jpg

Ten post edytował gruszek_ 21.02.2005, 17:42:29


--------------------
a w zeszle swieto mialem kobite co miala obie nogi umyte :P
Kliknij mi w Operkę <-- zbieram kliki na legalna rejestracje
Go to the top of the page
+Quote Post
Fallout
post
Post #5





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Olsztyn

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


  1. <?php
  2. function pokaz($co, $jak)
  3. {
  4. require 'config.inc.php'; <-------------------- TU INKLUDUJE
  5.  $p = mysql_connect($host,$user,$pass)  or Die ($blad['E_BASE']);
  6. $db = mysql_select_db($baza,$p)  or Die ($blad['E_DB']);
  7. $sql = &#092;"SELECT * FROM $co ORDER BY $jak\";
  8. $wynik = mysql_query($sql,$p)  or Die ($blad['E_QUERY']);
  9. switch ($co)
  10. {
  11. case 'cechy': echo $cechy_tab_start; break;
  12. case 'producenci': echo $producenci_tab_start; break;
  13. }
  14.  
  15. switch ($co)
  16. {
  17. case 'cechy':
  18. {
  19.  while ($wiersz = mysql_fetch_array($wynik))
  20. {
  21.  $id_cn = $wiersz['id_cn']; <----------- TU NADAJE WARTOŚĆ
  22.  $nazwa_cechy = $wiersz['nazwa_cechy'];
  23. echo $cechy_tab_end; <----------------- TU WYPISUJE
  24. }
  25. }
  26. break;
  27.  
  28. case 'producenci':
  29. {
  30. $id_producent = $wiersz['id_producent'];
  31.  $nazwa = $wiersz['nazwa'];
  32. $www = $wiersz['www'];
  33. $foto = $wiersz['foto'];
  34. echo $producenci_tab_end;
  35. }
  36. break;
  37.  
  38.  
  39. echo $tab_end;
  40. }
  41. }
  42. ?>



Wynik: nie działa sad.gif

a moze dlatego nie chodzi bo:

nie da sie przypisac wartosci zmiennej do takiego czegos:

$zmienna = "<td>$zmienna_do_ktorej_chce_przypisac_wartosc</td>";

i potem wypisac
echo $zmienna; (wraz z nowa zawartoscia $zmienna_do_ktorej_chce_....)

questionmark.gifquestionmark.gif

Ten post edytował Fallout 21.02.2005, 17:47:39


--------------------
Go to the top of the page
+Quote Post
gruszek_
post
Post #6





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 21.02.2005

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


wlasnie o to mi chodzi, z tego co sie zorietowalem to piszac $a = "costam $b blabla"; do ciagu wpisywana jest poprostu zawartosc tej zmiennej (w danym momencie) a nie wskaznik do zmiennej czy jak to tam nazwac (to co bys chcial zeby bylo).

jezeli nie rozumiesz to sprawdz roznice miedzy tym:
  1. <?php
  2.  
  3. $a = &#092;"a $b a\";
  4. $b = &#092;"b\";
  5. echo ($a);
  6. ?>

a tym:
  1. <?php
  2. $b = &#092;"b\";
  3. $a = &#092;"a $b a\";
  4. echo ($a);
  5. ?>


nie jestem pewien ale chyba istnieje mozliwosc zrobienia tego co chcesz (zeby nie wklejalo wartosci zmiennej tylko wstawialo jakby wskaznik do niej) ale nie wiem jak to zrobic, nie jestem na tyle w temacie winksmiley.jpg

-------edytejszon-----------
zamiast zmiennej
  1. <?php
  2. $cechy_tab_end = &#092;"<tr align=center><td>$id_cn</td><td>$nazwa_cechy</td></tr>\";
  3. ?>
mozesz np. stworzyc funkcje
  1. <?php
  2. function cechy_tab_end($ta_twoja_zmienna){
  3. return(&#092;"<tr align=center><td>$id_cn</td><td>$ta_twoja_zmienna</td></tr>\");
  4. }
  5.  
  6. //i wywolywac ja tak: 
  7. cechy_tab_end($nazwa_cechy);
  8. //=======================================
  9.  
  10.  
  11. //albo mysle ze prosciej tak:
  12. function cechy_tab_end(){
  13. global $nazwa_cechy;
  14. return(&#092;"<tr align=center><td>$id_cn</td><td>$ta_twoja_zmienna</td></tr>\");
  15. }
  16.  
  17. //i wywolanie juz bez parametru
  18. cechy_tab_end();
  19. ?>


Ten post edytował gruszek_ 21.02.2005, 18:13:23


--------------------
a w zeszle swieto mialem kobite co miala obie nogi umyte :P
Kliknij mi w Operkę <-- zbieram kliki na legalna rejestracje
Go to the top of the page
+Quote Post
Fallout
post
Post #7





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Olsztyn

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


aha, juz zrozumialem smile.gif (dzieki Ci!:))

czyli musze zadeklarowac zmienna przed przypisaniem jej do innej zmiennej
zanim ja wywolam... dobra wszystko pieknie.. ale jak...

kompletnie nie wiem co zrobic.. jedynym wyjsciem bedzie wyrzucenie tego chyba do innego includa tak mi sie zdaje.. jak jakies propozycje to chetnie poczytam


dzieki

oka...

po prostu wyrzucilem to do innego pliku, i inkludowalem to po przypisaniu wartosci do zmiennej, ale przed pobraniem tej nowej zminnej ze zmienna z wartoscia biggrin.gif

dzieki jeszcze raz,

pozdrawiam

Ten post edytował Fallout 21.02.2005, 18:15:54


--------------------
Go to the top of the page
+Quote Post
gruszek_
post
Post #8





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 21.02.2005

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


edytnolem moj powyzszy post i podaem przykladowe rozwiazanie Twojego problemu, nie wiem czy tu jeszze zajrzysz wiec dla tego to pisze


--------------------
a w zeszle swieto mialem kobite co miala obie nogi umyte :P
Kliknij mi w Operkę <-- zbieram kliki na legalna rejestracje
Go to the top of the page
+Quote Post
Fallout
post
Post #9





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Olsztyn

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


Cytat(gruszek_ @ 2005-02-21 18:15:30)
edytnolem moj powyzszy post i podaem przykladowe rozwiazanie Twojego problemu, nie wiem czy tu jeszze zajrzysz wiec dla tego to pisze

a kiedy Ty edytowales swoj, ja zrobilem jak napisalem i po problemie biggrin.gif dzieki wielkie za wskazowki.. !


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 07:30