insert singleselect/multiselect
het probleem is wanneer je een training onder een categorie toevoegd die subcategorien heeft lukt het wel, maar wanneer je een categorie selecteert die geen subcategorien heeft en het toevoegd, het niet opslaat in de database. Graag jullie hulp.
dit is mijn code
form.php
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?php
mysql_connect('localhost','root','');
mysql_select_db('test');
$query = "SELECT id FROM training ORDER BY id DESC LIMIT 1";
$resultaat = mysql_query($query);
$rij = mysql_fetch_array($resultaat);
$laatste_id = $rij["id"];
$id_num = $laatste_id + 1;
$nieuw_id = $id_num;
?>
<html>
<head>
<script type = "text/javascript">
//categorie en subcategorie
function showSelect33() {
var d = document.getElementById("mydiv33");
if (document.getElementById("chk33").checked) {
d.style.display ="block";
}
else {
d.style.display = "none";
d.selectedIndex = 0;
}
}
function showSelect34() {
var d = document.getElementById("mydiv34");
if (document.getElementById("chk34").checked) {
d.style.display ="block";
}
else {
d.style.display = "none";
d.selectedIndex = 0;
}
}
function showSelect35() {
var d = document.getElementById("mydiv35");
if (document.getElementById("chk35").checked) {
d.style.display ="block";
}
else {
d.style.display = "none";
d.selectedIndex = 0;
}
}
</script>
</head>
<body>
<div id="training">
<b>Een nieuwe training toevoegen:</b>
<br/><br/>
<form name="formulier" action="invoegen.php" method="post" >
<table width="300" border="0">
<tr>
<td><input type="hidden" name="tid" readonly="readonly" value="<?php echo $nieuw_id; ?>" style="text-align:right" /></td>
</tr>
<tr>
<td>Naam</td>
<td><input type="text" name="naam" style="text-align:right" /></td>
</tr>
<tr>
<td>Beschrijving</td>
<td><input type="text" name="beschrijving" style="text-align:right" /></td>
</tr>
</table>
</div>
<div id="choseLoc">
<table border="0">
<br>Selecteer Categorie:
<div id="">
<input type="checkbox" id = "chk33" name="chk3[]" value="1" onclick = "showSelect33()">A<br>
</div>
<div id = "mydiv33" style="display:none">
</div>
<div id="">
<input type="checkbox" id = "chk34" name="chk3[]" value="2" onclick = "showSelect34()">B<br>
</div>
<div id = "mydiv34" style="display:none">
</div>
<div id="">
<input type="checkbox" id = "chk35" name="chk3[]" value="3" onclick = "showSelect35()">B<br>
</div>
<div id = "mydiv35" style="display:none">
<input type="checkbox" name="chk4[3][]" value="1">B1<br />
<input type="checkbox" name="chk4[3][]" value="2">B2<br />
<input type="checkbox" name="chk4[3][]" value="2">B3<br />
<input type="checkbox" name="chk4[3][]" value="4">B4<br />
</div>
</table>
</div>
<br/>
<div id="buttons">
<input type="reset" value="Leeghalen" /> <input type="submit" value="Opslaan" name="opslaan" />
</form>
</div>
</body>
</html>
mysql_connect('localhost','root','');
mysql_select_db('test');
$query = "SELECT id FROM training ORDER BY id DESC LIMIT 1";
$resultaat = mysql_query($query);
$rij = mysql_fetch_array($resultaat);
$laatste_id = $rij["id"];
$id_num = $laatste_id + 1;
$nieuw_id = $id_num;
?>
<html>
<head>
<script type = "text/javascript">
//categorie en subcategorie
function showSelect33() {
var d = document.getElementById("mydiv33");
if (document.getElementById("chk33").checked) {
d.style.display ="block";
}
else {
d.style.display = "none";
d.selectedIndex = 0;
}
}
function showSelect34() {
var d = document.getElementById("mydiv34");
if (document.getElementById("chk34").checked) {
d.style.display ="block";
}
else {
d.style.display = "none";
d.selectedIndex = 0;
}
}
function showSelect35() {
var d = document.getElementById("mydiv35");
if (document.getElementById("chk35").checked) {
d.style.display ="block";
}
else {
d.style.display = "none";
d.selectedIndex = 0;
}
}
</script>
</head>
<body>
<div id="training">
<b>Een nieuwe training toevoegen:</b>
<br/><br/>
<form name="formulier" action="invoegen.php" method="post" >
<table width="300" border="0">
<tr>
<td><input type="hidden" name="tid" readonly="readonly" value="<?php echo $nieuw_id; ?>" style="text-align:right" /></td>
</tr>
<tr>
<td>Naam</td>
<td><input type="text" name="naam" style="text-align:right" /></td>
</tr>
<tr>
<td>Beschrijving</td>
<td><input type="text" name="beschrijving" style="text-align:right" /></td>
</tr>
</table>
</div>
<div id="choseLoc">
<table border="0">
<br>Selecteer Categorie:
<div id="">
<input type="checkbox" id = "chk33" name="chk3[]" value="1" onclick = "showSelect33()">A<br>
</div>
<div id = "mydiv33" style="display:none">
</div>
<div id="">
<input type="checkbox" id = "chk34" name="chk3[]" value="2" onclick = "showSelect34()">B<br>
</div>
<div id = "mydiv34" style="display:none">
</div>
<div id="">
<input type="checkbox" id = "chk35" name="chk3[]" value="3" onclick = "showSelect35()">B<br>
</div>
<div id = "mydiv35" style="display:none">
<input type="checkbox" name="chk4[3][]" value="1">B1<br />
<input type="checkbox" name="chk4[3][]" value="2">B2<br />
<input type="checkbox" name="chk4[3][]" value="2">B3<br />
<input type="checkbox" name="chk4[3][]" value="4">B4<br />
</div>
</table>
</div>
<br/>
<div id="buttons">
<input type="reset" value="Leeghalen" /> <input type="submit" value="Opslaan" name="opslaan" />
</form>
</div>
</body>
</html>
invoegen.php
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
mysql_connect('localhost','root','');
mysql_select_db('test');
/* Nieuwe ID genereren */
$query = "SELECT id FROM training ORDER BY id DESC LIMIT 1";
$resultaat = mysql_query($query);
$rij = mysql_fetch_array($resultaat);
$laatste_id = $rij["id"];
$id_num = $laatste_id + 1;
$nieuw_id = $id_num;
$tel = mysql_num_rows($resultaat);
?>
<?php
if(isset($_POST["opslaan"]))
{
//training gegevens opslaan
$id = $_POST["tid"];
$naam = $_POST["naam"];
$beschrijving = $_POST["beschrijving"];
$query = "INSERT INTO training(id, training_naam, beschrijving) VALUES('$id', '$naam', '$beschrijving')";
$resultaat = mysql_query($query);
$afd_subafd = array();
if (isset($_POST['chk3'])){
foreach ($_POST['chk3'] as $key) {
}
}
if (isset($_POST['chk4'][$key])) {
foreach($_POST['chk4'][$key] as $sub) {
$afd_subafd[] = '(' . (int)$key . ',' . (int) $sub . ',' . (int) $id . ')';
}
}
if (count($afd_subafd) > 0) {
$query = "INSERT INTO training_cat_subcat(cat_id,subcat_id,training_id) VALUES " . implode(',', $afd_subafd);
mysql_query($query);
}
?>
<?php
}
?>
<a href="form.php">Nog een training toevoegen</a>;
<a href="index.php">Terug naar de hoofdmenu</a>;
mysql_connect('localhost','root','');
mysql_select_db('test');
/* Nieuwe ID genereren */
$query = "SELECT id FROM training ORDER BY id DESC LIMIT 1";
$resultaat = mysql_query($query);
$rij = mysql_fetch_array($resultaat);
$laatste_id = $rij["id"];
$id_num = $laatste_id + 1;
$nieuw_id = $id_num;
$tel = mysql_num_rows($resultaat);
?>
<?php
if(isset($_POST["opslaan"]))
{
//training gegevens opslaan
$id = $_POST["tid"];
$naam = $_POST["naam"];
$beschrijving = $_POST["beschrijving"];
$query = "INSERT INTO training(id, training_naam, beschrijving) VALUES('$id', '$naam', '$beschrijving')";
$resultaat = mysql_query($query);
$afd_subafd = array();
if (isset($_POST['chk3'])){
foreach ($_POST['chk3'] as $key) {
}
}
if (isset($_POST['chk4'][$key])) {
foreach($_POST['chk4'][$key] as $sub) {
$afd_subafd[] = '(' . (int)$key . ',' . (int) $sub . ',' . (int) $id . ')';
}
}
if (count($afd_subafd) > 0) {
$query = "INSERT INTO training_cat_subcat(cat_id,subcat_id,training_id) VALUES " . implode(',', $afd_subafd);
mysql_query($query);
}
?>
<?php
}
?>
<a href="form.php">Nog een training toevoegen</a>;
<a href="index.php">Terug naar de hoofdmenu</a>;
Gewijzigd op 03/05/2014 12:16:55 door George mendel
form.php
Stap over op mysqli of pdo. mysql is deprecated.
Waar is de foutafhandeling van je query?
Waarom regel 12 t/m 15? Je maakt daar drie (!) variabelen aan. Lijkt mij twee te veel.
Een formulier wordt tegenwoordig zelden nog opgemaakt d.m.v. een tabel, maar met css.
Waarom ? Een id moet een unieke naam hebben. Jij gebruikt op meerdere plaatsen geen naam.
Verder zou ik niet gaan werken met nummers in je formulier. Heb jij (over twee maanden) enig idee welk nummer bij welke checkbox (of ander veld) hoort?
invoegen.php
Deels dezelfde opmerkingen als over form.php
Waar controleer je of de $_POST-waarden bestaan? Je maakt wel nieuwe variabelen aan (waarom eigenlijk) op regel 24 - 26. Vervolgens heb je geen enkele beveiliging in je query, waardoor je script lek is. Iemand kan daardoor toegang krijgen tot je database.
Ten aanzien van je vraag:
zet error-reporting aan.
bouw foutafhandeling in.
ga debuggen: wordt het script doorlopen op de manier die je verwacht?
Gewijzigd op 03/05/2014 12:39:01 door Obelix Idefix
Obelix en Idefix op 03/05/2014 12:38:25:
Even wat opmerkingen bij je code:
form.php
Stap over op mysqli of pdo. mysql is deprecated.
Waar is de foutafhandeling van je query?
Waarom regel 12 t/m 15? Je maakt daar drie (!) variabelen aan. Lijkt mij twee te veel.
Een formulier wordt tegenwoordig zelden nog opgemaakt d.m.v. een tabel, maar met css.
Waarom ? Een id moet een unieke naam hebben. Jij gebruikt op meerdere plaatsen geen naam.
Verder zou ik niet gaan werken met nummers in je formulier. Heb jij (over twee maanden) enig idee welk nummer bij welke checkbox (of ander veld) hoort?
invoegen.php
Deels dezelfde opmerkingen als over form.php
Waar controleer je of de $_POST-waarden bestaan? Je maakt wel nieuwe variabelen aan (waarom eigenlijk) op regel 24 - 26. Vervolgens heb je geen enkele beveiliging in je query, waardoor je script lek is. Iemand kan daardoor toegang krijgen tot je database.
Ten aanzien van je vraag:
zet error-reporting aan.
bouw foutafhandeling in.
ga debuggen: wordt het script doorlopen op de manier die je verwacht?
form.php
Stap over op mysqli of pdo. mysql is deprecated.
Waar is de foutafhandeling van je query?
Waarom regel 12 t/m 15? Je maakt daar drie (!) variabelen aan. Lijkt mij twee te veel.
Een formulier wordt tegenwoordig zelden nog opgemaakt d.m.v. een tabel, maar met css.
Waarom ? Een id moet een unieke naam hebben. Jij gebruikt op meerdere plaatsen geen naam.
Verder zou ik niet gaan werken met nummers in je formulier. Heb jij (over twee maanden) enig idee welk nummer bij welke checkbox (of ander veld) hoort?
invoegen.php
Deels dezelfde opmerkingen als over form.php
Waar controleer je of de $_POST-waarden bestaan? Je maakt wel nieuwe variabelen aan (waarom eigenlijk) op regel 24 - 26. Vervolgens heb je geen enkele beveiliging in je query, waardoor je script lek is. Iemand kan daardoor toegang krijgen tot je database.
Ten aanzien van je vraag:
zet error-reporting aan.
bouw foutafhandeling in.
ga debuggen: wordt het script doorlopen op de manier die je verwacht?
Toevoeging op 03/05/2014 13:42:01:
Bedankt voor de tips, zal Ik zeker wat mee doen. Weet je ook hoe Ik het probleem moet oplossen?
Obelix en Idefix op 03/05/2014 12:38:25:
Even wat opmerkingen bij je code:
form.php
Stap over op mysqli of pdo. mysql is deprecated.
Waar is de foutafhandeling van je query?
Waarom regel 12 t/m 15? Je maakt daar drie (!) variabelen aan. Lijkt mij twee te veel.
Een formulier wordt tegenwoordig zelden nog opgemaakt d.m.v. een tabel, maar met css.
Waarom ? Een id moet een unieke naam hebben. Jij gebruikt op meerdere plaatsen geen naam.
Verder zou ik niet gaan werken met nummers in je formulier. Heb jij (over twee maanden) enig idee welk nummer bij welke checkbox (of ander veld) hoort?
invoegen.php
Deels dezelfde opmerkingen als over form.php
Waar controleer je of de $_POST-waarden bestaan? Je maakt wel nieuwe variabelen aan (waarom eigenlijk) op regel 24 - 26. Vervolgens heb je geen enkele beveiliging in je query, waardoor je script lek is. Iemand kan daardoor toegang krijgen tot je database.
Ten aanzien van je vraag:
zet error-reporting aan.
bouw foutafhandeling in.
ga debuggen: wordt het script doorlopen op de manier die je verwacht?
form.php
Stap over op mysqli of pdo. mysql is deprecated.
Waar is de foutafhandeling van je query?
Waarom regel 12 t/m 15? Je maakt daar drie (!) variabelen aan. Lijkt mij twee te veel.
Een formulier wordt tegenwoordig zelden nog opgemaakt d.m.v. een tabel, maar met css.
Waarom ? Een id moet een unieke naam hebben. Jij gebruikt op meerdere plaatsen geen naam.
Verder zou ik niet gaan werken met nummers in je formulier. Heb jij (over twee maanden) enig idee welk nummer bij welke checkbox (of ander veld) hoort?
invoegen.php
Deels dezelfde opmerkingen als over form.php
Waar controleer je of de $_POST-waarden bestaan? Je maakt wel nieuwe variabelen aan (waarom eigenlijk) op regel 24 - 26. Vervolgens heb je geen enkele beveiliging in je query, waardoor je script lek is. Iemand kan daardoor toegang krijgen tot je database.
Ten aanzien van je vraag:
zet error-reporting aan.
bouw foutafhandeling in.
ga debuggen: wordt het script doorlopen op de manier die je verwacht?
Ik heb meerdere dingen aangegeven, met tot slot drie aandachtspunten ten aanzien van je vraag.
Ik neem aan dat je daar al wat mee hebt gedaan(?) Ben dus benieuwd naar het resultaat daarvan.