PHP + MySQL w laboratorium (1) W czasie użytkowania systemu musi działać serwer MySQL, Apache i być dostępna przeglądarka internetowa. Zadanie 1 - Umieścić wydrukowany poniżej skrypt info.php w kartotece roboczej WWW pakietu Vertrigo w laboratorium: C:\programy\VertrigoServ\WWW - Stwierdzić poprawność działania PHP uruchamiając w przeglądarce skrypt wydrukowany poniżej, a umieszczony na stronie: http://localhost/info.php phpinfo(); - wszystkie własne skrypty php proszę umieszczać w kartotece roboczej WWW pakietu Vertrigo w laboratorium: - C:\programy\VertrigoServ\WWW - zbadać składnię wywołania PHP..., itp. Zadanie 2 Przeanalizować działanie, uruchomić skrypt nawiązujący kontakt z systemem MySQL: or die("polaczenie nieudane"); if ($connection) $msg = "Bravo!"; <TITLE>MySQL Connection</TITLE> echo "$msg"; - mysql_connect( serwer, użytkownik, hasło ) nawiązanie połączenia z bazą danych MySQL - die funkcja obsługi błędu, przerywa wykonywanie skryptu - 1 -
Zadanie 3 Przeanalizować działanie, uruchomić skrypt pokazujący nazwy baz danych MySQL: or die("polaczenie nieudane"); $dbs = @mysql_list_dbs($connection) or die("uzyskanie listy baz danych bledne"); $db_list = "<ul>"; $i = 0; while ($i < mysql_num_rows($dbs)) $db_names[$i] = mysql_tablename($dbs, $i); $db_list.= "<li>$db_names[$i]"; $i++; $db_list.= "</ul>"; <TITLE>MySQL Bazy Danych</TITLE> <P><strong>Bazy danych na lokalnych hoscie</strong>:</p> echo "$db_list"; - mysql_list_dbs() podaje listę baz danych dostępnych na serwerze; - mysql_tablename() wyodrębnienie nazwy tabeli lub bazy danych, - mysql_num_rows() liczba wierszy w zbiorze wyników - 2 -
Zadanie 4 Na podstawie poniższego skryptu przygotować skrypt prezentujący tabele bazy / baz danych utworzonych przez Panią / Pana or die("proba polaczenia bledna"); $dbs = @mysql_list_dbs($connection) or die("uzyskanie listy baz danych bledne"); $db_list = "<ul>"; $db_num = 0; while ($db_num < mysql_num_rows($dbs)) $db_names[$db_num] = mysql_tablename($dbs, $db_num); $db_list.= "<li>$db_names[$db_num]"; if ($db_names[$db_num]!= "mysql") $tables = @mysql_list_tables($db_names[$db_num]) or die("uzyskanie listy baz danych bledne"); $table_list = "<ul>"; $table_num = 0; while ($table_num < mysql_num_rows($tables)) $table_names[$table_num] = mysql_tablename($tables, $table_num); $table_list.= "<li>$table_names[$table_num]"; $table_num++; $table_list.= "</ul>"; $db_list.= "$table_list"; $db_num++; $db_list.= "</ul>"; <TITLE>MySQL Tables</TITLE> <P><strong>Bazy danych i tablele na lokalym hoscie</strong>:</p> echo "$db_list"; - mysql_list_tables() podaje listę tabel danej bazy, - mysql_select_db(nazwa_bazy, identyfikator_połączenia)- wybór określonej bazy - 3 -
Zadanie 5 Na podstawie poniższego skryptu przygotować skrypt zakładający nową bazę danych $new_db = "testtest"; or die("brak polaczenia"); $result = @mysql_create_db($new_db, $connection) or die("nie udalo sie utowrzyc bazy"); if ($result) $msg = "<P>Baza danych utworzona!</p>"; <TITLE>Tworzenie nowej bazy danych</title> echo "$msg"; - mysql_create_db () tworzenie nowej bazy danych. Zadanie 6 Na podstawie poniższego skryptu przygotować skrypt kasujący bazę danych $drop_db = "testtest"; $connection = @mysql_connect("localhost", "user", "pass") or die("brak polaczenia"); $result = @mysql_drop_db($drop_db, $connection) or die("nie udalo sie skasowac bazy"); if ($result) $msg = "<P>Baza danych skasowana</p>"; <TITLE>Kasowanie bazy danych</title> echo "$msg"; - mysql_drop_db() kasowanie bazy danych. - 4 -
Zadanie 7 Na podstawie poniższego skryptu przygotować skrypty wybierające rekordy z Pani / Pana bazy danych: - przygotowanie menu: <TITLE>Moje Menu</TITLE> <H1>Menu</H1> <P><strong>Moje wybory</strong></p> <ul> <li><a href="sel_1.php">wedlug jeden</a> <li><a href="sel_2.php">wedlug dwa</a> <li><a href="sel_3.php">wedlug trzy</a> <li><a href="sel_4.php">wedlug cztery</a> </ul> - właściwy przykładowy skrypt: $db_name = "piesio"; $table_name = "ksiazki"; or die("brak polaczenia"); $db = @mysql_select_db($db_name, $connection) or die("wybor nieudany"); $sql = "SELECT * FROM $table_name ORDER BY cena "; $result = @mysql_query($sql, $connection) or die("zapytanie nieudane"); while ($row = mysql_fetch_array($result)) $isbn = $row['isbn']; $autor = $row['autor']; $tytul = $row['tytul']; $cena = $row['cena']; $display_block.= " <P><strong>$autor</strong> - $tytul<br> <em>isbn: $isbn</em> Cena: $cena</p> "; <TITLE>Wybor jeden</title> <H1>Jeden</H1> echo "$display_block"; <P><a href="menu.htm">powrot do menu</a></p> - mysql_query () przekazanie zapytania do MySQL, - mysql_fetch_array() przechwycenie do tablicy zawartości wiersza z wynikami zapytania skierowanego do MySQL. - 5 -
Zadanie 8 Na podstawie poniższego skryptu przygotować skrypty wprowadzające nowe rekordy do Pani / Pana bazy danych: - przygotowanie formularza: <TITLE>Dodawanie nowego rekordu</title> <H1>Wstawianie rekordu</h1> <FORM ACTION="wstaw.php" METHOD="POST"> <TABLE BORDER=0> <tr><td>isbn</td><td><input type=char name=isbn maxlength=13 size=13><br></td></tr> <tr><td>autor</td><td><input type=char name=autor maxlength=50 size=50><br></td></tr> <tr><td>tytul</td><td><input type=char name=tytul maxlength=60 size=60><br></td></tr> <tr><td>cena</td><td><input type=char name=cena maxlength=7 size=7><br></td></tr> <tr><td colspan=2><input type=submit value="dodaj"></td></tr> </TABLE> </FORM> - właściwy skrypt: <TITLE>Efekt wstawiania nowego rekordu</title> <H1>Rezultat wstawiania nowego rekordu</h1> if ((!$isbn) (!$autor) (!$tytul) (!$cena)) echo "Nie ma wszystkich danych<br>"; exit; or die("brak lacznosci"); $db_name = "piesio"; mysql_select_db($db_name, $connection); $sql = " insert into ksiazki values (\"$isbn\", \"$autor\", \"$tytul\", \"$cena\") "; $result = @mysql_query($sql, $connection) or die("zapytanie chybione"); if ($result) echo mysql_affected_rows()." rekordow dopisanych"; - 6 -