echo elke keer nieuwe regel <php>
Ik heb een functie geschreven die het de op basis van de 'Field' de 'Value' gebruikt.
De Value heb ik nodig om de tabel te vullen.
Echter krijgt elke echo een nieuwe regel en 1 <td> verder
Code (php)
1
2
3
4
5
2
3
4
5
Naam --- Achternaam ---- leeftijd
---------------------------------
Naam
---------Achternaam
-------------------------leeftijd
---------------------------------
Naam
---------Achternaam
-------------------------leeftijd
Enig idee?
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
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
<table width="100%" border="1">
<tr>
<td>id</td>
<td>Voornaam</td>
<td>Achternaam</td>
<td>E-mail</td>
<td>Straat + Huisnummer</td>
<td>Postcode</td>
<td>Telefoonnummer 1</td>
<td>Telefoonnummer 2</td>
<td>Geboortedatum</td>
<td>Geslacht</td>
<td>School</td>
<td>Groep</td>
<td>Huisarts</td>
<td>Bijzonderheden</td>
<td>Samen met 1</td>
<td>Samen met 2</td>
<td>Samen met 3</td>
<td>Niet samen met</td>
</tr>
<?php
$query_data = $conn->query("SELECT * FROM wp_mollie_forms_registration_fields ORDER BY registration_id")or die(mysql_error());
function getValueFromRowData($row_data, $field) {
if (isset($row_data['field']) && $row_data['field'] == $field) {
return $row_data['value'];
}
return null;
}
while ($row_data = $query_data->fetch()) {
//foreach($query_data as $row_data){
?>
<tr>
<td><?php echo $row_data['registration_id'];?></td>
<td><?php $field = 'Voornaam'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Achternaam'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'E-mail'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Straat+huisnummer'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Postcode'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Telefoonnummer nood1'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Telefoonnummer nood2'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Geboortedatum'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Geslacht'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'School'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Groep'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Huisarts'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Bijzonderheden'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Samen met 1'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Samen met 2'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Samen met 3'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Niet samen met'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
</tr>
<?php
}
?>
</table>
<tr>
<td>id</td>
<td>Voornaam</td>
<td>Achternaam</td>
<td>E-mail</td>
<td>Straat + Huisnummer</td>
<td>Postcode</td>
<td>Telefoonnummer 1</td>
<td>Telefoonnummer 2</td>
<td>Geboortedatum</td>
<td>Geslacht</td>
<td>School</td>
<td>Groep</td>
<td>Huisarts</td>
<td>Bijzonderheden</td>
<td>Samen met 1</td>
<td>Samen met 2</td>
<td>Samen met 3</td>
<td>Niet samen met</td>
</tr>
<?php
$query_data = $conn->query("SELECT * FROM wp_mollie_forms_registration_fields ORDER BY registration_id")or die(mysql_error());
function getValueFromRowData($row_data, $field) {
if (isset($row_data['field']) && $row_data['field'] == $field) {
return $row_data['value'];
}
return null;
}
while ($row_data = $query_data->fetch()) {
//foreach($query_data as $row_data){
?>
<tr>
<td><?php echo $row_data['registration_id'];?></td>
<td><?php $field = 'Voornaam'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Achternaam'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'E-mail'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Straat+huisnummer'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Postcode'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Telefoonnummer nood1'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Telefoonnummer nood2'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Geboortedatum'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Geslacht'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'School'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Groep'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Huisarts'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Bijzonderheden'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Samen met 1'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Samen met 2'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Samen met 3'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
<td><?php $field = 'Niet samen met'; $value = getValueFromRowData($row_data, $field); echo "{$value}";?></td>
</tr>
<?php
}
?>
</table>
Gewijzigd op 14/11/2023 11:29:54 door Tim Groot
Kijk eens hoe je HTML-source eruit ziet volgens je browser.
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
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
<tr>
<td>id</td>
<td>Voornaam</td>
<td>Achternaam</td>
<td>E-mail</td>
<td>Straat + Huisnummer</td>
<td>Postcode</td>
<td>Telefoonnummer 1</td>
<td>Telefoonnummer 2</td>
<td>Geboortedatum</td>
<td>Geslacht</td>
<td>School</td>
<td>Groep</td>
<td>Huisarts</td>
<td>Bijzonderheden</td>
<td>Samen met 1</td>
<td>Samen met 2</td>
<td>Samen met 3</td>
<td>Niet samen met</td>
</tr>
<tr>
<td>12</td>
<td>Piet</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>12</td>
<td></td>
<td>Hein</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<td>id</td>
<td>Voornaam</td>
<td>Achternaam</td>
<td>E-mail</td>
<td>Straat + Huisnummer</td>
<td>Postcode</td>
<td>Telefoonnummer 1</td>
<td>Telefoonnummer 2</td>
<td>Geboortedatum</td>
<td>Geslacht</td>
<td>School</td>
<td>Groep</td>
<td>Huisarts</td>
<td>Bijzonderheden</td>
<td>Samen met 1</td>
<td>Samen met 2</td>
<td>Samen met 3</td>
<td>Niet samen met</td>
</tr>
<tr>
<td>12</td>
<td>Piet</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>12</td>
<td></td>
<td>Hein</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
Volgens mij ziet de basis er goed uit, er zit alleen iets in die lus of functie verwacht ik
Wat verwacht jij dan precies? Want ik zie geen hinderlijke regels
Waarom gebruik je geen
Gewijzigd op 14/11/2023 14:06:20 door - Ariën -
- Ariën - op 14/11/2023 14:03:55:
Alles zou op dezelfde regel moeten komen. Nu springt hij naar de volgende regel en dan elke keer 1 <td> verder.
- Ariën - op 14/11/2023 14:03:55:
Waarom gebruik je geen
Ja, ik zou gewoon dit kunnen doen:
Code (php)
1
<?php $field = 'Voornaam'; $value = getValueFromRowData($row_data, $field); echo $value;?>
Mollieform zet helaas niet alles in 1 rij.
Ik moet dus de data halen uit verschillende rijen. Opzich kan ik dat mooi opvangen met deze functie die ik gemaakt heb. Ik haal dus 'field' en koppel daar de 'Value' aan. Als je een ander idee hebt, dan hoor ik het graag.
De databasetabel is als volgt:
of zijn het steeds key-value paren? In dat laatste geval zou ik er er eerst een array van bouwen en dan pas naar het weergeven kijken.
Maar je moet dan wel je registration_id erbij betrekken
Toevoeging op 14/11/2023 16:29:34:
Je zou iets kunnen doen als
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
SELECT
registration_id,
GROUP_CONCAT(CONCAT(field, '=', value) SEPARATOR ', ') AS combined_key_values
FROM
wp_mollie_forms_registration_fields
GROUP BY
registration_id;
registration_id,
GROUP_CONCAT(CONCAT(field, '=', value) SEPARATOR ', ') AS combined_key_values
FROM
wp_mollie_forms_registration_fields
GROUP BY
registration_id;
Maar dan moet je alsnog aan de gang om dit uit elkaar te peuteren
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
En daarna kun je met een foreach elke inhoud van $allRows weergeven.
edit: een } verplaatst
Gewijzigd op 14/11/2023 16:30:54 door Ivo P
Thanks!
Ik snap niet zo goed wat je zegt. Volgens mij kan ik het er zo uit laten komen als ik zou willen toch? De registration ID wil ik in ieder geval bundelen en uiteindelijk wil ik die met een druk op de knop netjes gaan wegzetten in een nieuwe tabel zodat straks de vrijwilligers de deelnemers kunnen aanpassen ed. Daarom dat ik er al een variable aan wilde hangen zodat ik het straks mooi weg kan zetten.
Volgens mij is het een mooi stukje code wat je hebt gemaakt, maar ik krijg nog niet het resultaat en kan ik het dan straks mooi wegzetten?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$query_data = $conn->query("SELECT registration_id, GROUP_CONCAT(CONCAT(field, '=', value) SEPARATOR ', ') AS combined_key_values
FROM wp_mollie_forms_registration_fields GROUP BY registration_id")or die(mysql_error());
$allRows = [];
while ($row_data = $query_data->fetch()) {
$reg_id = $row_data['registration_id'];
$values = explode(', ', $row_data['combined_key_values']);
foreach($values as $keyvaluepair) {
list($key, $value) = explode('=', $keyvaluepair);
$allRows[$reg_id][$key] = $value;
}
}
?>
$query_data = $conn->query("SELECT registration_id, GROUP_CONCAT(CONCAT(field, '=', value) SEPARATOR ', ') AS combined_key_values
FROM wp_mollie_forms_registration_fields GROUP BY registration_id")or die(mysql_error());
$allRows = [];
while ($row_data = $query_data->fetch()) {
$reg_id = $row_data['registration_id'];
$values = explode(', ', $row_data['combined_key_values']);
foreach($values as $keyvaluepair) {
list($key, $value) = explode('=', $keyvaluepair);
$allRows[$reg_id][$key] = $value;
}
}
?>
Ik krijg de volgende foutmelding:
Edit:
Het is niet nodig om het laatste bericht steeds integraal te quoten.
Gewijzigd op 14/11/2023 19:39:20 door - Ariën -
op lijn 11
https://www.stechies.com/notice-undefined-offset-error-php/
Mogelijke oplossing:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
/* Hier de rest van je code */
foreach ($values as $keyvaluepair) {
// Controleer hier of $keyvaluepair het '='-teken bevat voordat het wordt gesplitst
if (strpos($keyvaluepair, '=') !== false) {
list($key, $value) = explode('=', $keyvaluepair, 2);
$allRows[$reg_id][$key] = $value;
} else {
// Doe hier iets als de string geen '='-teken bevat
// bijvoorbeeld: een waarschuwing weergeven of loggen
// echo "Ongeldige keyvaluepair: $keyvaluepair <br>";
// of haal deze else statement weg.
}
}
?>
/* Hier de rest van je code */
foreach ($values as $keyvaluepair) {
// Controleer hier of $keyvaluepair het '='-teken bevat voordat het wordt gesplitst
if (strpos($keyvaluepair, '=') !== false) {
list($key, $value) = explode('=', $keyvaluepair, 2);
$allRows[$reg_id][$key] = $value;
} else {
// Doe hier iets als de string geen '='-teken bevat
// bijvoorbeeld: een waarschuwing weergeven of loggen
// echo "Ongeldige keyvaluepair: $keyvaluepair <br>";
// of haal deze else statement weg.
}
}
?>
PS: or die(mysql_error()); is niet netjes, en de functie is ook verouderd.
Gewijzigd op 14/11/2023 20:08:28 door - Ariën -
1. verander je PHP bestand zodat alle <td>'s achter elkaar staan
2. neem ook alle <td> -tags mee in je echo statement:
echo "<td>" . $row->(etc) . "</td>"; // geen enter of PHP_EOL
3. gebruik een class om HTML te bouwen zonder enters:
https://www.phphulp.nl/php/script/classes/dom-bouwen/2042/
4. gebruik een PHP-extentie om HTML te bouwen zonder enters:
https://www.php.net/manual/en/class.domdocument.php
Ik denk dat de layout van de html minder van belang is, dan het feit dat voornaam, achternaam, emailadres, telefoonnummer etc elk op een volgende regel terecht komen in de browser.
Probleem is hier, dat de tabel key-value paren bevat in plaats van complete records, waar TS met de opbouw van query en loop vanuit gaat.
@Tim
Mijn code gaat mogelijk de mist in als er een lege waarde voor een veld is.
Gaat
Code (php)
eigenlijk goed?
Ik kan me niet voorstellen waarom het = teken zou onbreken.
Maar een var_dump($keyvaluepair); op de regel voor "list" brengt misschien duidelijkheid
Ik krijg geen data terug...maar geen foutmelding meer in ieder geval :-):
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$query_data = $conn->query("SELECT registration_id, GROUP_CONCAT(CONCAT(field, '=', value) SEPARATOR ', ') AS combined_key_values
FROM wp_mollie_forms_registration_fields GROUP BY registration_id")or die(mysql_error());
$allRows = [];
while ($row_data = $query_data->fetch()) {
$reg_id = $row_data['registration_id'];
$values = explode(', ', $row_data['combined_key_values']);
foreach($values as $keyvaluepair) {
$keyvaluepair = 'veldje=';
list($key, $value) = explode('=', $keyvaluepair);
$allRows[$reg_id][$key] = $value;
}
}
?>
$query_data = $conn->query("SELECT registration_id, GROUP_CONCAT(CONCAT(field, '=', value) SEPARATOR ', ') AS combined_key_values
FROM wp_mollie_forms_registration_fields GROUP BY registration_id")or die(mysql_error());
$allRows = [];
while ($row_data = $query_data->fetch()) {
$reg_id = $row_data['registration_id'];
$values = explode(', ', $row_data['combined_key_values']);
foreach($values as $keyvaluepair) {
$keyvaluepair = 'veldje=';
list($key, $value) = explode('=', $keyvaluepair);
$allRows[$reg_id][$key] = $value;
}
}
?>
ook dit nog even getest om het eea uit te sluiten.
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
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
<?php
$query_data = $conn->query("SELECT * FROM wp_mollie_forms_registration_fields ORDER BY registration_id")or die(mysql_error());
function getValueFromRowDataName($row_data, $field) {
if (isset($row_data['field']) && $row_data['field'] == $field) {
return $row_data['value'];
}
return null;
}
function getValueFromRowDataFamName($row_data, $field) {
if (isset($row_data['field']) && $row_data['field'] == $field) {
return $row_data['value'];
}
return null;
}
function getValueFromRowDataEmail($row_data, $field) {
if (isset($row_data['field']) && $row_data['field'] == $field) {
return $row_data['value'];
}
return null;
}
//while ($row_data = $query_data->fetch()) {
foreach($query_data as $row_data){
$field = 'Voornaam'; $valuename = getValueFromRowDataName($row_data, $field);
$field = 'Achternaam'; $valuefamname = getValueFromRowDataFamName($row_data, $field);
$field = 'E-mail'; $valueemail = getValueFromRowDataEmail($row_data, $field);
echo"<td>".$row_data['registration_id']."</td>";
echo"<td>".$valuename."</td>";
echo"<td>".$valuefamname."</td>";
echo"<td>".$valueemail."</td>";
}
?>
$query_data = $conn->query("SELECT * FROM wp_mollie_forms_registration_fields ORDER BY registration_id")or die(mysql_error());
function getValueFromRowDataName($row_data, $field) {
if (isset($row_data['field']) && $row_data['field'] == $field) {
return $row_data['value'];
}
return null;
}
function getValueFromRowDataFamName($row_data, $field) {
if (isset($row_data['field']) && $row_data['field'] == $field) {
return $row_data['value'];
}
return null;
}
function getValueFromRowDataEmail($row_data, $field) {
if (isset($row_data['field']) && $row_data['field'] == $field) {
return $row_data['value'];
}
return null;
}
//while ($row_data = $query_data->fetch()) {
foreach($query_data as $row_data){
$field = 'Voornaam'; $valuename = getValueFromRowDataName($row_data, $field);
$field = 'Achternaam'; $valuefamname = getValueFromRowDataFamName($row_data, $field);
$field = 'E-mail'; $valueemail = getValueFromRowDataEmail($row_data, $field);
echo"<td>".$row_data['registration_id']."</td>";
echo"<td>".$valuename."</td>";
echo"<td>".$valuefamname."</td>";
echo"<td>".$valueemail."</td>";
}
?>
Wat je ziet bij de laatste code is dat hij ook Td's gaat overslaan. Dus het zit in de Query of het zit in de functie.
@Ad, dank voor je reactie. Maar idd wat Ivo aangeeft zit het niet in de html, maar heb je advies wel gebruikt om de td mee te nemen in de echo ipv er buiten.
Tim Groot op 15/11/2023 10:23:11:
@Ariën en Ivo,
Ik krijg geen data terug...maar geen foutmelding meer in ieder geval :-):
Ik krijg geen data terug...maar geen foutmelding meer in ieder geval :-):
Gebruik dan ook geen oude mysql_error(). En or die() is niet echt netjes. Want als en apparaat iets fout doet, dan gooi je die niet meteen op de schroothoop.
En heb je al mijn mogelijke oplossing gezien?
Gewijzigd op 15/11/2023 11:06:26 door - Ariën -
Moet er weer een beetje inkomen. Ik ga kijken naar de foutafhandeling. Thanks!
Ja, jou code gaf geen resultaat en geen fout. Hij kwam in het else stukje terecht.
Edit:
Het is niet nodig om het laatste bericht steeds integraal te quoten.
Gewijzigd op 15/11/2023 12:48:40 door - Ariën -
dat moet er weer uit.
Wat zie je als je op regel 8 toevoegt:
var_dump($row_data);
Op regel:
Geeft hij nog een Notice: Undefined offset: 1
Maar hij geeft wel de data in een bulk terug:
Code (php)
1
array(4) { ["registration_id"]=> string(2) "12" [0]=> string(2) "12" ["combined_key_values"]=> string(808) "Voornaam=Piet, Achternaam=Snot, E-mail=**@hotmail.com, Straat+huisnummer=**, Postcode=**,etc etc
Totaalcode op dit moment
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$query_data = $conn->query("SELECT registration_id, GROUP_CONCAT(CONCAT(field, '=', value) SEPARATOR ', ') AS combined_key_values
FROM wp_mollie_forms_registration_fields GROUP BY registration_id")or die(mysql_error());
$allRows = [];
while ($row_data = $query_data->fetch()) {
var_dump($row_data);
$reg_id = $row_data['registration_id'];
$values = explode(', ', $row_data['combined_key_values']);
foreach($values as $keyvaluepair) {
list($key, $value) = explode('=', $keyvaluepair);
$allRows[$reg_id][$key] = $value;
}
}
?>
$query_data = $conn->query("SELECT registration_id, GROUP_CONCAT(CONCAT(field, '=', value) SEPARATOR ', ') AS combined_key_values
FROM wp_mollie_forms_registration_fields GROUP BY registration_id")or die(mysql_error());
$allRows = [];
while ($row_data = $query_data->fetch()) {
var_dump($row_data);
$reg_id = $row_data['registration_id'];
$values = explode(', ', $row_data['combined_key_values']);
foreach($values as $keyvaluepair) {
list($key, $value) = explode('=', $keyvaluepair);
$allRows[$reg_id][$key] = $value;
}
}
?>
Maar er is dus minstens 1 combinatie als Voornaam=Piet die geen = teken lijkt te hebben.
Ik denk dat je dus even zelf dat stuk "etc, etc" moet lezen om te zien welke dat is.
of je voegt tussen regel 11 en 12 toe:
echo 'splitting '. $keyvaluepair . '<br>';
Code (php)
1
2
3
4
5
2
3
4
5
splitting Wanneer je dit formulier gebruikt
Notice: Undefined offset: 1
splitting ga je akkoord met de opslag en verwerking van jouw gegevens door de organisatie.=1
Notice: Undefined offset: 1
splitting ga je akkoord met de opslag en verwerking van jouw gegevens door de organisatie.=1
Oftewel deze zin: Wanneer je dit formulier gebruikt, ga je akkoord m...
Die akkoord dingen had ik in mijn code al niet meer zitten. Deze zijn onbelangrijk. Ze kunnen zich niet inschrijven als ze niet akkoord gaan.
Gewijzigd op 15/11/2023 14:05:23 door Tim Groot
Ik ging ervanuit dat je "field" iets zou bevatten als "voornaam" "accoord" of "emailadres".
Niet dat daar een heel verhaal in zou staan. Zeker niet dat daar dan nog komma's of is-tekens in zouden staan.
Anders moet het splitten met een regex gaan gebeuren.
De scheidingskomma (separator) zou je in de query kunnen vervangen door '#@#', zodat dat niet een simpele komma is en er kleine kans is dat je tekst die combinatie ook bevat.
de explode(', ' .... ) vervang je dan overeenkomstig met explode('#@#', .... )
de list() regel
zou dan kunnen worden:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$aM = [];
$b = preg_match('#(.*)=([^=]*)#', $keyvaluepair, $aM);
$key = $aM[1];
$value = $aM[2];
?>
$aM = [];
$b = preg_match('#(.*)=([^=]*)#', $keyvaluepair, $aM);
$key = $aM[1];
$value = $aM[2];
?>
De code ziet er nu zo uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$query_data = $conn->query("SELECT registration_id, GROUP_CONCAT(CONCAT(field, '=', value) SEPARATOR '#@# ') AS combined_key_values
FROM wp_mollie_forms_registration_fields GROUP BY registration_id")or die(mysql_error());
$allRows = [];
while ($row_data = $query_data->fetch()) {
var_dump($row_data);
$reg_id = $row_data['registration_id'];
$values = explode('#@#', $row_data['combined_key_values']);
foreach($values as $keyvaluepair) {
echo 'splitting '. $keyvaluepair . '<br>';
$aM = [];
$b = preg_match('#(.*)=([^=]*)#', $keyvaluepair, $aM);
$key = $aM[1];
$value = $aM[2];
$allRows[$reg_id][$key] = $value;
}
}
?>
$query_data = $conn->query("SELECT registration_id, GROUP_CONCAT(CONCAT(field, '=', value) SEPARATOR '#@# ') AS combined_key_values
FROM wp_mollie_forms_registration_fields GROUP BY registration_id")or die(mysql_error());
$allRows = [];
while ($row_data = $query_data->fetch()) {
var_dump($row_data);
$reg_id = $row_data['registration_id'];
$values = explode('#@#', $row_data['combined_key_values']);
foreach($values as $keyvaluepair) {
echo 'splitting '. $keyvaluepair . '<br>';
$aM = [];
$b = preg_match('#(.*)=([^=]*)#', $keyvaluepair, $aM);
$key = $aM[1];
$value = $aM[2];
$allRows[$reg_id][$key] = $value;
}
}
?>
Met het volgende resultaat:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
array(4) { ["registration_id"]=> string(2) "12" [0]=> string(2) "12" ["combined_key_values"]=> string(850) "Voornaam=Voornaam#@# Achternaam=Achternaam#@# E-mail=E-mail#@# Straat+huisnummer=Adres#@# Postcode=postcode#@# etc etc
splitting Voornaam=voornaam
splitting Achternaam=voornaam
splitting E-mail=E-mail
splitting Straat+huisnummer=Adres
splitting Postcode=postcode
etc etc
splitting Voornaam=voornaam
splitting Achternaam=voornaam
splitting E-mail=E-mail
splitting Straat+huisnummer=Adres
splitting Postcode=postcode
etc etc
Gewijzigd op 16/11/2023 09:21:15 door Tim Groot