meerdere records inserten vanuit ander tabel
wanneer ik in tabel 'werkvolgorde' een nieuw record toevoeg, wil ik dat dit record x aantal keer ingevoegd wordt in de tabel 'punten'.
X aantal wordt bepaald door het het aantal leerlingen gelinkt aan de klas uit de eerste tabel
met deze code wordt 1 record toegevoegd, ik ben al zo ver dat de oplossing in de while functie zit, maar verder... alle hulp meer dan welkom.
// Row Inserted event
function Row_Inserted($rsold, &$rsnew) {
$rsnew['id_project'];
$rsnew['id_werkvolgorde'];
$rsnew['werkvolgorde'];
$rsnew['beschrijving'];
$rsnew['max_punten'];
$rsnew['id_project'];
$project = ew_ExecuteScalar("SELECT `project` FROM `project` WHERE `id_project`= '".$rsnew['id_project']."'");
$id_klas_lkr_vak = ew_ExecuteScalar("SELECT `id_klas_lkr_vak` FROM `project` WHERE `id_project`= '".$rsnew['id_project']."'");
$klas = ew_ExecuteScalar("SELECT `klas` FROM `project` WHERE `id_project`= '".$rsnew['id_project']."'");
//hier een loop, rijksregisternr invoegen die gelinkt is aan aan de klas via id_klas_lkr_vak
// while ( $rijksregisternummer = ew_ExecuteScalar("SELECT `Rijksregisternummer` FROM `lln` WHERE `Ingeschreven_in_klas`= '".$klas."'"))
$MyResult = ew_Execute("INSERT INTO `punten` (`id_project`,`id_werkvolgorde`,`id_klas_lkr_vak`,`rijksregisternummer`,`project`,`volgorde`,`beschrijving`,`max_punten`) VALUES
('".$rsnew['id_project']."','".$rsnew['id_werkvolgorde']."','".$id_klas_lkr_vak."','".$rijksregisternummer."','".$project."','".$rsnew['werkvolgorde']."','".$rsnew['beschrijving']."','".$rsnew['max_punten']."')");
return TRUE;
}
Toevoeging op 20/12/2012 20:22:50:
Wanneer ik deze code gebruik wordt het record het juiste aantal maal ingevoegd, maar het rijksregisternummer blijft voor alle records hetzelfde terwijl dit eigenlijk ook moet verschillen. De code neemt steeds het eerste nr opnieuw...
alle hulp is heel erg welkom
mvg tom
// Row Inserted event
function Row_Inserted($rsold, &$rsnew) {
$rsnew['id_project'];
$rsnew['id_werkvolgorde'];
$rsnew['werkvolgorde'];
$rsnew['beschrijving'];
$rsnew['max_punten'];
$rsnew['id_project'];
$project = ew_ExecuteScalar("SELECT `project` FROM `project` WHERE `id_project`= '".$rsnew['id_project']."'");
$id_klas_lkr_vak = ew_ExecuteScalar("SELECT `id_klas_lkr_vak` FROM `project` WHERE `id_project`= '".$rsnew['id_project']."'");
$klas = ew_ExecuteScalar("SELECT `klas` FROM `project` WHERE `id_project`= '".$rsnew['id_project']."'");
$select = "SELECT `Rijksregisternummer` FROM `lln` WHERE `Ingeschreven_in_klas`= '".$klas."'";
$run = mysql_query($select) or die (mysql_error());
while ($row = mysql_fetch_assoc($run))
{
$rijk = ew_ExecuteScalar("SELECT `Rijksregisternummer` FROM `lln` WHERE `Ingeschreven_in_klas`= '".$klas."'");
$MyResult = ew_Execute("INSERT INTO `punten` (`id_project`,`id_werkvolgorde`,`id_klas_lkr_vak`,`rijksregisternummer`,`project`,`volgorde`,`beschrijving`,`max_punten`) VALUES
('".$rsnew['id_project']."','".$rsnew['id_werkvolgorde']."','".$id_klas_lkr_vak."','".$rijk."','".$project."','".$rsnew['werkvolgorde']."','".$rsnew['beschrijving']."','".$rsnew['max_punten']."')");
}
return TRUE;
}
te gebruiken in plaats van
Probeer eens om in de values Gewijzigd op 21/12/2012 13:24:13 door Henk Verhoeven
Gewijzigd op 21/12/2012 11:22:06 door No One
ik gebruik nu deze code:
de rijksregisternummer blijft nog steeds dezelfde, is er een functie die ervoor kan zorgen dat row steeds de volgende waarde in de selectie geeft?
dank voor de hulp
Tom
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function Row_Inserted($rsold, &$rsnew) {
$rsnew['id_project'];
$rsnew['id_werkvolgorde'];
$rsnew['werkvolgorde'];
$rsnew['beschrijving'];
$rsnew['max_punten'];
$rsnew['id_project'];
$project = ew_ExecuteScalar("SELECT `project` FROM `project` WHERE `id_project`= '".$rsnew['id_project']."'");
$id_klas_lkr_vak = ew_ExecuteScalar("SELECT `id_klas_lkr_vak` FROM `project` WHERE `id_project`= '".$rsnew['id_project']."'");
$klas = ew_ExecuteScalar("SELECT `klas` FROM `project` WHERE `id_project`= '".$rsnew['id_project']."'");
$select = "SELECT `Rijksregisternummer` FROM `lln` WHERE `Ingeschreven_in_klas`= '".$klas."'";
$run = mysql_query($select) or die (mysql_error());
while ($row = mysql_fetch_assoc($run))
{
$row['Rijksregisternummer'] = ew_ExecuteScalar("SELECT `Rijksregisternummer` FROM `lln` WHERE `Ingeschreven_in_klas`= '".$klas."'");
$MyResult = ew_Execute("INSERT INTO `punten` (`id_project`,`id_werkvolgorde`,`id_klas_lkr_vak`,`rijksregisternummer`,`project`,`volgorde`,`beschrijving`,`max_punten`) VALUES
('".$rsnew['id_project']."','".$rsnew['id_werkvolgorde']."','".$id_klas_lkr_vak."','".$row['Rijksregisternummer']."','".$project."','".$rsnew['werkvolgorde']."','".$rsnew['beschrijving']."','".$rsnew['max_punten']."')");
}
return TRUE;
}
[\code]
$rsnew['id_project'];
$rsnew['id_werkvolgorde'];
$rsnew['werkvolgorde'];
$rsnew['beschrijving'];
$rsnew['max_punten'];
$rsnew['id_project'];
$project = ew_ExecuteScalar("SELECT `project` FROM `project` WHERE `id_project`= '".$rsnew['id_project']."'");
$id_klas_lkr_vak = ew_ExecuteScalar("SELECT `id_klas_lkr_vak` FROM `project` WHERE `id_project`= '".$rsnew['id_project']."'");
$klas = ew_ExecuteScalar("SELECT `klas` FROM `project` WHERE `id_project`= '".$rsnew['id_project']."'");
$select = "SELECT `Rijksregisternummer` FROM `lln` WHERE `Ingeschreven_in_klas`= '".$klas."'";
$run = mysql_query($select) or die (mysql_error());
while ($row = mysql_fetch_assoc($run))
{
$row['Rijksregisternummer'] = ew_ExecuteScalar("SELECT `Rijksregisternummer` FROM `lln` WHERE `Ingeschreven_in_klas`= '".$klas."'");
$MyResult = ew_Execute("INSERT INTO `punten` (`id_project`,`id_werkvolgorde`,`id_klas_lkr_vak`,`rijksregisternummer`,`project`,`volgorde`,`beschrijving`,`max_punten`) VALUES
('".$rsnew['id_project']."','".$rsnew['id_werkvolgorde']."','".$id_klas_lkr_vak."','".$row['Rijksregisternummer']."','".$project."','".$rsnew['werkvolgorde']."','".$rsnew['beschrijving']."','".$rsnew['max_punten']."')");
}
return TRUE;
}
[\code]
Ik vermoed dat je die punten tabel niet nodig hebt omdat je doormiddel van joins de gegevens al bij elkaar kunt krijgen.
Gewijzigd op 21/12/2012 17:35:54 door Ger van Steenderen
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$project = ew_ExecuteScalar("SELECT `project` FROM `project` WHERE `id_project`= '".$rsnew['id_project']."'");
$id_klas_lkr_vak = ew_ExecuteScalar("SELECT `id_klas_lkr_vak` FROM `project` WHERE `id_project`= '".$rsnew['id_project']."'");
$klas = ew_ExecuteScalar("SELECT `klas` FROM `project` WHERE `id_project`= '".$rsnew['id_project']."'");
?>
$project = ew_ExecuteScalar("SELECT `project` FROM `project` WHERE `id_project`= '".$rsnew['id_project']."'");
$id_klas_lkr_vak = ew_ExecuteScalar("SELECT `id_klas_lkr_vak` FROM `project` WHERE `id_project`= '".$rsnew['id_project']."'");
$klas = ew_ExecuteScalar("SELECT `klas` FROM `project` WHERE `id_project`= '".$rsnew['id_project']."'");
?>
Dan als antwoord op je vraag (nog even afgezien van de opmerking van Ger die waarschijnlijk al terecht is), als je meerdere records tegelijk wil invoeren in dezelfde tabel dan kan je dat als volgt doen:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
INSERT INTO punten (id_project, id_werkvolgorde, id_klas_lkr_vak,
rijksregisternummer, project, volgorde, beschrijving, max_punten)
VALUES
(1, 1, 1, 'xxx', 'xxx', 1, 'xxx', 10),
(2, 2, 2, 'xxx', 'xxx', 2, 'xxx', 10),
(3, 3, 3, 'xxx', 'xxx', 3, 'xxx', 10);
rijksregisternummer, project, volgorde, beschrijving, max_punten)
VALUES
(1, 1, 1, 'xxx', 'xxx', 1, 'xxx', 10),
(2, 2, 2, 'xxx', 'xxx', 2, 'xxx', 10),
(3, 3, 3, 'xxx', 'xxx', 3, 'xxx', 10);
In jouw geval zal je dus die insert uit de while loop moeten trekken en in de while loop alleen maar de array aan gegevens opbouwen, die je vervolgens via een slimme implode in je insert query zet. Daarna 1 keer die query runnen en alle data is ingevoerd.
Gewijzigd op 21/12/2012 18:05:30 door Erwin H