Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]problem z funkcją
Forum PHP.pl > Forum > Przedszkole
pawel81
Jeżeli przekazuję zmienną do funkcji (w moim przypadku $function['slowo']) to tworzona jest jej kopia która jest modyfikowana w ciele funkcji a oryginał (poza funkcja) pozostaje bez zmian.
Problem tkwi w tym że pierwsza funkcja (logowanie) działa prawidłowo a kolejne już nie (dane, statystyki) ponieważ oryginalna $function['slowo'] zostaje zmodyfikowana, można to sprawdzić odblokowując funkcje test.


  1. <html>
  2. <head>
  3. <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-8859-2">
  4. <meta HTTP-EQUIV="Content-Language" CONTENT="pl">
  5. </head>
  6. <?php
  7.  
  8. $function['imie'] = "Admin
  9. Adam
  10. //tutaj byla lista imion
  11. Zuzanna
  12. Zyta";
  13.  
  14. $function['n'] = 0;
  15. $function['nazwisko'] = ucwords('Kowalski');
  16. $function['nr_domu'] = 1;
  17. $function['miejscowosc'] = ucwords('Brzyska');
  18. $function['pakiet'] = 512;
  19. $function['data'] = '2007-05-03';
  20.  
  21. $function['miesiac'] = 5;
  22. $function['rok'] = 2007;
  23.  
  24. $function['p'] = "n";
  25.  
  26. #------------------------------------------------------tutaj tworzona jest zmienna słowo 
  27. $function['slowo'] = strtok($imie, $function['p']);
  28.  
  29.  
  30.  
  31. function logowanie($function)
  32. {
  33.  
  34. while (is_string($function['slowo']))
  35. {
  36. if (strlen($function['slowo']) <= 10)
  37. {
  38.  
  39. $function['n']++;
  40.  
  41. echo 'INSERT INTO uzytkownicy VALUES (' . $function['n'] . ", '" . strtolower(trim($function['slowo'])) . "', '*2B0820BD1AF97DBC3B827D3DCCE741C24A7B3AF0', '" . strtolower(trim($function['slowo'])) . "@wm.pl', 'u');" . '<br>';
  42. }
  43. $function['slowo'] = strtok($function['p']);
  44. }
  45. }
  46.  
  47. function dane($function)
  48. {
  49.  
  50. while (is_string($function))
  51. {
  52. if (strlen($function['slowo']) <= 10)
  53. {
  54.  
  55. $function['nr_domu']++;
  56. $function['n']++;
  57.  
  58. echo 'INSERT INTO uzytkownicy_dane (id_uzytkownika, imie_uzytkownika, nazwisko_uzytkownika, nr_domu_uzytkownika
    , miejscowosc_uzytkownika, pakiet_uzytkownika, data) VALUES ('
     .$function['n'] . ", '" . ucwords(trim($function['slowo'])) . "', '$function[nazwisko]', '$function[nr_domu]', '$function[miejscowosc]', '$function[pakiet]', '$function[data]');" . '<br>';
  59. }
  60. $function['slowo'] = strtok($function['p']);
  61. }
  62. }
  63.  
  64.  
  65. function statystyki($function)
  66. {
  67.  
  68. while (is_string($function['slowo']))
  69. {
  70. if (strlen($function['slowo']) <= 10)
  71. {
  72.  
  73. $function['n']++;
  74.  
  75.  
  76. echo "INSERT INTO statystyki (id_uzytkownika, m$function[miesiac], rok) VALUES ($function[n], '8192', '$function[rok]');" . '<br>';
  77. }
  78. $function['slowo'] = strtok($function['p']);
  79. }
  80. }
  81.  
  82. echo "
  83.  
  84. CREATE TABLE `uzytkownicy` (
  85. `id_uzytkownika` int(11) NOT NULL auto_increment,
  86. `login_uzytkownika` varchar(10) NOT NULL,
  87. `haslo_uzytkownika` varchar(50) NOT NULL,
  88. `email_uzytkownika` varchar(30) NOT NULL,
  89. `typ` varchar(1) character set utf8 NOT NULL default 'u',
  90. PRIMARY KEY (`id_uzytkownika`)
  91. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
  92.  
  93. <br><br>";
  94.  
  95. #------------------------------------------------------------------------------logowanie
  96. #test($function); 
  97.  
  98.  
  99. logowanie($function);
  100.  
  101. echo "<br><br><br><br>
  102.  
  103. CREATE TABLE `uzytkownicy_dane` (
  104. `id_uzytkownika` int(11) NOT NULL default '0',
  105. `imie_uzytkownika` varchar(20) character set utf8 NOT NULL default '0',
  106. `nazwisko_uzytkownika` varchar(30) character set utf8 NOT NULL default '0',
  107. `ulica_uzytkownika` varchar(40) character set utf8 default 'NULL',
  108. `nr_domu_uzytkownika` varchar(5) character set utf8 NOT NULL default '0',
  109. `nr_mieszkania_uzytkownika` varchar(5) character set utf8 default 'NULL',
  110. `miejscowosc_uzytkownika` varchar(40) character set utf8 NOT NULL default '0',
  111. `telefon_uzytkownika` varchar(15) character set utf8 default 'Brak',
  112. `pakiet_uzytkownika` int(4) NOT NULL default '0',
  113. `data` date NOT NULL,
  114. PRIMARY KEY (`id_uzytkownika`)
  115. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
  116.  
  117. <br><br>";
  118.  
  119. #-------------------------------------------------------------------------------dane
  120. #test($function); 
  121.  
  122.  
  123. dane($function);
  124.  
  125.  
  126. echo "<br><br><br>
  127.  
  128. CREATE TABLE `statystyki` (
  129. `id_uzytkownika` int(11) NOT NULL default '0',
  130. `m1` bigint(12) default '0',
  131. `m2` bigint(12) default '0',
  132. `m3` bigint(12) default '0',
  133. `m4` bigint(12) default '0',
  134. `m5` bigint(12) default '0',
  135. `m6` bigint(12) default '0',
  136. `m7` bigint(12) default '0',
  137. `m8` bigint(12) default '0',
  138. `m9` bigint(12) default '0',
  139. `m10` bigint(12) default '0',
  140. `m11` bigint(12) default '0',
  141. `m12` bigint(12) default '0',
  142. `rok` smallint(4) NOT NULL default '0',
  143. PRIMARY KEY (`id_uzytkownika`)
  144. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  145.  
  146. <br><br>";
  147.  
  148. #-----------------------------------------------------------------------------------statystyki
  149. #test($function); 
  150.  
  151. statystyki($function);
  152. ?>
  153. </html>


Powinno działać tak jak ten skrypt
  1. <?php
  2. function x($x)
  3. {
  4. echo 'x = '. ++$x['x'] .'<br>';
  5. }
  6. function y($x)
  7. {
  8. echo 'y = '. ++$x['x'] .'<br>';
  9. }
  10. function z($x)
  11. {
  12. echo 'z = '. ++$x['x'] .'<br>';
  13. }
  14.  
  15. x($x);
  16. y($x);
  17. z($x);
  18.  
  19. echo $x['x'] . '<br><br>';
  20. ?>



-------------------------
skróciłem kod ( wyciąłem listę imion)
~Cienki1980
Daimos
mozesz to zrobic porzadnie na tablicach? snitch.gif
mniejsza z tym
motasz w kodzie strasznie, jak robisz funkcje to rob w ten sposob:
  1. <?
  2. $zmiennadozmiany = 'cos';
  3. function zmiana($x){
  4. return $x.' albo nic';
  5. }
  6. // wywolanie:
  7. $nowazmienna = zmiana($zmiennadozmiany);
  8. ?>

kombinuj, jak bedziesz sobie taki burdel robil w kodzie, to gwarantuje Ci ze po kilku dniach "nie zagladania" do projektu, rece Ci opadnal
pawel81
już zrobiłem
  1. <html>
  2. <head>
  3. <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-8859-2">
  4. <meta HTTP-EQUIV="Content-Language" CONTENT="pl">
  5. </head>
  6. <?php
  7.  
  8. $function['imie'] = "Admin
  9. Adam
  10. //tutaj byla lista imion
  11. Zofia
  12. Zoja
  13. Zuzanna
  14. Zyta";
  15.  
  16. $function['n'] = 0;
  17. $function['nazwisko'] = ucwords('Kozielec');
  18. $function['nr_domu'] = 0;
  19. $function['miejscowosc'] = ucwords('Brzyska');
  20. $function['pakiet'] = 512;
  21. $function['data'] = '2007-05-03';
  22.  
  23. $function['miesiac'] = 5;
  24. $function['rok'] = 2007;
  25.  
  26. $function['p'] = "n";
  27.  
  28.  
  29.  
  30.  
  31.  
  32. function logowanie($function)
  33. {
  34. $function['slowo'] = strtok($function['imie'], $function['p']);
  35.  
  36. while (is_string($function['slowo']))
  37. {
  38. if (strlen($function['slowo']) <= 10)
  39. {
  40.  
  41. $function['n']++;
  42.  
  43. echo 'INSERT INTO uzytkownicy VALUES (' . $function['n'] . ", '" . strtolower(trim
  44. ($function['slowo'])) . "', '*2B0820BD1AF97DBC3B827D3DCCE741C24A7B3AF0', '" .
  45. strtolower(trim($function['slowo'])) . "@wm.pl', 'u');" . '<br>';
  46. }
  47. $function['slowo'] = strtok($function['p']);
  48. }
  49. }
  50.  
  51. function dane($function)
  52. {
  53. $function['slowo'] = strtok($function['imie'], $function['p']);
  54.  
  55. while (is_string($function['slowo']))
  56. {
  57. if (strlen($function['slowo']) <= 10)
  58. {
  59.  
  60. $function['n']++;
  61. $function['nr_domu']++;
  62.  
  63. echo 'INSERT INTO uzytkownicy_dane (id_uzytkownika, imie_uzytkownika, nazwisko_uzytkownika, nr_domu_uzytkownika
    , miejscowosc_uzytkownika, pakiet_uzytkownika, data) VALUES ('
     .
  64. $function['n'] . ", '" . ucwords(trim($function['slowo'])) . "', '$function[nazwisko]', '$function[nr_domu]', '$function[miejscowosc]', '$function[pakiet]', '$function[data]');" .
  65. '<br>';
  66. }
  67. $function['slowo'] = strtok($function['p']);
  68. }
  69. }
  70.  
  71.  
  72. function statystyki($function)
  73. {
  74. $function['slowo'] = strtok($function['imie'], $function['p']);
  75.  
  76. while (is_string($function['slowo']))
  77. {
  78. if (strlen($function['slowo']) <= 10)
  79. {
  80.  
  81. $function['n']++;
  82.  
  83.  
  84. echo "INSERT INTO statystyki (id_uzytkownika, m$function[miesiac], rok) VALUES ($function[n], '8192', '$function[rok]');" .
  85. '<br>';
  86. }
  87. $function['slowo'] = strtok($function['p']);
  88. }
  89. }
  90.  
  91. echo "
  92.  
  93. CREATE TABLE `uzytkownicy` (
  94. `id_uzytkownika` int(11) NOT NULL auto_increment,
  95. `login_uzytkownika` varchar(10) NOT NULL,
  96. `haslo_uzytkownika` varchar(50) NOT NULL,
  97. `email_uzytkownika` varchar(30) NOT NULL,
  98. `typ` varchar(1) character set utf8 NOT NULL default 'u',
  99. PRIMARY KEY (`id_uzytkownika`)
  100. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
  101.  
  102. <br><br>";
  103.  
  104. #-----------------------------------------------------------------------------
  105. logowanie($function);
  106.  
  107. echo "<br><br><br><br>
  108.  
  109. CREATE TABLE `uzytkownicy_dane` (
  110. `id_uzytkownika` int(11) NOT NULL default '0',
  111. `imie_uzytkownika` varchar(20) character set utf8 NOT NULL default '0',
  112. `nazwisko_uzytkownika` varchar(30) character set utf8 NOT NULL default '0',
  113. `ulica_uzytkownika` varchar(40) character set utf8 default 'NULL',
  114. `nr_domu_uzytkownika` varchar(5) character set utf8 NOT NULL default '0',
  115. `nr_mieszkania_uzytkownika` varchar(5) character set utf8 default 'NULL',
  116. `miejscowosc_uzytkownika` varchar(40) character set utf8 NOT NULL default '0',
  117. `telefon_uzytkownika` varchar(15) character set utf8 default 'Brak',
  118. `pakiet_uzytkownika` int(4) NOT NULL default '0',
  119. `data` date NOT NULL,
  120. PRIMARY KEY (`id_uzytkownika`)
  121. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
  122.  
  123. <br><br>";
  124.  
  125. #-------------------------------------------------------------------------------
  126. dane($function);
  127.  
  128.  
  129. echo "<br><br><br>
  130.  
  131. CREATE TABLE `statystyki` (
  132. `id_uzytkownika` int(11) NOT NULL default '0',
  133. `m1` bigint(12) default '0',
  134. `m2` bigint(12) default '0',
  135. `m3` bigint(12) default '0',
  136. `m4` bigint(12) default '0',
  137. `m5` bigint(12) default '0',
  138. `m6` bigint(12) default '0',
  139. `m7` bigint(12) default '0',
  140. `m8` bigint(12) default '0',
  141. `m9` bigint(12) default '0',
  142. `m10` bigint(12) default '0',
  143. `m11` bigint(12) default '0',
  144. `m12` bigint(12) default '0',
  145. `rok` smallint(4) NOT NULL default '0',
  146. PRIMARY KEY (`id_uzytkownika`)
  147. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  148.  
  149. <br><br>";
  150.  
  151. #-----------------------------------------------------------------------------------
  152. statystyki($function);
  153. ?>
  154. </html>
Daimos
co zrobiles? ehh
wogole czego imiona dajesz linijka po linijce?
zrob to w tablicy
pawel81
daje po to żeby rozdzielić znakiem \n mogę je rozdzielić spacją ale musiałbym zastąpić każdy enter spacją imiona a tak jest szybciej (kopiuj wklej) i mam gotowy plik sql

w ten sposób zrobiłem w ciągu 20 minut bazę wszystkich miast w Polsce i ulic warszawy
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.