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 <?php phpinfo(); ?> Uwagi: - 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 <?php ...... ?>, itp. Zadanie 2 Przeanalizować działanie, uruchomić skrypt nawiązujący kontakt z systemem MySQL: <?php $connection = @mysql_connect("localhost", "root", "vertrigo") or die("Polaczenie nieudane"); if ($connection) { $msg = "Bravo!"; } ?> <HTML> <HEAD> <TITLE>MySQL Connection</TITLE> </HEAD> <BODY> <?php echo "$msg"; ?> </BODY> </HTML> Uwagi: - 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: <?php $connection = @mysql_connect("localhost", "root", "vertrigo") 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>"; ?> <HTML> <HEAD> <TITLE>MySQL Bazy Danych</TITLE> </HEAD> <BODY> <P><strong>Bazy danych na lokalnych hoscie</strong>:</p> <?php echo "$db_list"; ?> </BODY> </HTML> Uwagi: - 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 <?php $connection = @mysql_connect("localhost", "root", "vertrigo") 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>"; ?> <HTML> <HEAD> <TITLE>MySQL Tables</TITLE> </HEAD> <BODY> <P><strong>Bazy danych i tablele na lokalym hoscie</strong>:</P> <?php echo "$db_list"; ?> </BODY> </HTML> Uwagi: - 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 <?php $new_db = "testtest"; $connection = @mysql_connect("localhost", "root", "vertrigo") 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>"; } ?> <HTML> <HEAD> <TITLE>Tworzenie nowej bazy danych</TITLE> </HEAD> <BODY> <?php echo "$msg"; ?> </BODY> </HTML> Uwagi: - mysql_create_db () – tworzenie nowej bazy danych. Zadanie 6 Na podstawie poniższego skryptu przygotować skrypt kasujący bazę danych <?php $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>"; } ?> <HTML> <HEAD> <TITLE>Kasowanie bazy danych</TITLE> </HEAD> <BODY> <?php echo "$msg"; ?> </BODY> </HTML> Uwagi: - 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: <HTML> <HEAD> <TITLE>Moje Menu</TITLE> </HEAD> <BODY> <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> </BODY> </HTML> - właściwy przykładowy skrypt: <?php $db_name = "piesio"; $table_name = "ksiazki"; $connection = @mysql_connect("localhost", "root", "vertrigo") 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> "; } ?> <HTML> <HEAD> <TITLE>Wybor jeden</TITLE> </HEAD> <BODY> <H1>Jeden</H1> <?php echo "$display_block"; ?> <P><a href="menu.htm">Powrot do menu</a></P> </BODY> </HTML> Uwagi: - 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: <HTML> <HEAD> <TITLE>Dodawanie nowego rekordu</TITLE> </HEAD> <BODY> <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> </BODY> </HTML> - właściwy skrypt: <HTML> <HEAD> <TITLE>Efekt wstawiania nowego rekordu</TITLE> </HEAD> <BODY> <H1>Rezultat wstawiania nowego rekordu</H1> <?php if ((!$isbn) || (!$autor) || (!$tytul) || (!$cena)) { echo "Nie ma wszystkich danych<br>"; exit; } $connection = @mysql_connect("localhost", "root", "vertrigo") 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"; } ?> </BODY> </HTML> -6-