Vage foutmelding op de edit pagina

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Mohamed nvt

Mohamed nvt

31/12/2016 16:59:30
Quote Anchor link
Hallo allemaal,

Momenteel heb ik een medicijn form waar een ingelogde gebruiker een medicijn kan invoeren. Vervolgens worden deze gegevens in verschillende tabellen ingevoerd en dit gaat zonder problemen.
En wat ik nu graag wil bereiken is dat een ingelogde gebruiker de mogelijkheid heeft om de ingevoerde medicijnen te kunnen wijzigen.

Wanneer er geklikt wordt op edit, dan worden alle relevante gegevens van betreffende medicijn op basis van id opgehaald en in het formulier geladen. Dit gaat to zover goed.
Echter, wanneer je klikt op de knop wijzigen dan krijg ik op het scherm de foutmelding: "geen medicijn gekozen" en in de logs krijg ik de foutmeldingen:
"user_registration/med_edit.php' on line 28: Undefined index: id"

"user_registration/med_edit.php' on line 38: Undefined variable: result"


De reden waarom de eerste foutmelding,tweede en derde vaag vindt, omdat er reeds alle relevante medicijn info geladen zijn. Tevens, bestaat result variabel ook.
Ik weet niet of het uitmaakt, maar de info op medicines pagina wordt uit verschillende tabellen weergegeven met als medicine tabel als hoofd tabel..

Mijn tweede vraag is; hoe kan ik gegevens uit een eerder gekozen dropdown-menu weergeven op de edit pagina als in de originele dropdown-menu. En, dat gebruiker in kwestie ziet welke waarde hij gekozen heeft en indien nodig hij een andere waarde kan zien uit de lijst...Hiermee ben ik nog bezig, maar ik dacht misschien heeft iemand een idee/tutorial...


Graag ontvang ik jullie feedback hierover.


Code van edit pagina:
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
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
<?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'])){
    $id = $_GET['id'];
    $query = "SELECT medicinename, productiondate, expirationdate, medicineprice FROM medicines WHERE id=$id";
    $result = mysqli_query($dbc,$query);
    while($row = mysqli_fetch_assoc($result)){
            $id= $row['id'];
            $medicinename = $row['medicinename'];
            $productiondate = $row['productiondate'];
            $expirationdate = $row['expirationdate'];
            $medicineprice = $row['medicineprice'];
    }    
}
else {
    echo "No medicines has been chosen";
}


if(!$result){
    die (mysqli_error($dbc));    
}


?>

<?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($connection));                
                
            }
    }


?>

<div>
<h1>Medicines edit page</h1>

<form action="med_edit.php" 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"; ?>
[/Code]
 
PHP hulp

PHP hulp

24/11/2024 12:52:50
 
- Ariën  -
Beheerder

- Ariën -

31/12/2016 17:12:19
Quote Anchor link
De eerste error; je roept het veld 'id' als index aan, maar deze benoemt je niet in de SELECT-query

De tweede error:
Pas je structuur aan naar dit:
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
<?php // kleurtjes in codeblok tonen
$result = mysqli_query($dbc,$query);
if($result===true) {
    while($row = mysqli_fetch_assoc($result)){
            $id= $row['id'];
            $medicinename = $row['medicinename'];
            $productiondate = $row['productiondate'];
            $expirationdate = $row['expirationdate'];
            $medicineprice = $row['medicineprice'];
    }
}
else {
    echo "Er is een fout bij ons opgetreden: ".mysqli_error($dbc);
}

?>
 
- SanThe -

- SanThe -

31/12/2016 17:15:09
Quote Anchor link
$id= $row['id'];
Dit werkt niet omdat je geen 'id' in je SELECT hebt staan.

if(!$result)
Alleen als voorgaande if() true is bestaat $result, anders niet.
 
Mohamed nvt

Mohamed nvt

31/12/2016 19:30:03
Quote Anchor link
Beste - Ariën - & - SanThe -,

Bedankt voor jullie feedback.
Ik heb jullie verbetering aangebracht, en wanneer ik nu klik om een medicijn te bewerken, krijg ik enkel een wit pagina en verder niets...
Initieel dacht ik aan een synatix fout, maar kon niets vinden. Ook wordt er niets gerapporteerd mbt fouten..

De code van edit pagina ziet nu als volgt uit:

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
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
<?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'])){
    $id = $_GET['id'];
    $query = "SELECT id, medicinename, productiondate, expirationdate, medicineprice FROM medicines WHERE id=$id";
    $result = mysqli_query($dbc,$query);
    if($result === true) {
    while($row = mysqli_fetch_assoc($result)){
            $id= $row['id'];
            $medicinename = $row['medicinename'];
            $productiondate = $row['productiondate'];
            $expirationdate = $row['expirationdate'];
            $medicineprice = $row['medicineprice'];
    }
}
else {
    echo "Er is een fout bij ons opgetreden: ".mysqli_error($dbc);
}


?>

<?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="med_edit.php" 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"; ?>
 
- SanThe -

- SanThe -

31/12/2016 22:53:25
Quote Anchor link
Je moet wel goed inspringen dan zie je de { en } beter.
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
<?php
if(isset($_GET['id'])){
    $id = $_GET['id'];
    $query = "SELECT id, medicinename, productiondate, expirationdate, medicineprice FROM medicines WHERE id=$id";
    $result = mysqli_query($dbc,$query);
    if($result === true) {
// Hier inspringen want er staat een {
         while($row = mysqli_fetch_assoc($result)){
              $id= $row['id'];
              $medicinename = $row['medicinename'];
              $productiondate = $row['productiondate'];
              $expirationdate = $row['expirationdate'];
              $medicineprice = $row['medicineprice'];
         }
     }
else {
          echo "Er is een fout bij ons opgetreden: ".mysqli_error($dbc);
     }

// Nu zie je dat hier een } mist.
?>
 
Obelix Idefix

Obelix Idefix

01/01/2017 11:08:20
Quote Anchor link
Waarom de nieuwe variabele $id aanmaken?
Als id een getal is, waar controleer je dat?
Ik neem aan dat er voor elk id 1 resultaat zal zijn; dan heb je toch geen while nodig?

Bedenk ook dat, door het id in de broncode van het formulier aan te passen, e.e.a. vrij eenvoudig is te manipuleren.
 
Mohamed nvt

Mohamed nvt

01/01/2017 14:45:21
Quote Anchor link
- SanThe - op 31/12/2016 22:53:25:
Je moet wel goed inspringen dan zie je de { en } beter.
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
<?php
if(isset($_GET['id'])){
    $id = $_GET['id'];
    $query = "SELECT id, medicinename, productiondate, expirationdate, medicineprice FROM medicines WHERE id=$id";
    $result = mysqli_query($dbc,$query);
    if($result === true) {
// Hier inspringen want er staat een {
         while($row = mysqli_fetch_assoc($result)){
              $id= $row['id'];
              $medicinename = $row['medicinename'];
              $productiondate = $row['productiondate'];
              $expirationdate = $row['expirationdate'];
              $medicineprice = $row['medicineprice'];
         }
     }
else {
          echo "Er is een fout bij ons opgetreden: ".mysqli_error($dbc);
     }

// Nu zie je dat hier een } mist.
?>


Hoi - SanThe -,

Bedankt voor het meedenken. Ik was idd een { vergeten, en na het toevoegen van een { krijg ik nu geen wit pagina meer gelukkig :), maar de gegevens worden niet in het formulier geladen.
Er verschijnt de foutmelding: Er is een fout bij ons opgetreden, zoals eerder aangebracht door Arien.
Echter, de kolomnamen bestaan wel, want zie de kolomnamen van medicine tabel: http://dev.pc-on-rails.nl/user_registration/medicines.png

Blijkbaar gaat er iets fout tijdens het laden van de kolomnamen. Best wel vreemd eigenlijk...
Om het hele gebeuren te kunnen testen, is het url: http://dev.pc-on-rails.nl/user_registration/index.php
user: [email protected]
pass: test1
Gewijzigd op 01/01/2017 14:46:56 door Mohamed nvt
 
- Ariën  -
Beheerder

- Ariën -

01/01/2017 14:51:25
Quote Anchor link
Waar moet ik die melding dan zien?
 
Mohamed nvt

Mohamed nvt

01/01/2017 14:52:35
Quote Anchor link
Obelix en Idefix op 01/01/2017 11:08:20:
Waarom de nieuwe variabele $id aanmaken?
Als id een getal is, waar controleer je dat?
Ik neem aan dat er voor elk id 1 resultaat zal zijn; dan heb je toch geen while nodig?

Bedenk ook dat, door het id in de broncode van het formulier aan te passen, e.e.a. vrij eenvoudig is te manipuleren.

Hallo Obelix en Idefix,
Voor id heb ik een variabel aangemaakt om het straks op te kunnen nemen in de INSERT statement.
Je hebt gelijk, dat ik nergens controleer of de id een getal is...Dit kun idd beter, maar mijn focus ligt nu helemaal op de core-logica.
Daar heb je wel een punt, maar denk je dat een "simpele" internet-gebruiker weet hoe de broncode van een formulier bekijkt en gegevens aanpast? Of dit is meer voor een web-developer...

Toevoeging op 01/01/2017 14:54:09:

- Ariën - op 01/01/2017 14:51:25:
Waar moet ik die melding dan zien?


Lijn 16 in het broncode of op de edit pagina, nadat je ingelogd bent en probeert een medicijn naam aan te passen...
 
- Ariën  -
Beheerder

- Ariën -

01/01/2017 23:17:58
Quote Anchor link
Ik krijg dan: "No medicines has been chosen"
Je geeft blijkbaar je ID-parameter uit de GET niet door in de action van je form.

Ikzelf laat de action gewoon leeg, dan gebruikt de browser altijd de huidige URL voor de verwerking van het formulier.

En verder zit er SQL-injection in de SELECT-query.
Gewijzigd op 01/01/2017 23:19:57 door - Ariën -
 
Mohamed nvt

Mohamed nvt

02/01/2017 11:52:35
Quote Anchor link
Hallo - Ariën -,

Bedankt voor je feedback.
Ik snap je eerste opmerking niet. Wil je uitleggen hoe ik de ID-parameter wil in de action van het form kan zetten?

Ik heb nu de action form leeg gelaten en krijg nu geen foutmelding meer.
Echter, wanneer ik nu iets wil updaten dan wordt er niets bijgewerkt, en ik krijg ook geen foutmelding.
Vreemd dit!

Code ziet als volgt uit met escaping in:
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
<?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'])){
    $id = mysqli_real_escape_string($dbc,$_GET['id']);
    $query = "SELECT * FROM medicines WHERE id= $id ";
    $result = mysqli_query($dbc,$query);
     while($row = mysqli_fetch_assoc($result)){
            $id= mysqli_real_escape_string($dbc,$row['id']);
            $medicinename = mysqli_real_escape_string($dbc,$row['medicinename']);
            $productiondate = mysqli_real_escape_string($dbc,$row['productiondate']);
            $expirationdate = mysqli_real_escape_string($dbc,$row['expirationdate']);
            $medicineprice = mysqli_real_escape_string($dbc,$row['medicineprice']);
    }    
}
else {
    echo "No medicines has been chosen";
}


if(!$result){
    die (mysqli_error($dbc));    
}

?>

<?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">

?>

 
- Ariën  -
Beheerder

- Ariën -

02/01/2017 12:00:00
Quote Anchor link
Omdat je $result blijkbaar geen waarde heeft.
Zie je code uit mijn post van 31/12/2016 17:12:19.
 
Mohamed nvt

Mohamed nvt

02/01/2017 12:15:02
Quote Anchor link
- Ariën - op 02/01/2017 12:00:00:
Omdat je $result blijkbaar geen waarde heeft.
Zie je code uit mijn post van 31/12/2016 17:12:19.


Hallo - Ariën -,

Jouw code heb ik weer terug geplaatst in mijn code, en helaas worden er gegevens geladen in het formulier wanneer ik een item wil bijwerken...En zonder jouw stukje code worden er wel gegevens in het form geladen...
Is het nodig dat ik de code van het insert_med pagina hier ook laat zien?
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
<?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'])){
    $id = mysqli_real_escape_string($dbc,$_GET['id']);
    $query = "SELECT * FROM medicines WHERE id= $id ";
    $result = mysqli_query($dbc,$query);
    if($result===true) {
        while($row = mysqli_fetch_assoc($result)){
            $id= mysqli_real_escape_string($dbc,$row['id']);
            $medicinename = mysqli_real_escape_string($dbc,$row['medicinename']);
            $productiondate = mysqli_real_escape_string($dbc,$row['productiondate']);
            $expirationdate = mysqli_real_escape_string($dbc,$row['expirationdate']);
            $medicineprice = mysqli_real_escape_string($dbc,$row['medicineprice']);
    }
            }
else {
                echo "Er is een fout bij ons opgetreden: ".mysqli_error($dbc);
            }
}

?>

[/Code]
 
Ward van der Put
Moderator

Ward van der Put

02/01/2017 12:39:38
Quote Anchor link
Alles staat of valt met de ID van het medicijn in $_GET['id'].
Waar zet je die ID in de URL en/of het formulier?
Gewijzigd op 02/01/2017 12:40:05 door Ward van der Put
 
Mohamed nvt

Mohamed nvt

02/01/2017 12:46:15
Quote Anchor link
Hallo Ward van der Put,

De ID heb ik in opgenomen in het url van medicines.php.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<td align="left"><a href="med_edit.php?id=' . $row['id'] .'">Edit</a></td>


Huidige code van med_edit.php
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
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'])){
    $id = mysqli_real_escape_string($dbc,$_GET['id']);
    $query = "SELECT * FROM medicines WHERE id= $id ";
    $result = mysqli_query($dbc,$query);
    if($result===true) {
        while($row = mysqli_fetch_assoc($result)){
            $id= mysqli_real_escape_string($dbc,$row['id']);
            $medicinename = mysqli_real_escape_string($dbc,$row['medicinename']);
            $productiondate = mysqli_real_escape_string($dbc,$row['productiondate']);
            $expirationdate = mysqli_real_escape_string($dbc,$row['expirationdate']);
            $medicineprice = mysqli_real_escape_string($dbc,$row['medicineprice']);
    }
            }
else {
                echo "Er is een fout bij ons opgetreden: ".mysqli_error($dbc);
            }
}

?>

<?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"; ?>
 
- Ariën  -
Beheerder

- Ariën -

02/01/2017 12:47:33
Quote Anchor link
Welke editor gebruik je, want je manier van inspringen verschilt behoorlijk.
Ik heb het even aangepast.


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
<?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'])){
    $id = mysqli_real_escape_string($dbc,$_GET['id']);
    $query = "SELECT * FROM medicines WHERE id= $id ";
    $result = mysqli_query($dbc,$query);
    if($result===true) {
        while($row = mysqli_fetch_assoc($result)){
            $id= mysqli_real_escape_string($dbc,$row['id']);
            $medicinename = mysqli_real_escape_string($dbc,$row['medicinename']);
            $productiondate = mysqli_real_escape_string($dbc,$row['productiondate']);
            $expirationdate = mysqli_real_escape_string($dbc,$row['expirationdate']);
            $medicineprice = mysqli_real_escape_string($dbc,$row['medicineprice']);
        }
    }
else {
                echo "Er is een fout bij ons opgetreden: ".mysqli_error($dbc);
            }
}
else {
    echo "Er is geen medicijn-ID gekozen!";
}

?>

Alleen heb ik nog wat vraagtekens bij je code....
Verder vraag ik me af waarom je een while() loop gebruikt, terwijl je maar één record terug hoort te krijgen. En verder is mysqli_real_escape_string() alleen bedoeld voor data die je in een query stopt. Niet om data daarna nog eens te escapen, want je wilt je uitvoer namelijk niet verminken.
Gewijzigd op 02/01/2017 12:49:14 door - Ariën -
 
Mohamed nvt

Mohamed nvt

02/01/2017 13:13:56
Quote Anchor link
Hallo - Ariën -,

Ik gebruik Notepad++.

De reden waarom ik een loop gebruik, is om straks de variabelen te kunnen gebruiken in de INSERT statement. Eigenlijk, zo heb ik het geleerd tijdens verschillende php-trainingen.
En, indien deze loop niet nodig is, dan hoor ik dat graag en ook wat een betere manier om het aan te pakken.
Verder, begrijp ik niet begrijp is dat het formulier wel wordt geladen met gegevens en niet wanneer ik achter een controle op uitvoer...
Zou iemand mij verder kunnen helpen of in de juiste richting sturen?

Alvast bedankt.

Update 1:

Code van medicines.php om het gehele plaatje duidelijk te hebben:
FYI; niet alle code van medicines.php is actief, vandaar veel gemarkeerd als commentaar...

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<?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']}";
}


require ('includes/db-connection.php'); // Connect to the db.

// Number of records to show per page:
/* $display =5; */

// Determine how many pages there are...
/*
if (isset($_GET['p']) && is_numeric($_GET['p'])) { // Already been determined.

    $pages = $_GET['p'];

} else { // Need to determine.

    // Count the number of records:
    $q = "SELECT COUNT(user_id) FROM users";
    $r = @mysqli_query ($dbc, $q);
    $row = @mysqli_fetch_array ($r, MYSQLI_NUM);
    $records = $row[0];

    // Calculate the number of pages...
    if ($records > $display) { // More than 1 page.
        $pages = ceil ($records/$display);
    } else {
        $pages = 1;
    }
    
} // End of p IF.
*/
// Determine where in the database to start returning results...
/*
if (isset($_GET['s']) && is_numeric($_GET['s'])) {
    $start = $_GET['s'];
} else {
    $start = 0;
}
$sort = (isset($_GET['sort'])) ? $_GET['sort'] : 'rd';
//Determine the sorting order:
switch ($sort) {
case 'fn':
    $order_by = 'firstname ASC';
    break;
case 'ln':
    $order_by = 'lastname ASC';
    break;
case 'em':
    $order_by = 'email ASC';
    break;
case 'pn':
    $order_by = 'pharmacyname ASC';
    break;
case 'tl':
    $order_by = 'telephone ASC';
    break;
case 'rd':
    $order_by = 'registrationdate ASC';
    break;
default:
    $order_by = 'registrationdate ASC';
    $sort = 'rd';
    break;
}
*/
// Make the query:

$q = "SELECT medicines.id,medicines.medicinename,medicines.productiondate,medicines.expirationdate,medicinestype.medicinetypename,suppliers.suppliername
FROM medicines
LEFT JOIN users ON users.user_id = medicines.userid
LEFT JOIN medicines_suppliers ON medicines_suppliers.medicine_id=medicines.id
LEFT JOIN suppliers ON medicines_suppliers.supplier_id=suppliers.id
LEFT JOIN medicines_medicinestype ON medicines_medicinestype.medicine_id=medicines.id
LEFT JOIN medicinestype ON medicines_medicinestype.medicinetype_id=medicinestype.id
where users.user_id= '{$_SESSION['user_id']}'"
;

$r = @mysqli_query ($dbc, $q); // Run the query.

//Count the number of returned row:

$num = mysqli_num_rows($r);

if ($num > 0) { // If it ran OK, display the records.

        //Print how many users there are:

        echo "<p>There are currently $num registered medicines</p>\n";

    // Table header.
    echo '<table align="center" cellspacing="3" cellpadding="3" width="75%">
                <tr>
                <td align="left"><b><a href="medicines.php?sort=fn">medicinename</a></b></td>
                <td align="left"><b><a href="medicines.php?sort=ln">productiondate</a></b></td>
                <td align="left"><b><a href="medicines.php?sort=em">expirationdate</a></b></td>
                <td align="left"><b><a href="medicines.php?sort=pn">medicinetypename</a></b></td>
                <td align="left"><b><a href="medicines.php?sort=tl">suppliername</a></b></td>
                <td align="left"><b>Edit</b></td>
                <td align="left"><b>Delete</b></td>
                </tr>'
;
    
    // Fetch and print all the records:
    while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
        echo '<tr>
        <td align="left">'
. $row['medicinename'] .'</td>
        <td align="left">'
. $row['productiondate'] .'</td>
        <td align="left">'
. $row['expirationdate'] .'</td>
        <td align="left">'
. $row['medicinetypename'] .'</td>
        <td align="left">'
. $row['suppliername'] .'</td>
        <td align="left"><a href="med_edit.php?id='
. $row['id'] .'">Edit</a></td>
        <td align="left"><a href="med_delete.php?id='
. $row['id'] .'">Delete</a></td>
        </tr>'
;
    }


    echo '</table>'; // Close the table.
    
    mysqli_free_result ($r); // Free up the resources.    

} else { // If  no records were returnd.
    echo '<p class="error">There are currently no registered medicines</p>';
    
}
// End of if ($r) IF.

mysqli_close($dbc); // Close the database connection.


// Make the links to other pages, if necessary.
/*
if ($pages > 1) {
    
    // Add some spacing and start a paragraph:
    echo '<br /><p>';
    
    // Determine what page the script is on:    
    $current_page = ($start/$display) + 1;
    
    // If it's not the first page, make a Previous link:
    if ($current_page != 1) {
        echo '<a href="medicines.
        php?s=' . ($start - $display) .
        '&p=' . $pages . '&sort=' .
        $sort. '">Previous</a> ';
    }
    
    // Make all the numbered pages:
    for ($i = 1; $i <= $pages; $i++) {
        if ($i != $current_page) {
            echo '<a href="medicines.
            php?s=' . (($display * ($i -
            1))) . '&p=' . $pages .
            '&sort=' . $sort.'">' . $i . '</a> ';
        } else {
            echo $i . ' ';
        }
    } // End of FOR loop.
    
    // If it's not the last page, make a Next button:
    if ($current_page != $pages) {
        echo '<a href="medicines.
        php?s=' . ($start + $display) .
        '&p=' . $pages .
        '&sort=' . $sort.'">Next</a>';
    }
    
    echo '</p>'; // Close the paragraph.
    
} // End of links section.
*/

include ('includes/footer.php');
?>
  
Gewijzigd op 02/01/2017 13:35:21 door Mohamed nvt
 
- Ariën  -
Beheerder

- Ariën -

02/01/2017 13:37:05
Quote Anchor link
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
<?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)){
        // toon hier je formulier of de inhoud van wat je wilt tonen met de data uit je query.
        // echo $row['medicinename']; // kan je bijv. gebruiken.

    } else {
        echo "Er is een fout bij ons opgetreden: ".mysqli_error($dbc);
    }
}
else {
    echo "Er is geen medicijn-ID gekozen!";
}

?>

Ik heb...
- De while-loop eruit gehaald
- Alleen de nodige veldnamen in de SELECT-query benoemd
- De locatie aangegeven waar je formulier moet komen.
- mysqli_real_escape_string direct in je query gezet, zodat het overzichtelijker is.
Gewijzigd op 02/01/2017 13:39:53 door - Ariën -
 
Mohamed nvt

Mohamed nvt

02/01/2017 13:53:44
Quote Anchor link
Hallo - Ariën -,

Bedankt voor je feedback.
Je geeft aan op regel 10 dat ik daar het formulier moet laten zien, inclusief de variabelen in form-vakjes..
Dit betekent dus dat de afhandeling van het formulier onderaan komt, toch?
 
- Ariën  -
Beheerder

- Ariën -

02/01/2017 13:58:06
Quote Anchor link
Ja, dat kan je doen. Maar die kan je ook op die ge-commentariseerde plek (regel 10/11) afhandelen op deze manier:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
    // hier je afhandeling
} else {
    // hier je formulier.
}
?>
Gewijzigd op 02/01/2017 14:04:59 door - Ariën -
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/01/2017 14:08:50
Quote Anchor link
Ik zou de "view" echt onderaan houden.

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
<?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'])."'";
    $medicinesResult = mysqli_query($dbc,$query);
    if($medicinesResult === FALSE) {
        echo "Er is een fout bij ons opgetreden: ".mysqli_error($dbc);
        exit;
    }
}
else {
    echo "Er is geen medicijn-ID gekozen!";
    exit;
}

?>

<html>
<body>
blablabla ...
<?php
    if(medicinesResult) {
            // toon hier je formulier of de inhoud van wat je wilt tonen met de data uit je query.
    }
?>

nog meer blabla ...
</body>
</html>


Of zo afhankelijk van de situatie:
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
<?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'])."'";
    $medicinesResult = mysqli_query($dbc,$query);
}
else {
    echo "Er is geen medicijn-ID gekozen!";
    exit;
}

?>

<html>
<body>
blablabla ...
<?php
    if(medicinesResult) {
            // toon hier je formulier of de inhoud van wat je wilt tonen met de data uit je query.
    } else {
        echo 'Geen medicijnen gevonden.';
    }

?>

nog meer blabla ...
</body>
</html>
Gewijzigd op 02/01/2017 14:11:22 door Frank Nietbelangrijk
 

Pagina: 1 2 volgende »



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.