Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pytanie o SWITCH
Forum PHP.pl > Forum > Przedszkole
InosU31
Witam


Zaczne od tego ze pierwszy raz od poczatku pisania mojego skryptu - a juz mam kilka linijek - udalo mi sie wrescie zastowowac instrukcje SWITCH - <WOW> ;-) Wczesniej ciagle uzywalem IF'a poniewaz jakos ze switchem mi nic nie moglo wyjsc:/ Chce uzywac roznych instrukcji - a przynajmiej switch i if bo czasem lepiej uzyc ta pierwsza niz druga...

Stworzylem cos takiego i mi to dziala ale moje pytanie jest takie ... Da sie to jakos inaczej napisac??

  1. <?php
  2. if (isset($_POST['imie']) && (isset($_POST['nazwisko'])))
  3. {
  4.  
  5.        switch (isset($_POST['imie']) && (isset($_POST['nazwisko'])))
  6.        {
  7.            
  8.        case (!is_numeric($_POST['imie']) and (!empty($_POST['imie'])) && (!is_numeric($_POST['nazwisko']) and (!empty($_POST['nazwisko'])))):
  9.            
  10.        $_imie = $_POST['imie'];
  11.        $_nazwisko = $_POST['nazwisko'];
  12.        
  13.        $_warunek = mysql_query ("SELECT * FROM roz_dni WHERE imie ='$_imie'and nazwisko = '$_nazwisko'");
  14.        
  15.        if (mysql_num_rows($_warunek) == 0)    //jesli ilosc wynikow rozna od 0 - czyli nie znalezione
  16.        {
  17.        $sql = mysql_query("
  18.                INSERT INTO roz_dni (imie, nazwisko)
  19.                VALUES ('$_imie', '$_nazwisko')
  20.                ") or die ("nie udalo sie stworzyc rekordu");
  21.                
  22.        echo "DANE ZOSTALY PRZESLANE<br>";
  23.        }
  24.        else
  25.        {
  26.            echo "TAKA OSOBA JUZ ISTNIEJE<br>";
  27.        }
  28.        break;
  29.        
  30.        case (is_numeric($_POST['imie']) or (is_numeric($_POST['nazwisko']))):
  31.        
  32.            echo " NIE MOZNA WPISYWAC LICZB<br>";
  33.            break;
  34.            
  35.        case (empty($_POST['imie']) or (empty($_POST['nazwisko']))):
  36.        
  37.            if (empty($_POST['imie']) and (empty($_POST['nazwisko'])))
  38.            {
  39.            echo "FORMULARZ NIE MOZE BYC PUSTY<br>";
  40.            }
  41.            else
  42.            {
  43.            echo "MUSZA BYC WYPELNIONE OBA POLA<br>";
  44.            }        
  45.            break;
  46.            
  47.        default:
  48.            echo "cos nie tak";
  49.            break;    
  50.        }
  51.    
  52. }
  53. ?>


W pierwszej lini switch moim zdaniem troche glupio podawac instrukcje 'isset' ale bez niej instrukcja nie zadziala a jak wywale ta instrukcje z IF'a to mi wywala blad :

Notice: Undefined index: imie in ...

Wiec czy da sie to jakos obejsc - ta pierwsza linie questionmark.gif

z gory dzieki za zaintefresowanie tematem;-)

Pozdrawiam
melkorm
switch

Zobacz różnice.

edit:

w skrócie zamień to na if'y, bo to co Ty zrobiłeś to kompletne nie zrozumienie instrukcji switch.
InosU31
heh mam to w IF tez zrobione ale chcialem w switch bo przeciez operuje ciagle na tych samych zmiennych czyli $_POST['imie'] i $_POST['nazwisko'] ;-) SOry moze faktycznie za malo wiem o tej instrukcji - a najgorsze jest to ze nie wiem gdzie i kiedy ja stowowac:/ jest instrukcja porownawcza dlatego chialem to tak zapisac

Pozdrawiam
melkorm
Switch uzywasz dokładnie w sytuacjach podanych w manualu, bardzo prostym przykładem jest includowanie stron na podstawie akcji :
  1. <?php
  2. $akcja = $_GET['akcja'];
  3.  
  4. switch($akcja) {
  5.  case 'glowna' :
  6.        $include = 'glowna.html';
  7.  break;
  8.  case 'aktualnosci' :
  9.        $include = 'aktualnosci.html';
  10.  break;
  11.  case 'cokowliek' :
  12.        $include = 'cokowliek.html';
  13.  break;
  14.  //.... default itp.
  15. }
  16.  
  17. include($include);
  18. ?>


Chodzi o to że zazwyczaj z góry wiesz jaki zestaw danych możesz przyjąć (czyli jakie wartości przyjmujesz do skryptu(!)) tak się możesz łatwo zabezpieczyć przed tym aby skrypt nie przełkną czegoś niechcianego ;]
InosU31
dzieki:-) bede musial wiecej o tym poczytac;-)

Pozdrawiam
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.