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