Vage foutmelding op de edit pagina
Let wel, dat ik voor het formulier de php code breek en weer open na het formulier...
Ik krijg nu enkel dat betreffende pagina niet gevonden kan worden en er is geen error in logs....
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
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
<?php
// Need the database connection:
require(MYSQL);
// op basis van een id worden gegevens van de vorige pagina geselecteerd en hieronder in het form weergegeven
if(isset($_GET['id'])){
$query = "SELECT id, medicinename, productiondate, expirationdate, medicineprice FROM medicines
WHERE id='".mysqli_real_escape_string($dbc,$_GET['id'])."'";
$result = mysqli_query($dbc,$query);
if($result===true) {
$row = mysqli_fetch_assoc($result)){?>
<div>
<h1>Medicines edit page</h1>
<form action="" method="post">
<fieldset>
<legend>Medicines edit form</legend>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<p><label for="medicinename"><b>Medicine Name:</b></label> <input type="text" name="medicinename" id="medicinename" value="<?php if (isset($medicinename)) echo $medicinename; ?>" /></p>
<p><label for="productiondate"><b>Production Date:</b></label> <input type="text" name="productiondate" id="productiondate" value="<?php if (isset($productiondate)) echo $productiondate; ?>" /></p>
<p><b><label for="expirationdate">Expiration Date:</b></label> <input type="text" name="expirationdate" id="expirationdate" value="<?php if (isset($expirationdate)) echo $expirationdate; ?>" /> </p>
<p><b><label for="medicineprise">Medicine price:</b></label> <input type="text" name="medicineprise" id="medicineprise" value="<?php if (isset($medicineprice)) echo $medicineprice; ?>" /> </p>
<input type="submit" name="update_medicine" value="Update medicine">
</fieldset>
</form>
</div>
<?php } else {
echo "Er is een fout bij ons opgetreden: ".mysqli_error($dbc);
}
} else {
echo "Er is geen medicijn-ID gekozen!";
}
}
?>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$id= $row['id'];
$update_medicine =" UPDATE medicines SET
medicinename = '$medicinename', productiondate = '$productiondate', expirationdate = '$expirationdate', medicineprice = '$medicineprice' WHERE id ='$id'";
$result_update = mysqli_query($dbc,$update_medicine);
if($result_update){
header ("Location: medicines.php");
exit;
} else {
die ("Query failed" . mysqli_error($dbc));
}
}
?>
<?php include "includes/footer.php"; ?>
// Need the database connection:
require(MYSQL);
// op basis van een id worden gegevens van de vorige pagina geselecteerd en hieronder in het form weergegeven
if(isset($_GET['id'])){
$query = "SELECT id, medicinename, productiondate, expirationdate, medicineprice FROM medicines
WHERE id='".mysqli_real_escape_string($dbc,$_GET['id'])."'";
$result = mysqli_query($dbc,$query);
if($result===true) {
$row = mysqli_fetch_assoc($result)){?>
<div>
<h1>Medicines edit page</h1>
<form action="" method="post">
<fieldset>
<legend>Medicines edit form</legend>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<p><label for="medicinename"><b>Medicine Name:</b></label> <input type="text" name="medicinename" id="medicinename" value="<?php if (isset($medicinename)) echo $medicinename; ?>" /></p>
<p><label for="productiondate"><b>Production Date:</b></label> <input type="text" name="productiondate" id="productiondate" value="<?php if (isset($productiondate)) echo $productiondate; ?>" /></p>
<p><b><label for="expirationdate">Expiration Date:</b></label> <input type="text" name="expirationdate" id="expirationdate" value="<?php if (isset($expirationdate)) echo $expirationdate; ?>" /> </p>
<p><b><label for="medicineprise">Medicine price:</b></label> <input type="text" name="medicineprise" id="medicineprise" value="<?php if (isset($medicineprice)) echo $medicineprice; ?>" /> </p>
<input type="submit" name="update_medicine" value="Update medicine">
</fieldset>
</form>
</div>
<?php } else {
echo "Er is een fout bij ons opgetreden: ".mysqli_error($dbc);
}
} else {
echo "Er is geen medicijn-ID gekozen!";
}
}
?>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$id= $row['id'];
$update_medicine =" UPDATE medicines SET
medicinename = '$medicinename', productiondate = '$productiondate', expirationdate = '$expirationdate', medicineprice = '$medicineprice' WHERE id ='$id'";
$result_update = mysqli_query($dbc,$update_medicine);
if($result_update){
header ("Location: medicines.php");
exit;
} else {
die ("Query failed" . mysqli_error($dbc));
}
}
?>
<?php include "includes/footer.php"; ?>
Gewijzigd op 02/01/2017 14:12:58 door Mohamed nvt
Gewijzigd op 02/01/2017 14:18:42 door Frank Nietbelangrijk
Tevens:
- Ariën - op 02/01/2017 13:58:06:
Het lijkt mij beter om de verschillende acties (het weergeven van een formulier, het verwerken van een formulier etc.) beter op te delen in verschillende stukken. Naarmate je scripts langer/complexer worden zijn dit soort constructies steeds minder gewenst.
Het opdelen in verschillende logische eenheden lijkt mij des te meer verstandig omdat ik al ergens ob_end_flush() zag staan - dit houdt in dat je al ergens begonnen was met het weergeven van een HTML-document, maar daar af en toe van af wil zien? Ook dit zou beter opgedeeld moeten worden: of je produceert geldige output (een compleet HTML-document, JSON, iets anders) of je produceert géén output (maar enkel headers die je doorverwijzen of iets dergelijks).
Misschien is dit een goed moment om even een stapje achteruit te doen en eens te kijken hoe de flow van je code/pagina-opbouw handiger aangepakt kan worden. Deze investering verdient zich snel weer terug omdat ontwikkeling en debugging in veel kleinere partjes kan/betrekking heeft.
Verder is die() ook niet de juiste manier van fouten afhandelen. Waarom zou je script er helemaal mee moeten stoppen? Alleen bij een location-header is een exit of een die de juiste oplossing.
Gewijzigd op 02/01/2017 20:07:50 door Obelix Idefix
Door alle adviezen ben ik nu een beetje in de war.
Wat is een duidelijke indeling voor mijn probleem, en ik dacht zelf aan het volgende na het doornemen van alle adviezen:
med_edit pagina
1. sessie controleren om te bepalen of een user ingelogd is en anders door verwijzen naar login pagina
2. dmv get[''] het ID ophalen uit de medicines.php pagina
3. gegevens uit dn ophalen
4. afhandelen van het formulier
5. formulier laten zien?
Wat denken jullie over bovenstaande indeling?
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
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
<?php
require ('includes/config.inc.php');
$page_title = 'Overview of all medicines saved to the database';
include ('includes/header.php');
// If no user_id session variable exists, redirect the user:
if (!isset($_SESSION['user_id'])) {
$url = BASE_URL . 'index.php'; // Define the URL.
ob_end_clean(); // Delete the buffer.
header("Location: $url");
exit(); // Quit the script.
}else{
echo "Welcome " . "{$_SESSION['firstname']}". "<br>";
}
// Need the database connection:
require(MYSQL);
// op basis van een id worden gegevens van de vorige pagina geselecteerd en hieronder in het form weergegeven
if(isset($_GET['id'])){
$query = "SELECT id, medicinename, productiondate, expirationdate, medicineprice FROM medicines
WHERE id='".mysqli_real_escape_string($dbc,$_GET['id'])."'";
$result = mysqli_query($dbc,$query);
if($result===true) {
$row = mysqli_fetch_assoc($result)){
} else {
echo "Er is een fout bij ons opgetreden: ".mysqli_error($dbc);
}
} else {
echo "Er is geen medicijn-ID gekozen!";
}
}
?>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$id= $row['id'];
$update_medicine =" UPDATE medicines SET
medicinename = '$medicinename', productiondate = '$productiondate', expirationdate = '$expirationdate', medicineprice = '$medicineprice' WHERE id ='$id'";
$result_update = mysqli_query($dbc,$update_medicine);
if($result_update){
header ("Location: medicines.php");
exit;
} else {
die ("Query failed" . mysqli_error($dbc));
}
}
?>
<div>
<h1>Medicines edit page</h1>
<form action="" method="post">
<fieldset>
<legend>Medicines edit form</legend>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<p><label for="medicinename"><b>Medicine Name:</b></label> <input type="text" name="medicinename" id="medicinename" value="<?php if (isset($medicinename)) echo $medicinename; ?>" /></p>
<p><label for="productiondate"><b>Production Date:</b></label> <input type="text" name="productiondate" id="productiondate" value="<?php if (isset($productiondate)) echo $productiondate; ?>" /></p>
<p><b><label for="expirationdate">Expiration Date:</b></label> <input type="text" name="expirationdate" id="expirationdate" value="<?php if (isset($expirationdate)) echo $expirationdate; ?>" /> </p>
<p><b><label for="medicineprise">Medicine price:</b></label> <input type="text" name="medicineprise" id="medicineprise" value="<?php if (isset($medicineprice)) echo $medicineprice; ?>" /> </p>
<input type="submit" name="update_medicine" value="Update medicine">
</fieldset>
</form>
</div>
<?php include "includes/footer.php"; ?>
require ('includes/config.inc.php');
$page_title = 'Overview of all medicines saved to the database';
include ('includes/header.php');
// If no user_id session variable exists, redirect the user:
if (!isset($_SESSION['user_id'])) {
$url = BASE_URL . 'index.php'; // Define the URL.
ob_end_clean(); // Delete the buffer.
header("Location: $url");
exit(); // Quit the script.
}else{
echo "Welcome " . "{$_SESSION['firstname']}". "<br>";
}
// Need the database connection:
require(MYSQL);
// op basis van een id worden gegevens van de vorige pagina geselecteerd en hieronder in het form weergegeven
if(isset($_GET['id'])){
$query = "SELECT id, medicinename, productiondate, expirationdate, medicineprice FROM medicines
WHERE id='".mysqli_real_escape_string($dbc,$_GET['id'])."'";
$result = mysqli_query($dbc,$query);
if($result===true) {
$row = mysqli_fetch_assoc($result)){
} else {
echo "Er is een fout bij ons opgetreden: ".mysqli_error($dbc);
}
} else {
echo "Er is geen medicijn-ID gekozen!";
}
}
?>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$id= $row['id'];
$update_medicine =" UPDATE medicines SET
medicinename = '$medicinename', productiondate = '$productiondate', expirationdate = '$expirationdate', medicineprice = '$medicineprice' WHERE id ='$id'";
$result_update = mysqli_query($dbc,$update_medicine);
if($result_update){
header ("Location: medicines.php");
exit;
} else {
die ("Query failed" . mysqli_error($dbc));
}
}
?>
<div>
<h1>Medicines edit page</h1>
<form action="" method="post">
<fieldset>
<legend>Medicines edit form</legend>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<p><label for="medicinename"><b>Medicine Name:</b></label> <input type="text" name="medicinename" id="medicinename" value="<?php if (isset($medicinename)) echo $medicinename; ?>" /></p>
<p><label for="productiondate"><b>Production Date:</b></label> <input type="text" name="productiondate" id="productiondate" value="<?php if (isset($productiondate)) echo $productiondate; ?>" /></p>
<p><b><label for="expirationdate">Expiration Date:</b></label> <input type="text" name="expirationdate" id="expirationdate" value="<?php if (isset($expirationdate)) echo $expirationdate; ?>" /> </p>
<p><b><label for="medicineprise">Medicine price:</b></label> <input type="text" name="medicineprise" id="medicineprise" value="<?php if (isset($medicineprice)) echo $medicineprice; ?>" /> </p>
<input type="submit" name="update_medicine" value="Update medicine">
</fieldset>
</form>
</div>
<?php include "includes/footer.php"; ?>
Gewijzigd op 02/01/2017 20:22:25 door Mohamed nvt
En ja, er zijn altijd mensen die anders zijn gewend. Genoeg mogelijkheden....
Op jouw manier die je nu hebt zie je ook zonder een meegegeven ID in de URL ook een formulier, en dat hoort niet. Het is eigenlijk een opbouw in de vorm van:
Doe dit, en anders dat.. doe zus, en anders zo... doe dit, en anders dat.....
En dat valt dan mooi te nestelen.
Gewijzigd op 02/01/2017 20:25:00 door - Ariën -
Alleen de include ('includes/header.php'); op regel vier moet naar regel 53. Want in header.php staat ook pure output (neem ik aan).
In aanvulling op de aanmerking van Arien:
Deze hele pagina Heeft absoluut 1 vereiste:
- Er moet een geldige GET variabele 'id' meegegeven worden.
Dit id moet aan de volgende voorwaarden voldoen:
- moet meegegeven worden ( isset($_GET['id']) )
- numeriek geheel getal zijn
- groter dan nul zijn
- voorkomen in de medicines tabel. (dwz controleren of het record gevonden is)
Voldoet id niet aan de voorwaarden dan kun je deze pagina niet weergeven. Toon in dat geval een foutmelding.
verder wat zeur dingetjes:
- Regel 38 de if staat helemaal tegen de kantlijn wat goed is maar dan hoort de } op regel 52 ook tegen de kantlijn
- regel 36 + 37 kunnen vervallen
- de foutmeldingen op regel 17, 30, 33 gaan nu een tekst op het scherm zetten waarna nog de html geopend zal worden. Misschien moet je hier een functie voor maken?
- regel 17 moet in de output komen.
Code (php)
Gewijzigd op 02/01/2017 21:08:59 door Frank Nietbelangrijk
Na jullie adviezen heb ik het med_edit.php opnieuw gebouwd, maar kan er helaas nog niets mee doen.
Vooraf controleer ik of het $_GET['id'] is set, niet leeg is en/of het een integer is.
Als het form niet verzonden is, dan wordt het weergegeven. Het is dus het ene of andere...
Helaas heeft het de volgende foutmelding en hopelijk kunnen jullie van mij advies voorzien:
1. Wit pagina, wegens een syntax fout, en volgens http://phpcodechecker.com/ vind ik er eentje op regel 31, maar die { hoort bij regel 38
2. geen idee nog, wegens wit pagina.
Zoals eerder aangegeven wordt het formulier aangegeven wanneer het niet verzonden is, maar ik vraag me af of ik de php code moet breken op form value, omdat daar ook php code staat om vervolgens php code opnieuw te beginnen?
Alvast bedankt voor jullie feedback!
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
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
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
?>
<?php
require ('includes/config.inc.php');
$page_title = 'Overview of all medicines saved to the database';
include ('includes/header.php');
// If no user_id session variable exists, redirect the user:
if (!isset($_SESSION['user_id'])) {
$url = BASE_URL . 'index.php'; // Define the URL.
ob_end_clean(); // Delete the buffer.
header("Location: $url");
exit(); // Quit the script.
}else{
echo "Welcome " . "{$_SESSION['firstname']}". "<br>";
}
// Need the database connection:
require(MYSQL);
// op basis van een id worden gegevens van de vorige pagina geselecteerd en hieronder in het form weergegeven
if(isset($_GET['id']) && !empty($_GET['id']) && is_int($_GET['id'])){
$query = "SELECT * FROM medicines WHERE id='".mysqli_real_escape_string($dbc,$_GET['id'])."'";
$result = mysqli_query($dbc,$query);
if($result===true) {
$row = mysqli_fetch_assoc($result){
} else {
echo "Er is een fout bij ons opgetreden: ".mysqli_error($dbc);
}
} else {
echo "Er is geen medicijn-ID gekozen!";
}
}
?>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$id= $row['id'];
$update_medicine =" UPDATE medicines SET
medicinename = '$medicinename', productiondate = '$productiondate', expirationdate = '$expirationdate', medicineprice = '$medicineprice'
WHERE id ='$id'";
$result_update = mysqli_query($dbc,$update_medicine);
if($result_update){
header ("Location: medicines.php");
exit;
} else {
die ("Query failed" . mysqli_error($dbc));
}
} else {
echo '<div>
<h1>Medicines edit page</h1>
<form action="" method="post">
<fieldset>
<legend>Medicines edit form</legend>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<p><label for="medicinename"><b>Medicine Name:</b></label> <input type="text" name="medicinename" id="medicinename" value="<?php if (isset($medicinename)) echo $medicinename; ?>" /></p>
<p><label for="productiondate"><b>Production Date:</b></label> <input type="text" name="productiondate" id="productiondate" value="<?php if (isset($productiondate)) echo $productiondate; ?>" /></p>
<p><b><label for="expirationdate">Expiration Date:</b></label> <input type="text" name="expirationdate" id="expirationdate" value="<?php if (isset($expirationdate)) echo $expirationdate; ?>" /> </p>
<p><b><label for="medicineprise">Medicine price:</b></label> <input type="text" name="medicineprise" id="medicineprise" value="<?php if (isset($medicineprice)) echo $medicineprice; ?>" /> </p>
<input type="submit" name="update_medicine" value="Update medicine">
</fieldset>
</form>
</div>';
}
?>
<?php include "includes/footer.php"; ?>
error_reporting(E_ALL);
ini_set('display_errors', 'On');
?>
<?php
require ('includes/config.inc.php');
$page_title = 'Overview of all medicines saved to the database';
include ('includes/header.php');
// If no user_id session variable exists, redirect the user:
if (!isset($_SESSION['user_id'])) {
$url = BASE_URL . 'index.php'; // Define the URL.
ob_end_clean(); // Delete the buffer.
header("Location: $url");
exit(); // Quit the script.
}else{
echo "Welcome " . "{$_SESSION['firstname']}". "<br>";
}
// Need the database connection:
require(MYSQL);
// op basis van een id worden gegevens van de vorige pagina geselecteerd en hieronder in het form weergegeven
if(isset($_GET['id']) && !empty($_GET['id']) && is_int($_GET['id'])){
$query = "SELECT * FROM medicines WHERE id='".mysqli_real_escape_string($dbc,$_GET['id'])."'";
$result = mysqli_query($dbc,$query);
if($result===true) {
$row = mysqli_fetch_assoc($result){
} else {
echo "Er is een fout bij ons opgetreden: ".mysqli_error($dbc);
}
} else {
echo "Er is geen medicijn-ID gekozen!";
}
}
?>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$id= $row['id'];
$update_medicine =" UPDATE medicines SET
medicinename = '$medicinename', productiondate = '$productiondate', expirationdate = '$expirationdate', medicineprice = '$medicineprice'
WHERE id ='$id'";
$result_update = mysqli_query($dbc,$update_medicine);
if($result_update){
header ("Location: medicines.php");
exit;
} else {
die ("Query failed" . mysqli_error($dbc));
}
} else {
echo '<div>
<h1>Medicines edit page</h1>
<form action="" method="post">
<fieldset>
<legend>Medicines edit form</legend>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<p><label for="medicinename"><b>Medicine Name:</b></label> <input type="text" name="medicinename" id="medicinename" value="<?php if (isset($medicinename)) echo $medicinename; ?>" /></p>
<p><label for="productiondate"><b>Production Date:</b></label> <input type="text" name="productiondate" id="productiondate" value="<?php if (isset($productiondate)) echo $productiondate; ?>" /></p>
<p><b><label for="expirationdate">Expiration Date:</b></label> <input type="text" name="expirationdate" id="expirationdate" value="<?php if (isset($expirationdate)) echo $expirationdate; ?>" /> </p>
<p><b><label for="medicineprise">Medicine price:</b></label> <input type="text" name="medicineprise" id="medicineprise" value="<?php if (isset($medicineprice)) echo $medicineprice; ?>" /> </p>
<input type="submit" name="update_medicine" value="Update medicine">
</fieldset>
</form>
</div>';
}
?>
<?php include "includes/footer.php"; ?>
Je uitlijning is nog niet echt perfect. ;-)
zoals ook op PHP.net staat.
Daar staat tevens:
Of je maakt gebruik van een regexp, omdat is_numeric() nogal breed is.
Ook is het niet nodig om lappen HTML te echo'en. Je kunt te allen tijde een PHP-blok afbreken en opnieuw opstarten:
is_int() gaat sowieso niet werken omdat $_GET['id'] een string is (zoals alle variabelen in $_GET en $_POST). is_int() checkt namelijk het type, Daar staat tevens:
Quote:
Note:
To test if a variable is a number or a numeric string (such as form input, which is always a string), you must use is_numeric().
To test if a variable is a number or a numeric string (such as form input, which is always a string), you must use is_numeric().
Of je maakt gebruik van een regexp, omdat is_numeric() nogal breed is.
Ook is het niet nodig om lappen HTML te echo'en. Je kunt te allen tijde een PHP-blok afbreken en opnieuw opstarten:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
if ($whatever) {
?><b>Dit is een stuk beter leesbaar dan een lap HTML echo'en.</b><?php
}
?>
if ($whatever) {
?><b>Dit is een stuk beter leesbaar dan een lap HTML echo'en.</b><?php
}
?>
Als je tips hebt, dan hoor ik dat graag of is er een beter programma om PHP te schrijven dan Notepad++?
Ik kan die syntax errors maar niet vinden helaas...
@Thomas,
is_int heb ik vervangen door is_numeric en voor het form beëindig ik php code en na het form begin ik weer met PHP code...
Zou iemand willen kijken waar ik precies een syntax error heb?
Alvast bedankt.
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
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
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
?>
<?php
require ('includes/config.inc.php');
$page_title = 'Overview of all medicines saved to the database';
include ('includes/header.php');
// If no user_id session variable exists, redirect the user:
if (!isset($_SESSION['user_id'])) {
$url = BASE_URL . 'index.php'; // Define the URL.
ob_end_clean(); // Delete the buffer.
header("Location: $url");
exit(); // Quit the script.
}else{
echo "Welcome " . "{$_SESSION['firstname']}". "<br>";
}
// Need the database connection:
require(MYSQL);
// op basis van een id worden gegevens van de vorige pagina geselecteerd en hieronder in het form weergegeven
if(isset($_GET['id']) && !empty($_GET['id']) && is_numeric($_GET['id'])){
$query = "SELECT * FROM medicines WHERE id='".mysqli_real_escape_string($dbc,$_GET['id'])."'";
$result = mysqli_query($dbc,$query);
if($result===true) {
$row = mysqli_fetch_assoc($result){
} else {
echo "Er is een fout bij ons opgetreden: ".mysqli_error($dbc);
}
} else {
echo "Er is geen medicijn-ID gekozen!";
}
}
?>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$id= $row['id'];
$update_medicine =" UPDATE medicines SET
medicinename = '$medicinename', productiondate = '$productiondate', expirationdate = '$expirationdate', medicineprice = '$medicineprice'
WHERE id ='$id'";
$result_update = mysqli_query($dbc,$update_medicine);
if($result_update){
header ("Location: medicines.php");
exit;
} else {
die ("Query failed" . mysqli_error($dbc));
}
} else { ?>
<h1>Medicines edit page</h1>
<form action="" method="post">
<fieldset>
<legend>Medicines edit form</legend>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<p><label for="medicinename"><b>Medicine Name:</b></label> <input type="text" name="medicinename" id="medicinename" value="<?php if (isset($medicinename)) echo $medicinename; ?>" /></p>
<p><label for="productiondate"><b>Production Date:</b></label> <input type="text" name="productiondate" id="productiondate" value="<?php if (isset($productiondate)) echo $productiondate; ?>" /></p>
<p><b><label for="expirationdate">Expiration Date:</b></label> <input type="text" name="expirationdate" id="expirationdate" value="<?php if (isset($expirationdate)) echo $expirationdate; ?>" /> </p>
<p><b><label for="medicineprise">Medicine price:</b></label> <input type="text" name="medicineprise" id="medicineprise" value="<?php if (isset($medicineprice)) echo $medicineprice; ?>" /> </p>
<input type="submit" name="update_medicine" value="Update medicine">
</fieldset>
</form>
</div>
<?php }
?>
<?php include "includes/footer.php"; ?>
error_reporting(E_ALL);
ini_set('display_errors', 'On');
?>
<?php
require ('includes/config.inc.php');
$page_title = 'Overview of all medicines saved to the database';
include ('includes/header.php');
// If no user_id session variable exists, redirect the user:
if (!isset($_SESSION['user_id'])) {
$url = BASE_URL . 'index.php'; // Define the URL.
ob_end_clean(); // Delete the buffer.
header("Location: $url");
exit(); // Quit the script.
}else{
echo "Welcome " . "{$_SESSION['firstname']}". "<br>";
}
// Need the database connection:
require(MYSQL);
// op basis van een id worden gegevens van de vorige pagina geselecteerd en hieronder in het form weergegeven
if(isset($_GET['id']) && !empty($_GET['id']) && is_numeric($_GET['id'])){
$query = "SELECT * FROM medicines WHERE id='".mysqli_real_escape_string($dbc,$_GET['id'])."'";
$result = mysqli_query($dbc,$query);
if($result===true) {
$row = mysqli_fetch_assoc($result){
} else {
echo "Er is een fout bij ons opgetreden: ".mysqli_error($dbc);
}
} else {
echo "Er is geen medicijn-ID gekozen!";
}
}
?>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$id= $row['id'];
$update_medicine =" UPDATE medicines SET
medicinename = '$medicinename', productiondate = '$productiondate', expirationdate = '$expirationdate', medicineprice = '$medicineprice'
WHERE id ='$id'";
$result_update = mysqli_query($dbc,$update_medicine);
if($result_update){
header ("Location: medicines.php");
exit;
} else {
die ("Query failed" . mysqli_error($dbc));
}
} else { ?>
<h1>Medicines edit page</h1>
<form action="" method="post">
<fieldset>
<legend>Medicines edit form</legend>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<p><label for="medicinename"><b>Medicine Name:</b></label> <input type="text" name="medicinename" id="medicinename" value="<?php if (isset($medicinename)) echo $medicinename; ?>" /></p>
<p><label for="productiondate"><b>Production Date:</b></label> <input type="text" name="productiondate" id="productiondate" value="<?php if (isset($productiondate)) echo $productiondate; ?>" /></p>
<p><b><label for="expirationdate">Expiration Date:</b></label> <input type="text" name="expirationdate" id="expirationdate" value="<?php if (isset($expirationdate)) echo $expirationdate; ?>" /> </p>
<p><b><label for="medicineprise">Medicine price:</b></label> <input type="text" name="medicineprise" id="medicineprise" value="<?php if (isset($medicineprice)) echo $medicineprice; ?>" /> </p>
<input type="submit" name="update_medicine" value="Update medicine">
</fieldset>
</form>
</div>
<?php }
?>
<?php include "includes/footer.php"; ?>
Toevoeging op 04/01/2017 07:13:56:
Update:
De foutmelding "wit pagina" heb ik nu opgelost.
Helaas krijg ik nog steeds de foutmelding dat er geen medicijn_ID wordt gekozen en dus het formulier wordt niet geladen met medicijn gegevens...
Nieuw 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
71
72
73
74
75
76
77
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
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
?>
<?php
require ('includes/config.inc.php');
$page_title = 'Overview of all medicines saved to the database';
include ('includes/header.php');
// If no user_id session variable exists, redirect the user:
if (!isset($_SESSION['user_id'])) {
$url = BASE_URL . 'index.php'; // Define the URL.
ob_end_clean(); // Delete the buffer.
header("Location: $url");
exit(); // Quit the script.
}else{
echo "Welcome " . "{$_SESSION['firstname']}". "<br>";
}
// Need the database connection:
require(MYSQL);
// op basis van een id worden gegevens van de vorige pagina geselecteerd en hieronder in het form weergegeven
if(isset($_GET['id']) && !empty($_GET['id']) && is_numeric($_GET['id'])){
$query = "SELECT * FROM medicines WHERE id='".mysqli_real_escape_string($dbc,$_GET['id'])."'";
$result = mysqli_query($dbc,$query);
if($result===true) {
$row = mysqli_fetch_assoc($result);
} else {
echo "Er is geen medicijn-ID gekozen!";
}
}
?>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$id= $row['id'];
$update_medicine =" UPDATE medicines SET
medicinename = '$medicinename', productiondate = '$productiondate', expirationdate = '$expirationdate', medicineprice = '$medicineprice'
WHERE id ='$id'";
$result_update = mysqli_query($dbc,$update_medicine);
if($result_update){
header ("Location: medicines.php");
exit;
} else {
die ("Query failed" . mysqli_error($dbc));
}
} else { ?>
<h1>Medicines edit page</h1>
<form action="" method="post">
<fieldset>
<legend>Medicines edit form</legend>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<p><label for="medicinename"><b>Medicine Name:</b></label> <input type="text" name="medicinename" id="medicinename" value="<?php if (isset($medicinename)) echo $medicinename; ?>" /></p>
<p><label for="productiondate"><b>Production Date:</b></label> <input type="text" name="productiondate" id="productiondate" value="<?php if (isset($productiondate)) echo $productiondate; ?>" /></p>
<p><b><label for="expirationdate">Expiration Date:</b></label> <input type="text" name="expirationdate" id="expirationdate" value="<?php if (isset($expirationdate)) echo $expirationdate; ?>" /> </p>
<p><b><label for="medicineprise">Medicine price:</b></label> <input type="text" name="medicineprise" id="medicineprise" value="<?php if (isset($medicineprice)) echo $medicineprice; ?>" /> </p>
<input type="submit" name="update_medicine" value="Update medicine">
</fieldset>
</form>
</div>
<?php }
?>
<?php include "includes/footer.php"; ?>
error_reporting(E_ALL);
ini_set('display_errors', 'On');
?>
<?php
require ('includes/config.inc.php');
$page_title = 'Overview of all medicines saved to the database';
include ('includes/header.php');
// If no user_id session variable exists, redirect the user:
if (!isset($_SESSION['user_id'])) {
$url = BASE_URL . 'index.php'; // Define the URL.
ob_end_clean(); // Delete the buffer.
header("Location: $url");
exit(); // Quit the script.
}else{
echo "Welcome " . "{$_SESSION['firstname']}". "<br>";
}
// Need the database connection:
require(MYSQL);
// op basis van een id worden gegevens van de vorige pagina geselecteerd en hieronder in het form weergegeven
if(isset($_GET['id']) && !empty($_GET['id']) && is_numeric($_GET['id'])){
$query = "SELECT * FROM medicines WHERE id='".mysqli_real_escape_string($dbc,$_GET['id'])."'";
$result = mysqli_query($dbc,$query);
if($result===true) {
$row = mysqli_fetch_assoc($result);
} else {
echo "Er is geen medicijn-ID gekozen!";
}
}
?>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$id= $row['id'];
$update_medicine =" UPDATE medicines SET
medicinename = '$medicinename', productiondate = '$productiondate', expirationdate = '$expirationdate', medicineprice = '$medicineprice'
WHERE id ='$id'";
$result_update = mysqli_query($dbc,$update_medicine);
if($result_update){
header ("Location: medicines.php");
exit;
} else {
die ("Query failed" . mysqli_error($dbc));
}
} else { ?>
<h1>Medicines edit page</h1>
<form action="" method="post">
<fieldset>
<legend>Medicines edit form</legend>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<p><label for="medicinename"><b>Medicine Name:</b></label> <input type="text" name="medicinename" id="medicinename" value="<?php if (isset($medicinename)) echo $medicinename; ?>" /></p>
<p><label for="productiondate"><b>Production Date:</b></label> <input type="text" name="productiondate" id="productiondate" value="<?php if (isset($productiondate)) echo $productiondate; ?>" /></p>
<p><b><label for="expirationdate">Expiration Date:</b></label> <input type="text" name="expirationdate" id="expirationdate" value="<?php if (isset($expirationdate)) echo $expirationdate; ?>" /> </p>
<p><b><label for="medicineprise">Medicine price:</b></label> <input type="text" name="medicineprise" id="medicineprise" value="<?php if (isset($medicineprice)) echo $medicineprice; ?>" /> </p>
<input type="submit" name="update_medicine" value="Update medicine">
</fieldset>
</form>
</div>
<?php }
?>
<?php include "includes/footer.php"; ?>
En waar komende de variabelen op regel 42 vandaan?
Debuggen: Wat zit er in $_GET['id'] als je die echoot op bv regel 26?
PHP.net.
mysqli_query met een SELECT-statement levert:
- ofwel false op wanneer er syntax-fouten in de query zitten
- ofwel een mysqli_result object (dit kan overigens een lege resultset zijn)
Op regel 31 vergelijk je het resultaat echter met true. Dit gaat nooit werken.
Dit had je ook zelf kunnen zien, je zegt immers:
Dit wijst je rechtstreeks naar het if-statement waar het resultaat blijkbaar dus geen true was.
Wederom verwijs ik je naar mysqli_query met een SELECT-statement levert:
- ofwel false op wanneer er syntax-fouten in de query zitten
- ofwel een mysqli_result object (dit kan overigens een lege resultset zijn)
Op regel 31 vergelijk je het resultaat echter met true. Dit gaat nooit werken.
Dit had je ook zelf kunnen zien, je zegt immers:
Quote:
Helaas krijg ik nog steeds de foutmelding dat er geen medicijn_ID wordt gekozen en dus het formulier wordt niet geladen met medicijn gegevens...
Dit wijst je rechtstreeks naar het if-statement waar het resultaat blijkbaar dus geen true was.
Gewijzigd op 04/01/2017 16:15:53 door Thomas van den Heuvel