Już raz radziłam się na forum, jednak nadal mam w zasadzie jeden i tem sam problem. Tworzę prosty programik do tworzenia i wyświetlkania na stronie www planów lekcji. Mają być one tworzone za pomocą szeregu formularzy i przechowywane w postaci tablic -> jedno pole db, jedna tablica z planem lekcji dla jednej klasy.
Kod tworzący plany lekcji:
$sql = "CREATE TABLE timetable ( plan VARCHAR(255), plan_id INT NOT NULL, PRIMARY KEY (plan_id), UNIQUE(plan_id) )"; $_POST['p1'], $_POST['p2'], $_POST['p3'], $_POST['p4'],$_POST['p5'], $_POST['p6'], $_POST['p7'], $_POST['p8'], $_POST['p9'], $_POST['p10'], $_POST['p11'], $_POST['p12'], $_POST['p13'], $_POST['p14'],$_POST['p15'], $_POST['p16'], $_POST['p17'], $_POST['p18'], $_POST['p19'], $_POST['p20'], $_POST['p21'], $_POST['p22'], $_POST['p23'], $_POST['p24'],$_POST['p25'], $_POST['p26'], $_POST['p27'], $_POST['p28'], $_POST['p29'], $_POST['p30'], $_POST['p31'], $_POST['p32'], $_POST['p33'], $_POST['p34'],$_POST['p35'], $_POST['p36'], $_POST['p37'], $_POST['p38'], $_POST['p39'], $_POST['p40'], $_POST['p51'], $_POST['p52'], $_POST['p53'], $_POST['p54'],$_POST['p55'], $_POST['p56'], $_POST['p57'], $_POST['p58'], $_POST['p59'], $_POST['p50'] )); $class_nr = $_POST['class_nr']; {$class_nr = $row['id'];} ?> <html> <head> <style type="text/css"> body td{border:1px solid black; text-align: center; width: 100px; height: 30px;} </style> </head> <body> <form action="create.php" method="post"> <table> <tr> <td class="table"> klasa: <br /> <select name="class_nr"><?php include('form_class.php'); ?></select> </td> <td class="table">1<br />8.00 - 8.45</td> <td class="table">2<br />8.50 - 9.36</td> <td class="table">3<br />9.45 - 10.30</td> <td class="table">4<br />10.40 - 11.25</td> <td class="table">5<br />11.35 - 12.20</td> <td class="table">6<br />12.40 - 13.25</td> <td class="table">7<br />13.35 - 14.20</td> <td class="table">8<br />14.25 - 15.10</td> <td class="table">9<br />15.15 - 16.00</td> <td class="table">10<br />16.05 - 16.50</td> </tr> <tr> <td>PONIEDZIAŁEK</td> <td><select name="p1"><?php include('form.php'); ?></select></td> <td><select name="p1"><?php include('form.php'); ?></select></td> <td><select name="p1"><?php include('form.php'); ?></select></td> <td><select name="p4"><?php include('form.php'); ?></select></td> <td><select name="p5"><?php include('form.php'); ?></select></td> <td><select name="p6"><?php include('form.php'); ?></select></td> <td><select name="p7"><?php include('form.php'); ?></select></td> <td><select name="p8"><?php include('form.php'); ?></select></td> <td><select name="p9"><?php include('form.php'); ?></select></td> <td><select name="p10"><?php include('form.php'); ?></select></td> </tr> <tr> itd... </tr> </table><input type="submit" value="zatwierdz"> </form> </body> </html>
Kod mający wyświetlać plan lekcji względem wybranej klasy (na razie jeszcze nie wrzucony w tabelkę):
/*wybierz według klasy*/ $sql = "SELECT class_nr FROM class"; { } $yourclass = $_POST['yourclass']; /*wybierz według nauczyciela*/ $sql = "SELECT surname FROM teacher"; { } $yourteacher = $_POST['yourteacher']; /*wyswietl wynik*/ $sql = mysql_query("SELECT plan FROM class, timetable WHERE class.class_nr = '$yourclass' AND class.id = timetable.plan_id") or print mysql_error(); { } ?>
Przede wszystkim już wiem, że tworzenie tablic z zserializowanych POST jest bez sensu i o ile dobrze teraz rozumuje, tworzy tylko podwójnie zserializowany ciąg, którego nie jestem w stanie odserializować. Zresztą, przyznaje się bez bicia, jedna osoba z forum mnie już przed tym przestzregała, ale musiałam sprawdzić na własnej skóże, bo tak sie najlepiej człowiek uczy. :-D.
Tylko, pojawia sie teraz pytanie: w takim wypadku jak to zrobić? Jak dodać serie danych zapisanych najlepiej jako tablicę w jednym polu db, a następnie je wyświetlić?
Jedna osoba z forum poradziła mi coś takiego:
foreach ($_POST['p1'] as $planRow) { mysql_query('INSERT INTO timetable VALUES ("' . mysql_real_escape_string($planRow) . ' , '$class_nr'")'); }
jednak to zupełnie nic mi nie daje, dodaje jedynie puste pola do db.
Siedziałam nad tym cały tydzień, cały czas coś robie źle i neie wiem po prostu co.
Będe wdzięczna za każdą rade i uwage.