Controle op connectie met MySQLi
Interessant. Hoe luidt de character encoding van je database-tabel? Je stelt niet expliciet in dat je middels "utf8" wilt communiceren met MySQL. Mogelijk neemt deze aan dat je data in "latin1" aanbiedt en aangeleverd wilt hebben. Dit zou dan tot gevolg hebben dat, indien je tabel utf8 is, data die wordt weggeschreven dubbel utf8 ge-encodeerd wordt en in het verkeerde formaat weergegeven wordt op webpagina's.
Dit zou dan pas aan het licht komen tijdens een export of wanneer je het maken van je verbinding repareert door expliciet een character encoding in te stellen via een aanroep van set_charset() direct na het maken van een verbinding.
Laat niets aan het toeval over, stel dit soort zaken expliciet in en zorg dat alle character encoderingen (een vorm van) UTF-8 zijn. Dit scheelt je later een hoop problemen.
True, is een belangrijke, maar voor nu even te taaie stof denk ik. ;)
Bart V B ik begrijp je code behalve deze regel:
Is het niet dubbel isset en leeg (=='')?
Tomas op jou vraag kom ik later terug.
Die isset() is dus preventief.
Parse error: syntax error, unexpected '.' ik heb zelf al wat geschoven maar kom er niet zo goed uit.
Toevoeging op 21/04/2017 15:49:09:
Mensen ik kom vreselijk laat terug op dit topic daar ben ik mij van bewust. Maar misschien mag ik dan toch de vraag nog even stellen. De code van Bart V B klopt niet. Op lijn 33 krijg ik de fout
Parse error: syntax error, unexpected '.' ik heb zelf al wat geschoven maar kom er niet zo goed uit.
Op die regel staat een puntkomma die er niet hoort.
Maar nu is de vaag hoe ga ik ervoor zorgen dat de boel in de database komt? Je moet ze dan eerst verzenden uitlezen en erin plaatsten.
Echter is de vraag hoe kan ik dat combineren met mijn huidige formulier?
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
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
<?php
ini_set('display_errors', 1);
error_reporting (E_ALL);
// t (): plaats een aantal tabs en eventueel een newline
// $n_tabs: hoeveel tabs je wilt
// $newline: wel of geen nieuwe regel
function t($n_tabs, $newline = false) {
if ($newline) echo "\n";
for ($i = 0; $i < $n_tabs; $i++) {
echo "\t";
}
}
// make_checkboxes (): maak een serie checkboxes met dezelfde name[]
// $name: string met de naam van de checkboxen
// $values: array met de values van de checkboxen
// $selections: array met de geselecteerde checkboxen
// $vertical: boolean voor horizontaal (false) of verticaal (true)
function make_checkboxes ($name, $values, $selections, $vertical = false) {
foreach ($values as $value) {
if ($vertical) {
t (3, true);
echo '<p>';
}
t (3, true);
echo '<input id="' . $value . '" name="' . $name . '[]" type="checkbox" value="' . $value . '"';
if (in_array ($value, $selections)) {
echo ' checked="checked"';
}
echo '>';
t (3, true);
echo '<label for ="' . $value . '">' . $value . '</label>';
if ($vertical) {
t (3, true);
echo '</p>';
}
}
}
// initialisatie-arrays;
// drie series checkboxen als voorbeeld
$hobbies = array ('uitgaan', 'lezen', 'tuinieren', 'PHP', 'koken');
$huisdieren = array ('kat', 'hond', 'dwerghamster', 'konijn', 'cavia', 'schildpad', 'goudvis');
// als het formulier verzonden is vangen we de values op
// LET OP: als geen één checkbox van een groep is aangevinkt
// bestaat er géén array van in de POST variabelen. Vandaar dat
// we hier moeten checken met isset ()
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$hobbies_selections = (isset ($_POST['hobbies'])) ? ($_POST['hobbies']) : (array ());
$huisdieren_selections = (isset ($_POST['huisdieren'])) ? ($_POST['huisdieren']) : (array ());
}
// formulier is nog niet gepost, dus hier een lege array maken
// we zouden ook een array met standaardwaarden kunnen maken om
// sommige of alle checkboxen alvast te selecteren
else {
$hobbies_selections = array ();
$huisdieren_selections = array ();
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Selective Memory</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
h1 {
font: 18px arial;
color: #f99;
border-bottom: 1px dashed #f99;
padding-bottom: 5px;
}
p, label, select, option {
font: 12px verdana;
color: #66f;
}
label {
cursor: pointer;
}
</style>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<h1>Wat zijn je hobbies?</h1>
<p><?php make_checkboxes ('hobbies', $hobbies, $hobbies_selections); ?></p>
<h1>Welke huisdieren heb je?</h1>
<?php make_checkboxes ('huisdieren', $huisdieren, $huisdieren_selections, true); ?>
<p><input type="submit" value="verzenden"></p>
</form>
</body>
</html>
ini_set('display_errors', 1);
error_reporting (E_ALL);
// t (): plaats een aantal tabs en eventueel een newline
// $n_tabs: hoeveel tabs je wilt
// $newline: wel of geen nieuwe regel
function t($n_tabs, $newline = false) {
if ($newline) echo "\n";
for ($i = 0; $i < $n_tabs; $i++) {
echo "\t";
}
}
// make_checkboxes (): maak een serie checkboxes met dezelfde name[]
// $name: string met de naam van de checkboxen
// $values: array met de values van de checkboxen
// $selections: array met de geselecteerde checkboxen
// $vertical: boolean voor horizontaal (false) of verticaal (true)
function make_checkboxes ($name, $values, $selections, $vertical = false) {
foreach ($values as $value) {
if ($vertical) {
t (3, true);
echo '<p>';
}
t (3, true);
echo '<input id="' . $value . '" name="' . $name . '[]" type="checkbox" value="' . $value . '"';
if (in_array ($value, $selections)) {
echo ' checked="checked"';
}
echo '>';
t (3, true);
echo '<label for ="' . $value . '">' . $value . '</label>';
if ($vertical) {
t (3, true);
echo '</p>';
}
}
}
// initialisatie-arrays;
// drie series checkboxen als voorbeeld
$hobbies = array ('uitgaan', 'lezen', 'tuinieren', 'PHP', 'koken');
$huisdieren = array ('kat', 'hond', 'dwerghamster', 'konijn', 'cavia', 'schildpad', 'goudvis');
// als het formulier verzonden is vangen we de values op
// LET OP: als geen één checkbox van een groep is aangevinkt
// bestaat er géén array van in de POST variabelen. Vandaar dat
// we hier moeten checken met isset ()
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$hobbies_selections = (isset ($_POST['hobbies'])) ? ($_POST['hobbies']) : (array ());
$huisdieren_selections = (isset ($_POST['huisdieren'])) ? ($_POST['huisdieren']) : (array ());
}
// formulier is nog niet gepost, dus hier een lege array maken
// we zouden ook een array met standaardwaarden kunnen maken om
// sommige of alle checkboxen alvast te selecteren
else {
$hobbies_selections = array ();
$huisdieren_selections = array ();
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Selective Memory</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
h1 {
font: 18px arial;
color: #f99;
border-bottom: 1px dashed #f99;
padding-bottom: 5px;
}
p, label, select, option {
font: 12px verdana;
color: #66f;
}
label {
cursor: pointer;
}
</style>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<h1>Wat zijn je hobbies?</h1>
<p><?php make_checkboxes ('hobbies', $hobbies, $hobbies_selections); ?></p>
<h1>Welke huisdieren heb je?</h1>
<?php make_checkboxes ('huisdieren', $huisdieren, $huisdieren_selections, true); ?>
<p><input type="submit" value="verzenden"></p>
</form>
</body>
</html>
Om te kijken wat je $_POST array bevat, kan je dit scriptje als hulpmiddel gebruiken, op het moment dat je hebt gecontroleerd of je formulier verstuurd is.
Gewijzigd op 25/04/2017 12:06:05 door - Ariën -
mooi die begrijp ik alleen met de functions in dat formulier kan je ze toch niet even onder elkaar plakken neem ik aan. Ik begrijp wat er gebeurt. Echter begrijp ik niet hoe deze tot 1 te vermaken. Eigenlijk ben ik opzoek (op internet kan ik niet veel werkend vinden. Naar een formuliertje met veldjes (hebben we al) een checkbox en een radio button. Zodat ik ga begrijpen wat er gebeurt en deze in een DB kan opslaan. Echter vind ik ze wel los maar kan ze niet goed tot 1 vermaken.
Ik snap je probleem niet echt zo. Je kan nu toch zien welke data je verstuurt? Die verwerkt je dan naar je database.
Ik kan wel 3 losse formulieren vinden maar begrijp niet hoe ik die dan kan samenvoegen tot één formulier.
Die functies die je oproept (de bouwstenen dus) kan je overal in je formulier gebruiken.
Gewijzigd op 25/04/2017 14:31:28 door - Ariën -
Dank voor de hulp mensen laat verder maar zitten voor dit moment. Ik zal het wel niet begrijpen of niet uit kunnen leggen.
Wat lukt er nu niet aan jouw script die je nu hebt?
Wat niet lukt is om aan mijn eerder gebouwde scriptje met de in te vullen velden naam en E-mail. een paar checkboxen toe te voegen. bijvoorbeeld oliebollen appelbignets en patat. 3 een radiobutton man/ vrouw. Om daar 1 formulier van te maken en dat in een database te proppen.
Gewijzigd op 25/04/2017 15:09:13 door - Ariën -
Dat weet ik.
Mijn code ziet er als volgt uit:
$dbs = @mysqli_connect($dbshst, $dbsusr, $dbspsw);
if($dbs === false){---mijn eigen foutboodschaproutine---}
HOE kan ik elke mysqli foutboodschappen ONDERDRUKKEN onder PHP 7?
b) Tijdens ontwikkeling wil je zeker alle foutmeldingen zien. Als alles goed werkt en online staat kan ik me nog voorstellen dat je ALLE foutmeldingen wilt onderdrukken en niet alleen die van mysqli.
c) Alle foutmeldingen onderdrukken of juist tonen is gewoon een php.ini instelling:
Even van stackoverflow gekopieerd:
to Hide All Errors:
to Show All Errors: