Vage foutmelding op de edit pagina
Ik heb het zo in elkaar gezet:
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....
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
Nee dit is niet logisch Mohamed. Je wilt namelijk een pagina tonen aan de gebruiker. Maar de inhoud van deze pagina is AFHANKELIJK van een aantal variabelen. Zo kan het zijn dat je de gebruiker een nieuw leeg formulier wilt tonen of een formulier met foutmeldingen of een bedankpagina na een forward met header('Location: ...'). De functie header mag je enkel gebruiken voordat je iets echo-t. Dus moet dit bovenin komen, voor je output (view).
Gewijzigd op 02/01/2017 14:18:42 door Frank Nietbelangrijk
Waarom filter je je input niet? Indien $_GET['id'] geen numerieke waarde bevat heeft het sowieso geen zin om de query uit te voeren. Overigens is het gebruik van real_escape_string() zonder quotes niet veilig. real_escape_string() is ook geen wondermiddel.
Tevens:
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.
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.
Probeer nauwkeurig te zijn met inspringen, als ik twee }} achter elkaar zie staan in één lijn, dan is je script erg onduidelijk. Zie ook lijn 35 en 36.
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.
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.
Waarom komt $row['id'] op regel 40 vandaan en de variabelen op regel 42?
Gewijzigd op 02/01/2017 20:07:50 door Obelix Idefix
Hallo allemaal,
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?
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
Op lijn 28 waar je query met succes uitgevoerd is, daar controleer je of je formulier is verstuurd. En als dat niet verstuurd is, dan toon je het formulier. Dat is in mijn ogen de beste, logische en overzichtelijke keuze.
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.
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 -
De output is wel naar onderen nu. Dat ziet er veel beter uit.
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.
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
Hallo allemaal,
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!
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. ;-)
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, 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:
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
}
?>
Hallo - Ariën -,
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.
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:
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"; ?>
Die foutmelding staat op de verkeerde plaats. Eigenlijk is het je query die niet werkt.
Ikzelf gebruik Netbeans IDE.
Ikzelf gebruik Netbeans IDE.
Gewijzigd op 04/01/2017 09:52:59 door - Ariën -
Waar komt $row['id'] op regel 40 vandaan?
En waar komende de variabelen op regel 42 vandaan?
Debuggen: Wat zit er in $_GET['id'] als je die echoot op bv regel 26?
En waar komende de variabelen op regel 42 vandaan?
Debuggen: Wat zit er in $_GET['id'] als je die echoot op bv regel 26?
Wederom verwijs ik je naar 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.
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




