Kształcenie Ustawiczne odpowiedzią na zapotrzebowanie rynku pracy
Transkrypt
Kształcenie Ustawiczne odpowiedzią na zapotrzebowanie rynku pracy
Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy Internetowe bazy danych wykład 4 dr inż. Jacek Mazurkiewicz e-mail: [email protected] Jeszcze chwila o operatorach operator trójskładnikowy ?: dostępny w PHP jak i w C $wart = (wyrażenie1) ? (wyrażenie2) : (wyrażenie3); zmienna $wart ma wartość wyrażenie2, jeżeli wyrażenie1 ma wartość True, w przeciwnym przypadku $wart równa się wyrażenie3 operator wykonania oznaczany przez znak ` (klawisz z ~) wyrażenie otoczone znakami ` jest wykonywane na serwerze a zwracana wartość przekazywana do zmiennej operator kontroli błędów @ operator umieszczony przed wyrażeniem blokuje generowanie komunikatów błędów powodowanych tym wyrażeniem błędy zatrzymane operatorem @ są pamiętane w zmiennej globalnej $php_errormsg <?php $aNum1 = 1; $aNum2 = 2; $aVal = ( $aNum1 == $aNum2 ) ? "Wartości są równe" : "Wartości są różne"; print( "$aVal<br>" ); // drukuje "Wartości są różne" $aVal = ( 1 == "1" ) ? "Wartości są równe" : "Wartości są różne"; print( "$aVal<br>" ); // drukuje "Wartości są równe" $aVal = ( 1 === "1" ) ? "Wartości są identyczne" : "Wartości nie są identyczne"; print( "$aVal<br>" ); // drukuje "Wartości nie są identyczne" /* Przypisanie do $aListing zawartości bieżącego katalogu serwera, a następnie konwersję znaków nowej linii na znaczniki <br> i wypisanie wyników */ $aListing = `ls -l`; $aFmtList = nl2br( $aListing ); print( "<br>Zawartość katalogu:<br><b>$aFmtList</b><br>" ); ?> Przepływ sterowania (1) <?php if ( 1 < 2 ) print( "To zostanie wydrukowane.<br>" ); else print( "To nie zostanie wydrukowane.<br>" ); $aValue = 2; if ( $aValue == 1 ) { // Nawiasy klamrowe do otaczania bloków instrukcji print( "\$aValue == 1<br>" ); } elseif ( $aValue == 2 ) { print( "\$aValue == 2<br>" ); if, else, elseif } elseif ( $aValue == 3 ) { print( "\$aValue == 3<br>" ); } else { print( "\$aValue nie jest 1, 2 ani 3<br>" ); }?> Przepływ sterowania (2) <?php print( "Liczenie w górę przy użyciu <b>while</b>.<br>" ); $nIndex = 0; // wypisuje liczby od 0 do 9 while ( $nIndex < 10 ) while, do .. while { print( "$nIndex<br>" ); $nIndex++; } print( "Liczenie w dół przy użyciu <b>do..while</b>.<br>" ); // wypisuje liczby od 10 do 1 do { print( "$nIndex<br>" ); $nIndex--; } while ( $nIndex > 0 ); ?> Przepływ sterowania (3) for (wyr1; wyr2; wyr3) instrukcja for (wyr1) obliczane raz na początku, (wyr2) obliczane na początku każdego przebiegu. Jeżeli jest True, pętla się wykonuje, na końcu każdego przebiegu wykonanie (wyr3). Każde z tych wyrażeń może być puste, puste (wyr2) – domyślnie True <?php // Wypisuje liczby od 0 do 9 for ( $nIndex = 0; $nIndex < 10; $nIndex++ ) { print( "$nIndex<br>" ); } /* $nIndex ma wartość 10. Wypisanie liczb od 10 do 1 */ for ( ; $nIndex > 0; $nIndex-- ) { print( "$nIndex<br>" ); } ?> Przepływ sterowania (4) foreach (tablica as zmienna_wartosc) instrukcja foreach (tablica as zmienna_klucz => zmienna_wartosc) instrukcja w każdym przebiegu wartość bieżącego elementu tablicy jest przypisywana do zmiennej (zmienna_wartosc) a wskaźnik bieżącego elementu tablicy jest przesuwany, druga postać - dodatkowo do zmiennej (zmienna_klucz) jest przypisywany klucz bieżącej pozycji. foreach <?php $aArray = array( "Czerwony", "Zielony", "Niebieski" ); foreach( $aArray as $aValue ) { print( "Bieżąca wartość to $aValue<br>" ); } $aColorArray = array( "Czerwony" => "#FF0000", "Zielony" => "#00FF00", "Niebieski" => "#0000FF" ); foreach( $aColorArray as $aKey => $aValue ) { print( "Wartość szesnastkowa $aKey to $aValue<br>" ); } ?> Przepływ sterowania (5) <?php <?php $nIndex = 2; // Switch z użyciem ciągu switch switch ( $nIndex ) $aColor = "niebieski"; { switch( $aColor ) case 0: { print( "zero<br>" ); case "czerwony": break; print( "#FF0000<br>" ); case 1: break; print( "jeden<br>" ); case "zielony": break; print( "#00FF00<br>" ); case 2: break; print( "dwa<br>" ); case "niebieski": break; print( "#0000FF<br>" ); default: break; print( ”Inne<br>" ); default: break; print( "inny<br>" ); } break; ?> } ?> Przepływ sterowania (6) <?php // Switch bez break $nIndex = 0; switch ( $nIndex ) { case 0: print( "zero<br>" ); case 1: print( "jeden<br>" ); case 2: print( "dwa<br>" ); } ?> switch <?php $aColor = "Czerwony"; switch( $aColor ) { case "czerwony": case "Czerwony": print( "#FF0000<br>" ); break; case "zielony": case "Zielony": print( "#00FF00<br>" ); break; case "niebieski": case "Niebieski": print( "#0000FF<br>" ); break; default: print( "inny<br>" ); break; } ?> Przepływ sterowania (7) break kończy wykonanie bieżącej konstrukcji sterującej continue opuszczenie pozostałego ciała pętli i rozpoczęcie nowej iteracji <?php $aArray = array( 4, 5, 15, 12, 7, 3, 20, 11, 31 ); $aCurMax = 17; // czy w tablicy jest wartość > od bieżącej wartości max. foreach( $aArray as $aValue ) break, continue { if ( $aValue > $aCurMax ) { $aCurMax = $aValue; break; // możemy napisać 'break 1; ' } } // wypisuje "Bieżącym maksimum jest 20" print( " Bieżącym maksimum jest $aCurMax<br>" ); // wypisuje liczby nieparzyste od 0 do 20 $nIndex = 0; for ( $nIndex = 0; $nIndex < 20; $nIndex++ ) { if ( ( $nIndex % 2 ) == 0 ) continue; // opcjonalnie 'continue 1;' print( "$nIndex<br>" ); } ?> Funkcje nie muszą być deklarowane przed ich użyciem w kodzie PHP4 dowolny kod w ciele funkcji, wywołania innych funkcji, również tworzenie funkcji rekurencyjnych nie wolno przeciążać funkcji, nie ma mechanizmu usuwania lub przedefiniowania wcześniej zdefiniowanych funkcji domyślnie argumenty przekazywane przez wartość, przekazanie argumentu przez referencję, ze znakiem &. argumenty domyślne umieszczone po wszystkich argumentach obowiązkowych zmienna lista argumentów, dostępne są funkcje do pobrania argumentów: func_num_args(), func_get_arg(), func_get_args() <?php // prosta funkcja function ReturnSum( $a, $b ) { return $a + $b; } // przekazanie argumentu przez referencję function StringAppend( &$BaseString, $AddString ) { $BaseString .= $AddString; } // wartości domyślne /* Funkcja ta może być wywołana przy użyciu jednej z postaci: PrintAnchorTag( "href", "text" ); PrintAnchorTag( "href", "text", "target" ); */ function PrintAnchorTag( $aHREF, $aText, $aTarg = "" ) { if ( $aTarg == "" ) {print("<a href=\"$aHREF\">$aText</a>");} else {print("<a href=\"$aHREF\" target=\"$aTarg\">$aText</a>");} } // zmienna lista argumentów function PrintEverything( ) { $aNumArgs = func_num_args(); for ( $nIndex = 0; $nIndex < $aNumArgs; $nIndex++ ) { $aArgVal = func_get_arg( $nIndex ); print( "Argument $nIndex: $aArgVal<br>" ); } } print( "ReturnSum( 3, 5 ): " . ReturnSum( 3, 5 ) . "<br>" ); $aString = "Marysia miała "; StringAppend( $aString, "małą owieczkę" ); print( "$aString<br>" ); // "Marysia miała małą owieczkę" PrintAnchorTag( "example10.phtml", "Zobaczmy jeszcze raz przykład 10" ); print( "<br>" ); PrintAnchorTag( "example10.phtml", "Zobaczmy jeszcze raz przykład 1 w oknie", "_blank" ); print( "<br>" ); print( "Wywołanie PrintEverything( 1, 2, 3, 4, 5 ):<br>" ); PrintEverything( 1, 2, 3, 4, 5 ); ?> Na styku z MySQL mysql_connect – otwarcie połączenia z serwerem MySQL id-połacz mysql_connect(serwer, użytkownik, hasło) • zwraca identyfikator połączenia lub FALSE gdy błąd • domyślnie: serwer=‘localhost:3306’, użytkownik=login serwera, hasło=puste • kolejne wywołanie z tymi samymi parametrami – identyfikator już otwartego połączenia • zamknięcie połączenia automatyczne po zakończeniu skryptu mysql_close – zamknięcie połączenia z serwerem MySQL bool mysql_close(id-połącz) • TRUE gdy sukces lub FALSE gdy błąd • domyślnie ostatnie połączenie gdy brak id-połącz • nie zamyka połączenia nawiązanego przez mysql_pconnect <?php $link = mysql_connect(”serwer”, ”użytkownik”, ”hasło”) or die(”Brak połączenia”); print(”Połączenie nawiązane”); mysql_close($link); ?> mysql_list_dbs – pobranie nazw dostępnych baz resource mysql_list_dbs(id-połącz) • wskaźnik nazw dostępnych baz lub FALSE gdy błąd • uzyskanie nazw ze wskaźnika funkcją mysql_tablename mysql_num_rows – zwraca liczbę wierszy w wyniku int mysql_num_rows(resource_wynik) • zastosowanie do operacji SELECT mysql_num_fields – zwraca liczbę pól w wyniku int mysql_num_fields(resource_wynik) • zastosowanie do operacji SELECT mysql_fetch_row – wiersz wyniku do tablicy array mysql_fetch_row(resource_wynik) • zwraca tablicę zawierającą jeden wiersz wyniku, kolejne wywołanie zwraca następny wiersz, FALSE gdy nie ma kolejnych wierszy