niet standaard structuur array
Doordat de structuur niet altijd het zelfde is (het aantal discriptions verschilt) krijg ik uiteraard de de error "Undefined offset" omdat niet alle arrays meerdere discriptions heeft. Is hier een oplossing voor??
<code>
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
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
<?php
$array = Array
(
"data" => Array
(
"4353" => Array
(
"id" => 4353,
"name" => "Example1",
"description" => Array
(
"0" => "description 1",
"1" => "description 2",
"2" => "description 3",
),
),
"4352" => Array
(
"id" => 4352,
"name" => "Example2",
"description" => Array
(
"0" => "description 1",
),
),
"4113" => Array
(
"id" => 4113,
"name" => "Example4",
"description" => Array
(
"0" => "description 1",
"1" => "description 2",
"2" => "description 3",
"3" => "description 4",
),
),
)
);
//store
foreach($array['data'] as $key => $value) {
$sql[] = "
(
'" . mysql_real_escape_string($array['data'][$key]['id']) . "',
'" . mysql_real_escape_string($array['data'][$key]['name']) . "',
'" . mysql_real_escape_string($array['data'][$key]['description'][0]) . "',
'" . mysql_real_escape_string($array['data'][$key]['description'][1]) . "',
'" . mysql_real_escape_string($array['data'][$key]['description'][2]) . "',
'" . mysql_real_escape_string($array['data'][$key]['description'][3]) . "'
)";
}
$sql = "INSERT INTO masteries (id, name, description1, description2, description3, description4) VALUES " . implode(",",$sql) . "";
if (mysqli_query($connect, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($connect);
}
?>
$array = Array
(
"data" => Array
(
"4353" => Array
(
"id" => 4353,
"name" => "Example1",
"description" => Array
(
"0" => "description 1",
"1" => "description 2",
"2" => "description 3",
),
),
"4352" => Array
(
"id" => 4352,
"name" => "Example2",
"description" => Array
(
"0" => "description 1",
),
),
"4113" => Array
(
"id" => 4113,
"name" => "Example4",
"description" => Array
(
"0" => "description 1",
"1" => "description 2",
"2" => "description 3",
"3" => "description 4",
),
),
)
);
//store
foreach($array['data'] as $key => $value) {
$sql[] = "
(
'" . mysql_real_escape_string($array['data'][$key]['id']) . "',
'" . mysql_real_escape_string($array['data'][$key]['name']) . "',
'" . mysql_real_escape_string($array['data'][$key]['description'][0]) . "',
'" . mysql_real_escape_string($array['data'][$key]['description'][1]) . "',
'" . mysql_real_escape_string($array['data'][$key]['description'][2]) . "',
'" . mysql_real_escape_string($array['data'][$key]['description'][3]) . "'
)";
}
$sql = "INSERT INTO masteries (id, name, description1, description2, description3, description4) VALUES " . implode(",",$sql) . "";
if (mysqli_query($connect, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($connect);
}
?>
</code>
array_key_exists() of een sleutel ontbreekt en stel die dan in op een lege string.
Controleer in de foreach bijvoorbeeld met Code (php)
Toevoeging op 16/03/2015 13:04:46:
Echter wil je daarna de omschrijvingen in de database opslaan en loop je weer tegen een vast aantal kolommen aan die je hebt aangemaakt voor de omschrijvingen. Dat zou je eventueel nog kunnen oplossen door een aparte tabel voor de omschrijvingen te maken.
Je krijgt dan zoiets:
tabel masteries:
-id
-name
tabel descriptions:
-id
-masteries_id
-description
-masteries_id verwijst dan naar het unieke id in de tabel masteries
Toevoeging op 16/03/2015 13:23:49:
Later heb je dan een iets uitgebreidere query nodig als je info uit beiden tabellen wilt halen:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
SELECT
m.id, m.name, d.description
FROM
descriptions d
JOIN
masteries m
ON
m.id = d.masteries_id
m.id, m.name, d.description
FROM
descriptions d
JOIN
masteries m
ON
m.id = d.masteries_id
eventueel aangevuld met:
of
Gewijzigd op 16/03/2015 13:25:42 door Frank Nietbelangrijk
Daarnaast, hoe vaak voer je een import uit? Verloopt dit import-proces automatisch? Et cetera.