pisze strone w PHP/MySQL, cos a'la domowa biblioteka ebookow. Jest to moja pierwsza strona w tej technologii. Mam dwa problemy, zktorymi nie moge sobie poradzic.
1. Mam formularz edycji dla ksiazki, mam w nim pole "wydawnictwo" oraz "jezyk", sa to klucze obce tych tabel przechowujace odpowiednio nazwe wydawnictwa oraz nazwe jezyka. W skrypcie wczytuje do "selectow" (wydawnictwo i jezyk) rekordy z tabel i ustawiam je tak, aby pokazywaly ten rekord, ktory jest zapisany w tabeli.
Dla wydawnictwa wszystko jest ok, rekody wczytuja sie do selecta i wyswietlany jest rekord jaki zapisany jest w bazie danych dla danej ksiazki, natomiast dla jezyka pobierane sa rekordy z bazy, ale nie jest wyswietlany ten jezyk jaki zostal przypisany do danej ksiazki.
Systuacja podana na obrazku
Link do obrazka
Sprobowalem usunac fragment kodu, gdzie pobierane sa z bazy i wyswietlane w "select" wydawnictwa (linie 83-103) i wowczas jezyk wyswietli mi sie poprawnie.
Tutaj skrypt php:
<?php require_once('conn.php'); //pobranie wydawnictw z tabeli wydawnictwo $wydawnictwa = "SELECT * FROM wydawnictwo"; { //pobranie dla kazdego id wydawnictwa jego nazwy $wydawnictwo[$rowWydawnictwo['wydawnictwoId']] = $rowWydawnictwo['nazwa']; } //pobranie jezykow z tabeli jezyk $jezyki = "SELECT * FROM jezyk"; { //pobranie dla kazdego id jezyka jego nazwy $jezyk[$rowJezyk['jezykId']] = $rowJezyk['nazwa']; } if($_GET['action'] == "edytuj") { $ksiazka = "SELECT * FROM ksiazka WHERE ksiazkaId = '".$_GET['id']."'"; ?> <!-- ---------------------------------- wyswietlenie formularza edycji ---------------------------------> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <meta http-equiv="Creation-date" content="2009-09-14T13:00:53Z"> <meta http-equiv="Content-Language" content="pl"> <meta name="Author" content="Kedzior"> <link href="css/css.css" rel="stylesheet" type="text/css" /> <title>Spis języków</title> </head> <body> <!-- To jest miejsce na treść dokumentu --> <table border="1" width="100%" align="center"> <tr> <td class="table_tytul">Id</td> </tr> <tr> <td class="table_tytul">Tytuł</td> <td class="table_opis"> </td> </tr> <tr> <td class="table_tytul">Rok wydania</td> <td class="table_opis"> <?php { ?> <?php } ?> </select> </td> </tr> <tr> <td class="table_tytul">Ścieżka do pliku <td class="table_opis"> </td> </tr> <tr> <td class="table_tytul">Wydawnictwo</td> <td class="table_opis"> <select name="wydawnictwo"> </option> <?php $wydawcy = "SELECT * FROM wydawnictwo"; { ?> <?php } ?> </select> </td> </tr> <tr> <td class = "table_tytul">Język</td> <td class = "table_opis"> <select name="jezyk"> </option> <?php $wersjeJezykowe = "SELECT * FROM jezyk"; { ?> <?php } ?> </select> </td> </tr> <tr> <td class="table_tytul" colspan="2"> <center> <input type="submit" name="submit" value="Edytuj">  <input type="reset" value="Resetuj"> </center> </td> </tr> </table> </form> </body> </html> <!-- -------------------------------------------------------------------------------------------> <?php }
2. Kaskadowe usowanie rekordow w MySQL.
Przyklad na podstawie mojej bazy danych:
Pierwsza tabela autor( PK autorId, imie, nazwisko)
Druga tabela ksiazka (PK ksiazkaId, tytul,...)
Trzecia tabela ksiazka_autor (PK autorId, PK ksiazkaId)
przykladowe dane (podam same "id"),
autor
1
2
3
ksiazka
4
7
8
ksiazka_autor
4 - 1
4 - 3
7 - 1
8 - 2
8 - 3
I teraz usuwam dla przykladu z tabeli autor, np autora o id=1 i autora o id=3. W tabeli ksiazka_autor uaktualniam te dane wstawiajac w miejsce "id" usuwanego autora wartosc NULL, ale wtedy MySQL podaje mi informacje, ze to pole nie moze byc NULL, probowalem takze wstawic wartosc '0' w miejsce usuwanego "id", ale gdy pojawily sie dwa takie same rekordy w bazie danych MySQL poinformowal mnie, ze w tabeli znajduja sie zduplikowane rekordy. W jednym i w drugim przypadku rekordy nie zostaly usuniete.
Skrypt jakiego uzywam do usuniecia autora:
$autor = "UPDATE ksiazka_autor SET autorId = NULL WHERE autorId = '".$_GET['id']."'";
Prosze o pomoc w rozwiazaniu tych dwoch problemow.