Witam wszytkich ponownie
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:
<?php header('Content-Type: text/html; charset=utf-8');
$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'];
$sql = mysql_query("SELECT id FROM class WHERE class_nr = '$class_nr'"); {$class_nr = $row['id'];}
$sql = mysql_query("INSERT INTO timetable VALUES ('$serializedplan', '$class_nr')");
?>
<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ę):
<?php header('Content-Type: text/html; charset=utf-8');
/*wybierz według klasy*/
$sql = "SELECT class_nr FROM class";
echo '<form action="show.php" method="post"><select name="yourclass">'; {
echo '<option>' .$row["class_nr"] .'</option>'; }
echo '<input type="submit" value="wybierz klasę"></form>';
$yourclass = $_POST['yourclass'];
/*wybierz według nauczyciela*/
$sql = "SELECT surname FROM teacher";
echo '<form action="show.php" method="post"><select name="yourteacher">'; {
echo '<option>' .$row["surname"] .'</option>'; }
echo '<input type="submit" value="wybierz nauczyciela"></form>';
$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) {
}
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.
Ten post edytował eFK 13.02.2014, 23:16:27