PHP Update query werkt helaas niet
Dit kan prima buiten PHP worden geregeld.
Die includes voor header en sidebar kan je prima afhandelen op de plek na je PHP-code.
Gewijzigd op 31/08/2016 22:51:17 door - Ariën -
Bedankt voor je feedback.
Ik begrijp nu ook beter welke PHP code waar ik moet plaatsen.
Helaas heb ik dit niet geleerd tijdens verschillende PHP cursussen!
Maar goed, je bent nooit oud om te leren, zeg ik dan altijd :)
Na aanleiding van je reactie heb ik de code geherstructureerd en het ziet er als volgt uit:
De PHP redirect werkt nu ook, maar toch wil ik nog een tekst laat zien wanneer een item is toegevoegd zoals jullie dat hier doen wanneer iemand een gebruiker is ingelogd...
Moet ik afstappen van PHP redirect of zijn er nog andere mogelijkheden..
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
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
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
?>
<?php include "includes/db-config1.php"; ?>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
if(isset($_POST['submit']) && strlen(trim($_POST['submit'])) > 0){
$med_name = $_POST['name'];
$med_production= $_POST['production'];
$med_expire= $_POST['expire'];
//$med_factory= $_POST['factory'];
//$med_category= $_POST['category'];
if($med_name =="" || empty($med_name)){
echo "This field can't be empty";
} else {
$query = "INSERT into medicines (med_name,med_create_date,med_expire_date,med_register_date)
values ('$med_name','$med_production','$med_expire', NOW()) ";
$create_medicines = mysqli_query($connection,$query);
$last_id = mysqli_insert_id($connection);
if(!$create_medicines){ // Niet nodig en nooit DIE gebruiken buiten de ontwikkel versie.
die(mysqli_error($connection));
} else {
/* echo "New category created successfully and the last inserted ID is: " . $last_id .
"You will be automatically redirected to the previous page in 3 seconds..."; */
header ("Location: medicines.php");
exit;
}
}
}
}
?>
<?php include "includes/header.php"; ?>
<?php include "includes/sidebar.php"; ?>
<div>
<form action="" method="post">
<fieldset>
<legend>Insert form</legend>
<p><label for="name">Medicine name:</label><input type="text" name="name" id="name"></p>
<p><label for="production">Medicine production date:</label><input type="text" name="production" id="production"></p>
<p><label for="expire">Medicine expire date:</label><input type="text" name="expire" id="expire"></p>
<p><label for="factory">Delivered by factory:</label><input type="text" name="factory" id="factory"></p>
<p><label for="category">belongs to category:</label><input type="text" name="category" id="category"></p>
<input type="submit" name="submit" value="Insert">
</fieldset>
</form>
</div>
<?php include "includes/footer.php"; ?>
error_reporting(E_ALL);
ini_set('display_errors', 'On');
?>
<?php include "includes/db-config1.php"; ?>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
if(isset($_POST['submit']) && strlen(trim($_POST['submit'])) > 0){
$med_name = $_POST['name'];
$med_production= $_POST['production'];
$med_expire= $_POST['expire'];
//$med_factory= $_POST['factory'];
//$med_category= $_POST['category'];
if($med_name =="" || empty($med_name)){
echo "This field can't be empty";
} else {
$query = "INSERT into medicines (med_name,med_create_date,med_expire_date,med_register_date)
values ('$med_name','$med_production','$med_expire', NOW()) ";
$create_medicines = mysqli_query($connection,$query);
$last_id = mysqli_insert_id($connection);
if(!$create_medicines){ // Niet nodig en nooit DIE gebruiken buiten de ontwikkel versie.
die(mysqli_error($connection));
} else {
/* echo "New category created successfully and the last inserted ID is: " . $last_id .
"You will be automatically redirected to the previous page in 3 seconds..."; */
header ("Location: medicines.php");
exit;
}
}
}
}
?>
<?php include "includes/header.php"; ?>
<?php include "includes/sidebar.php"; ?>
<div>
<form action="" method="post">
<fieldset>
<legend>Insert form</legend>
<p><label for="name">Medicine name:</label><input type="text" name="name" id="name"></p>
<p><label for="production">Medicine production date:</label><input type="text" name="production" id="production"></p>
<p><label for="expire">Medicine expire date:</label><input type="text" name="expire" id="expire"></p>
<p><label for="factory">Delivered by factory:</label><input type="text" name="factory" id="factory"></p>
<p><label for="category">belongs to category:</label><input type="text" name="category" id="category"></p>
<input type="submit" name="submit" value="Insert">
</fieldset>
</form>
</div>
<?php include "includes/footer.php"; ?>
(zie regels 4/5 5/6 36/37 37/38)
Zoals eerder aangegeven: een header werkt niet als er al output is geweest. Je kunt, als je een tekst wilt laten zien voor je doorverwijst naar een andere pagina, dus geen header gebruiken.
SanThe heeft in de post van 31/08/2016 14:26:11 al laten zien hoe het dan zou kunnen.
Wat wil je met $last_id gaan doen? Je maakt hem wel aan, maar die is daarna (door de verwijzing naar een andere pagina), volgens mij niet meer beschikbaar.
Gewijzigd op 01/09/2016 09:55:02 door Obelix Idefix
Obelix en Idefix op 01/09/2016 09:52:31:
Waarom sluit je php-tag af om die op de volgende regel weer te openen?
(zie regels 4/5 5/6 36/37 37/38)
(zie regels 4/5 5/6 36/37 37/38)
Omdat elk code eigen functie uitvoert.
Zoals je ziet, is het dus niet allemaal dezelfde code. En ik heb begrepen om voor elk code eigen php-tag te gebruiken of is het aan te raden om een php tag te gebruiken?
Obelix en Idefix op 01/09/2016 09:52:31:
Zoals eerder aangegeven: een header werkt niet als er al output is geweest. Je kunt, als je een tekst wilt laten zien voor je doorverwijst naar een andere pagina, dus geen header gebruiken.
SanThe heeft in de post van 31/08/2016 14:26:11 al laten zien hoe het dan zou kunnen.
SanThe heeft in de post van 31/08/2016 14:26:11 al laten zien hoe het dan zou kunnen.
Duidelijk, ik ga me verdiepen in de feedback van Santhe.
Obelix en Idefix op 01/09/2016 09:52:31:
Wat wil je met $last_id gaan doen? Je maakt hem wel aan, maar die is daarna (door de verwijzing naar een andere pagina), volgens mij niet meer beschikbaar.
Klopt, na de redirect is het niet meer beschikbaar.
Ik had hem nog niet weggehaald, omdat ik dacht, als er nog wat opties waren mbt PHP header
Gewijzigd op 01/09/2016 10:13:06 door Mohamed nvt
Mohamed nvt op 01/09/2016 10:11:21:
Omdat elk code eigen functie uitvoert.
Zoals je ziet, is het dus niet allemaal dezelfde code. En ik heb begrepen om voor elk code eigen php-tag te gebruiken of is het aan te raden om een php tag te gebruiken?
Obelix en Idefix op 01/09/2016 09:52:31:
Waarom sluit je php-tag af om die op de volgende regel weer te openen?
(zie regels 4/5 5/6 36/37 37/38)
(zie regels 4/5 5/6 36/37 37/38)
Omdat elk code eigen functie uitvoert.
Zoals je ziet, is het dus niet allemaal dezelfde code. En ik heb begrepen om voor elk code eigen php-tag te gebruiken of is het aan te raden om een php tag te gebruiken?
Quote:
Wie / waar is je dat vertelt? Het wordt er naar mijn idee niet overzichtelijker op. Het voegt niets toe.
Met jouw redenatie zou je bijna elke regel moeten openen/afsluiten met een php-tag.
Zou ik niet doen.
Ook al had die header gewerkt, volgens mij had je dan nog niets gehad aan $last_id op die nieuwe pagina. Die wordt namelijk niet meegenomen. Dan zou je hem in een sessie moeten zetten.
Met jouw redenatie zou je bijna elke regel moeten openen/afsluiten met een php-tag.
Zou ik niet doen.
Mohamed nvt op 01/09/2016 10:11:21:
Klopt, na de redirect is het niet meer beschikbaar.
Ik had hem nog niet weggehaald, omdat ik dacht, als er nog wat opties waren mbt PHP header
Obelix en Idefix op 01/09/2016 09:52:31:
Wat wil je met $last_id gaan doen? Je maakt hem wel aan, maar die is daarna (door de verwijzing naar een andere pagina), volgens mij niet meer beschikbaar.
Klopt, na de redirect is het niet meer beschikbaar.
Ik had hem nog niet weggehaald, omdat ik dacht, als er nog wat opties waren mbt PHP header
Ook al had die header gewerkt, volgens mij had je dan nog niets gehad aan $last_id op die nieuwe pagina. Die wordt namelijk niet meegenomen. Dan zou je hem in een sessie moeten zetten.
Gewijzigd op 01/09/2016 10:36:24 door Obelix Idefix
Daarna zou je een echo kunnen plaatsen, die men ziet, waarin staat dat diegene wordt doorverwezen.
Verder is het niet nodig om op lijn 9 t/m 13 variabelen te kopieeren. Je kan prima je $_POST-variabelen gebruiken in je echo. Zorg er dan wel voor dat je deze ook ALTIJD escaped tegen manipulatie en SQL-injection.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$query = "INSERT into medicines (med_name,med_create_date,med_expire_date,med_register_date)
VALUES('".mysqli_real_escape_string($connection, $_POST['name'])."',
'".mysqli_real_escape_string($connection, $_POST['production'])."',
'".mysqli_real_escape_string($connection, $_POST['expire'])."',
NOW()
)";
?>
$query = "INSERT into medicines (med_name,med_create_date,med_expire_date,med_register_date)
VALUES('".mysqli_real_escape_string($connection, $_POST['name'])."',
'".mysqli_real_escape_string($connection, $_POST['production'])."',
'".mysqli_real_escape_string($connection, $_POST['expire'])."',
NOW()
)";
?>
Nooit mee wachten, maar direct en consistent blijven toevoegen bij het schrijven van elke query!! Anders kan je net zo goed overstappen op PDO om geparameteriseerde queries te gebruiken.
Gewijzigd op 01/09/2016 12:07:25 door - Ariën -
Ik heb nu een refresh gezet bij PHP header.
Daarna echo ik wat tekst.
Dit werkt wel, maar de lay-out wordt niet meegenomen zoals.
Volgens mij ben ik genoodzaakt om html meta refresh te gaan gebruiken...
Nee, want wat je nu beschrijft is dat je gewoon de rest van je includes niet doet na de header(). Misschien is het handig om eens op te zoeken hoe HTML en headers etc werken? (HTTP protocol).