PHP Update query werkt helaas niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3

- Ariën  -
Beheerder

- Ariën -

31/08/2016 22:48:30
Quote Anchor link
Waarom een echo op elke regel in je formulier als het alleen om HTML gaat?
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 -
 
PHP hulp

PHP hulp

28/03/2024 16:28:23
 
Mohamed nvt

Mohamed nvt

01/09/2016 09:07:04
Quote Anchor link
Hallo 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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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"; ?>
 
Obelix Idefix

Obelix Idefix

01/09/2016 09:52:31
Quote Anchor link
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)

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
 
Mohamed nvt

Mohamed nvt

01/09/2016 10:11:21
Quote Anchor link
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)

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.

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
 
Obelix Idefix

Obelix Idefix

01/09/2016 10:35:45
Quote Anchor link
Mohamed nvt op 01/09/2016 10:11:21:
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)

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.

Mohamed nvt op 01/09/2016 10:11:21:
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
 
- Ariën  -
Beheerder

- Ariën -

01/09/2016 12:01:39
Quote Anchor link
Je kan ook een refresh-header gebruiken met een delay:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
header("Refresh:5; url=http://www.example.com/medicines.php");
?>

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)
PHP script in nieuw venster Selecteer het PHP script
1
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()
        )"
;
?>


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 -
 
Mohamed nvt

Mohamed nvt

02/09/2016 20:44:38
Quote Anchor link
Hoi - 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...
 
Ben van Velzen

Ben van Velzen

02/09/2016 22:20:39
Quote Anchor link
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).
 

Pagina: « vorige 1 2 3



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.