Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Długi switch i problemy
Forum PHP.pl > Forum > PHP
Pablo128
Mam taki oto problem
switch($i)
{
[...]
case 'b':
[...];
break;
case 'biuro':
[...]
break;
}

Przy $i='b';
wyskakuje i tekst do b i tekst do biuro.

Nie wiem jak to w ogóle jest możliwe. Co robię źle?
Dodam też, że przez ten błąd mam problem z wykonywaniem działań przez konkretne case'y, bo te działania - procedury - są wykonywane kilkukrotnie (np. zapis w bazie danych). To już jest poważny problem.
Z góry dziękuję za pomoc!
jaslanin
nie ma prawa nie działać

  1. <?php
  2.  
  3. $i = 'b';
  4.  
  5. switch ($i)
  6. {
  7.  
  8. case 'b':
  9. echo 'case b';
  10. break;
  11. case 'biuro':
  12. echo 'case biuro';
  13. break;
  14. }
  15.  
  16. ?>


mi wyświetla "case b"

PS. pokaż cały kod bo być może to tam tkwi problem.
croc
A ja myślę, że kolega po prostu nie ma jednak break w case 'b'.
AndyPSV
wklej kompletny kod
Pablo128
Dobra to teraz z innej paki.
mam
  1. switch($_SESSION[1])
  2. {
  3. [...]
  4. case 'biuro':
  5. include('biuro.php');
  6. $pol->pol->query("INSERT INTO `test` (`test`) VALUES ('0')");
  7. break;
  8. [...]
  9. }

Plik biuro.php
  1. switch ($_SESSION[2])
  2. {
  3. case '':
  4. $pol->pol->query("INSERT INTO `test` (`test`) VALUES ('2')");
  5. break;
  6. [...]
  7. }

Po załadowaniu podstrony biuro, do tablicy `test` w mysql załadowuje mi się jeden row z wartością 0 i 10 z wartością 2.
Oczywiście to jest abstrakcyjny model, ale jak wrzucam dane, które realnie ma umieścić dzieje się tak samo. Kilkukrotnie wykonuje wywołania SQL.
Dodam do tego, że nigdy nie miałem z czymś takim do czynienia.

Dodam do tego, że ten include nie ma tu znaczenia, bo jak jest w jednym pliku występuje ten sam błąd.
dziamber
Nie lepiej w pliku biuro.php zastosować if'a? Co do tego kodu, to może zamiast pustej zmiennej nadaj jej wartość np. 'pusto'. Możliwe, że switch wariuje jeżeli dostaje pustą zmienną i wtedy dzieją się takie rzeczy jak u ciebie.
bim2
Daj zamiast include require_once to załącyz plik tylko raz. Widocznie gdzieś 10 razy musisz includować biuro.php
Pablo128
Cytat(dziamber @ 30.05.2010, 15:05:16 ) *
Nie lepiej w pliku biuro.php zastosować if'a? Co do tego kodu, to może zamiast pustej zmiennej nadaj jej wartość np. 'pusto'. Możliwe, że switch wariuje jeżeli dostaje pustą zmienną i wtedy dzieją się takie rzeczy jak u ciebie.

Chyba nie, jak mam 20 podstron i potem każda z nich dzieli się na kolejne. Przy switch-u jest wszystko czytelnie i było ładnie do tego momentu.
To nie tak, bo nawet jak ma zmienną z wartością to też się tak dzieje.


Cytat(bim2 @ 30.05.2010, 15:48:19 ) *
Daj zamiast include require_once to załącyz plik tylko raz. Widocznie gdzieś 10 razy musisz includować biuro.php

Człowieku, przecież napisałem, że ten include nie ma znaczenia, bo ten kod mam wewnątrz tego case'a. Include jest tylko, żebyś Ty to lepiej odczytał.
bim2
Cytat(Pablo128 @ 30.05.2010, 16:19:46 ) *
Człowieku, przecież napisałem, że ten include nie ma znaczenia, bo ten kod mam wewnątrz tego case'a. Include jest tylko, żebyś Ty to lepiej odczytał.

To pokaż może cały kod, bo z tego co napisałeś
  1. switch($x)
  2. {
  3. case 'biuro':
  4. switch($x2)
  5. {
  6. case '':
  7. //tutaj insert 2
  8. break;
  9. }
  10. //tutaj insert 0
  11. break;
  12. }

nie ma prawa nie śmigać ;/
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.