Input fields zijn leeg na drop down list

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Mohamed nvt

Mohamed nvt

13/09/2017 22:25:29
Quote Anchor link
Hallo allemaal,


Momenteel heb ik een edit formulier, die op een paar punten na verder prima werkt.
Het formulier heeft een paar input fields waarmee ik gegevens inzet, nadat ze uit DB zijn gehaald een paar drop down lists.
En ik merk dat alle input fields voor de drop down list gevuld worden met gegevens en alle input fields na de drop down list leeg zijn/blijven.

Iemand een idee voor dit vreemd gedrag?

De volgende code gebruik ik voor mijn edit formulier
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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
<?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.
                
        }
    
// Need the database connection:
require(MYSQL);
if ($_SERVER['REQUEST_METHOD'] == 'POST') { // Handle the form.
    
    //creating veriables for medicinescompany, medicinescountry, medicinetype_id and supplier_id

    $medicinescompany_id = $_POST['companyname'];
    $medicinescountry_id = $_POST['medicinescountry'];
    $medicinetype_id = $_POST['medicinetypename'] ;
    $supplier_id = $_POST['suppliername'];
    
    // Trim all the incoming data:
    $trimmed = array_map('trim', $_POST);
    // Validate and secure the form data:
    $errors = array();
    
    // Check for a medicine name:
    if (!empty($trimmed['medicinename'])) {
        $medicinename = mysqli_real_escape_string ($dbc, $trimmed['medicinename']);
        }
else {
            $errors['medicinename'] = "<p class='error'>Medicine name can't be empty</p>";
        }

    
    // Check for a generic name:
    if (!empty($trimmed['genericname'])) {
        $genericname = mysqli_real_escape_string ($dbc, $trimmed['genericname']);
        }
else {
            $errors['genericname'] = "<p class='error'>Generic name can't be empty</p>";
        }

    //check for a medicine type name
    if(isset($trimmed['medicinetypename']) && $trimmed['medicinetypename'] > 0){
        $medicinetypename = $trimmed['medicinetypename'];
        }
else {
            $errors['medicinetypename'] = "<p class='error'>Please select a medicine type name from the list</p>";
        }

    // Check for a expiration date name:
    if (!empty($trimmed['expiredate'])) {
        $expiredate = mysqli_real_escape_string ($dbc, $trimmed['expiredate']);
        }
else {
            $errors['expiredate'] = "<p class='error'>Please select a date from the calendar</p>";
        }

    // Check for quantity:
    if (!empty($trimmed['quantity'])) {
        $quantity = mysqli_real_escape_string ($dbc, $trimmed['quantity']);
        }
else {
            $errors['quantity'] = "<p class='error'>Quantity can't be empty</p>";
        }

    $sellingprice = mysqli_real_escape_string ($dbc, $trimmed['sellingprice']);
    
    $purchaseprice = mysqli_real_escape_string ($dbc, $trimmed['purchaseprice']);
    //check for medicine companyname
    if (!empty($trimmed['companyname'])) {
        $medicinecompany = mysqli_real_escape_string ($dbc, $trimmed['companyname']);
        }
else {
            $errors['companyname'] = "<p class='error'>Please select a company name from the list</p>";
        }

    //check for medicine countryname
    if (!empty($trimmed['medicinescountry'])) {
        $country = mysqli_real_escape_string ($dbc, $trimmed['medicinescountry']);
        }
else {
            $errors['medicinescountry'] = "<p class='error'>Please select a medicine country from the list</p>";
        }
        
    // Check for a suppliername:
    if(!empty($trimmed['suppliername'])){
        $suppliername = $trimmed['suppliername'];
        }
else {
            $errors['suppliername'] = "<p class='error'>Please select a supplier name from the list</p>";
        }

    

    if (count($errors) == 0) {

        // Define the query.
        $query = "UPDATE medicines SET medicinename='$medicinename', genericname='$genericname', expiredate='$expiredate', quantity='$quantity', sellingprice='$sellingprice',  purchaseprice='$purchaseprice' WHERE id={$_POST['id']}";
        $r = mysqli_query($dbc, $query); // Execute the query.

        // Report on the result:

        if (mysqli_affected_rows($dbc) == 1) {
            header ('Refresh:5; url=medicines.php');
            echo '<p class="addmedtext">This medicine has been updated.</br>
            Within 5 seconds you will redirected to Medicines page...
            </p>'
;
            include ('includes/footer.php'); // Include the HTML footer.
            exit(); // Stop the page.
        } else {
            echo '<p style="color: red;">Could not update this medicine</p>';
        }

    }
else { // If one of the data tests failed.
        echo '<p class="error">Please try again.</p>';
    }
// No problem!

}

// 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'])) {
                
                // Define the query.
                $query = "SELECT id, medicinename, genericname, expiredate, quantity, sellingprice, purchaseprice FROM medicines WHERE id='" . mysqli_real_escape_string($dbc, $_GET['id']) . "'";
                
                if ($result = mysqli_query($dbc, $query)) { // Run the query.
                    
                    $row = mysqli_fetch_array($result);// Retrieve the information.
                    ?>

                    <form action="med_edit.php?id=<?php echo $_GET['id']; ?>" method="post">
                        <h2>Medicine Edit Form</h2>
                        <table>
                            
                                <input type="hidden" name="id" value="<?php echo htmlentities($row['id']);?>">
                            
                            <tr>
                                <td><label for="medicinename"><b>Medicine Name:</b></label></td>
                                <td><input type="text" name="medicinename" id="medicinename" value="<?php echo htmlentities($row['medicinename']); ?>" /></td>
                                <td><?php if(isset($errors['medicinename'])) echo $errors['medicinename']; ?></td>
                            </tr>
                            <tr>
                                <td><label for="genericname"><b>Generic Name:</b></label></td>
                                <td><input type="text" name="genericname" id="genericname" value="<?php echo htmlentities($row['genericname']); ?>" /></td>
                                <td><?php if(isset($errors['genericname'])) echo $errors['genericname']; ?></td>
                            </tr>
                            <tr>
                                <td><label for="medicinetypename"><b>Select medicine type:</b></label></td>
                                <td><select name="medicinetypename">
                                <option value="">---Select---</option>
                                <?php
                                require_once (MYSQL);
                                $query = "SELECT * from medicinestype";
                                $result = mysqli_query($dbc,$query);
                                if(!$result){
                                    die ("query failed" . mysqli_error($dbc));    
                                }

                                while ($row = mysqli_fetch_assoc($result)){
                                        $medicinetype_id = $row['id'];
                                        $medicinetypename = $row['medicinetypename'];
                                    echo "<option value='$medicinetype_id'>{$medicinetypename}</option>";
                                }

                                ?>

                                </select></td>
                                <td><?php if(isset($errors['medicinetypename'])) echo $errors['medicinetypename']; ?></td>
                            </tr>
                            <tr>
                                <td><label for="expiredate"><b>ExpireDate:</b></label></td>
                                <td><input type="date" name="expiredate" id="expiredate" value="<?php echo htmlentities($row['expiredate']); ?>" /></td>
                                <td><?php if(isset($errors['expiredate'])) echo $errors['expiredate']; ?></td>
                            </tr>
                            <tr>
                                <td><label for="companyname"><b>This medicine belgons to company:</b></label></td>
                                <td>
                                    <?php
                                    require_once (MYSQL);
                                    $query = "SELECT * from medicinescompany where userid= '{$_SESSION['user_id']}'";
                                    $result = mysqli_query($dbc,$query);
                                    if(!$result){
                                        die ("query failed" . mysqli_error($dbc));    
                                    }

                                    if(mysqli_num_rows($result) == 0){
                                        echo "Before adding any medicine to the database, please add a <a href='medcom_insert.php'>Medicine Company</a>";
                                        }
else {?>

                                        <select name="companyname">
                                        <option value="">---Select---</option>
                                        <?php while ($row = mysqli_fetch_assoc($result)){
                                            $medicinescompany_id = $row['id'];
                                            $companyname = $row['companyname'];
                                        echo "<option value='$medicinescompany_id'>{$companyname}</option>";
                                        }
                                    }

                                    ?>

                                </select></td>
                                <td><?php if(isset($errors['companyname'])) echo $errors['companyname']; ?></td>
                            </tr>
                            <tr>
                                <td><label for="medicinescountry"><b>This medicine is made in country:</b></label></td>
                                <td>
                                <?php
                                $query2
= "SELECT * from medicinescountry where userid= '{$_SESSION['user_id']}'";
                                $result2 = mysqli_query($dbc,$query2);
                                if(!$result2){
                                    die ("query failed" . mysqli_error($dbc));    
                                }

                                if (mysqli_num_rows($result2) == 0){
                                    echo "Before adding any medicine to the database, please add a <a href='medcountry_insert.php'>Medicine Country</a>";    
                                    }
else { ?>

                                        <select name="medicinescountry">
                                        <option value="">---Select---</option>
                                        <?php while ($row = mysqli_fetch_assoc($result2)){
                                        $medicinescountry_id = $row['id'];
                                        $countryname = $row['countryname'];
                                            echo "<option value='$medicinescountry_id'>{$countryname}</option>";     
                                     }
                                }

                                ?>

                                </select>
                                </td>
                                <td><?php if(isset($errors['medicinescountry'])) echo $errors['medicinescountry']; ?></td>
                            </tr>
                            <tr>
                                <td><label for="quantity"><b>Quantity:</b></label></td>
                                <td><input type="text" name="quantity" id="quantity" value="<?php echo htmlentities($row['quantity']); ?>" /></td>
                                <td><?php if(isset($errors['quantity'])) echo $errors['quantity']; ?></td>
                            </tr>
                            <tr>
                                <td><label for="sellingprice"><b>SellingPrice:</b></label></td>
                                <td><input type="text" name="sellingprice" id="sellingprice" value="<?php echo htmlentities($row['sellingprice']); ?>" /></td>
                                <td></td>
                            </tr>
                            <tr>
                                <td><label for="purchaseprice"><b>PurchasePrice:</b></label></td>
                                <td><input type="text" name="purchaseprice" id="purchaseprice" value="<?php echo htmlentities($row['purchaseprice']); ?>" /></td>
                                <td></td>
                            </tr>
                            <tr>
                                <td><label for="suppliername"><b>This medicine is brought to you by supplier:</b></label></td>
                                <td>
                                <?php
                                $querysupplier
= "SELECT * from suppliers where userid= '{$_SESSION['user_id']}'";
                                $resultsupplier = mysqli_query($dbc,$querysupplier);
                                if(!$resultsupplier){
                                    die ("query failed" . mysqli_error($dbc));    
                                }

                                if (mysqli_num_rows($resultsupplier) == 0){
                                    echo "Before adding any medicine to the database, please add a <a href='medsuppliers_insert.php'>Medicine Supplier</a> first!";    
                                    }
else { ?>

                                        <select name="suppliername">
                                        <option value="">---Select---</option>
                                        <?php while ($row = mysqli_fetch_assoc($resultsupplier)){
                                        $supplier_id = $row['id'];
                                        $suppliername = $row['suppliername'];
                                    echo "<option value='$supplier_id'>{$suppliername}</option>";
                                    }
                                }

                                ?>

                                </select></td>
                                <td><?php if(isset($errors['suppliername'])) echo $errors['suppliername']; ?></td>
                            </tr>
                            <tr>
                                <td></td>
                                
                                <td colspan="2"><input type="submit" name="submit" value="Update Medicine" class="btn"></td>
                            </tr>
                        </table>
                    </form>
            <?php        
                } else { // Couldn't get the information.
                    echo '<p style="color: red;">Could not retrieve the medicine ID</p>';
        }
}
// End of main IF.

mysqli_close($dbc); // Close the connection.
?>

<?php
include "includes/footer.php";
?>
 
PHP hulp

PHP hulp

26/01/2021 23:34:35
 
- Ariën -
Beheerder

- Ariën -

13/09/2017 22:41:23
Quote Anchor link
Lijn 217 om mee te beginnen:
$row['sellingprice'] bestaat blijkbaar niet. Je gebruikt daarboven een while-loop. Waarom, verwacht je meer dan één record?

En waarom laad je steeds de connectie opnieuw in? Denk je dat PHP die opeens vergeet?

Verder is variabelen kopiëren best onnodig:
$medicinescompany_id = $row['id'];
Gewijzigd op 13/09/2017 22:43:43 door - Ariën -
 
- SanThe -

- SanThe -

14/09/2017 00:38:40
Quote Anchor link
De </select> hoort ook tussen de if() else te staan en wel direct na de while().
 
Mohamed nvt

Mohamed nvt

14/09/2017 14:31:44
Quote Anchor link
Hallo - Ariën -,

Hoe heb je dat bepaalt dat $row['sellingprice'] niet bestaat? De naam is overal hetzelfde. En bij het invoeren van gegevens in DB of wijzigen gaat anders prima..;-)
Ik gebruik idd een loop bij alle select, want ik verwacht idd meerdere resultaten. Eigenlijk een lange lijst.

Ik weet de exacte reden(en) niet meer, maar volgens was de connectie steeds weg, maar dat is nu opgelost.

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

Hoi - SanThe -,

Ik heb geprobeerd je feedback in mijn code te verwerken, maar de items van de drop down lijst verschijnen NIET in de lijst, maar eronder.
Heb je het zo bedoel met code na wijzigen?

Zie plaatje: http://hawarco.co/img/print_screen1.png
Code voor wijzigen
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
                                $query2
= "SELECT * from medicinescountry where userid= '{$_SESSION['user_id']}'";
                                $result2 = mysqli_query($dbc,$query2);
                                if(!$result2){
                                    die ("query failed" . mysqli_error($dbc));    
                                }

                                if (mysqli_num_rows($result2) == 0){
                                    echo "Before adding any medicine to the database, please add a <a href='medcountry_insert.php'>Medicine Country</a>";    
                                    }
else { ?>

                                        <select name="medicinescountry">
                                        <option value="">---Select---</option>
                                        <?php while ($row = mysqli_fetch_assoc($result2)){
                                        $medicinescountry_id = $row['id'];
                                        $countryname = $row['countryname'];
                                            echo "<option value='$medicinescountry_id'>{$countryname}</option>";     
                                     }
                                }

                                ?>

                                </select>


Code na wijzigen
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
<?php
                                $query2
= "SELECT * from medicinescountry where userid= '{$_SESSION['user_id']}'";
                                $result2 = mysqli_query($dbc,$query2);
                                if(!$result2){
                                    die ("query failed" . mysqli_error($dbc));    
                                }

                                if (mysqli_num_rows($result2) == 0){
                                    echo "Before adding any medicine to the database, please add a <a href='medcountry_insert.php'>Medicine Country</a>";    
                                    }
else {
                                        echo '<select name="medicinescountry">';
                                        echo '<option value="">---Select---</option>';
                                        while ($row = mysqli_fetch_assoc($result2)){
                                        echo '</select>';
                                        $medicinescountry_id = $row['id'];
                                        $countryname = $row['countryname'];
                                            echo "<option value='$medicinescountry_id'>{$countryname}</option>";     
                                     }
                                }

                                
                                ?>
 
- SanThe -

- SanThe -

14/09/2017 15:38:01
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
19
20
<?php
                                $query2
= "SELECT * from medicinescountry where userid= '{$_SESSION['user_id']}'";
                                $result2 = mysqli_query($dbc,$query2);
                                if(!$result2){
                                    die ("query failed" . mysqli_error($dbc));    
                                }

                                if (mysqli_num_rows($result2) == 0){
                                    echo "Before adding any medicine to the database, please add a <a href='medcountry_insert.php'>Medicine Country</a>";    
                                    }
else {
                                        echo '<select name="medicinescountry">';
                                        echo '<option value="">---Select---</option>';
                                        while ($row = mysqli_fetch_assoc($result2)){
                                        $medicinescountry_id = $row['id'];
                                        $countryname = $row['countryname'];
                                            echo "<option value='$medicinescountry_id'>{$countryname}</option>";    
                                        }

                                        echo '</select>';
                                }

                                
                                ?>
 
Mohamed nvt

Mohamed nvt

14/09/2017 16:23:09
Quote Anchor link
Hoi - SanThe -,

Ik heb je code verwerkt in mijn eigen code, maar het resultaat is eigenlijk nog steeds hetzelfde. Ik krijg een drop down lijst met opties, die ik kan selecteren.
Is je code een soort van optimalisatie voor mijn code?

Ik denk dat het probleem zit dat ik een nieuw drop down lijst aanbied, maar eigenlijk moet ik een drop down lijst aanbieden met de optie die eerder gekozen is. Alleen dit schijnt een probleem te zijn waar ik op het net geen oplossing voor kan vinden.
Gewijzigd op 14/09/2017 16:24:01 door Mohamed nvt
 
- Ariën -
Beheerder

- Ariën -

14/09/2017 16:30:19
Quote Anchor link
Je bedoelt dus dat je een 2e dropdown hebt die qua opties weer aansluit op de gekozen optie van de eerste?
In dat geval raad ik aan om naar een chained selectbox via AJAX te kijken. Je wilt de tweede dropdown dan dynamisch maken.
 
Mohamed nvt

Mohamed nvt

14/09/2017 20:02:45
Quote Anchor link
Hallo - Ariën -,

Nee, dat is niet wat ik wil, want ik wil iets veel simpeler.
Momenteel bied ik op de invoer/insert pagina een drop down lijst met een aantal items waaruit gekozen kan worden.
En op de bewerk/edit pagina wil ik dat de gebruiker ziet welke item gekozen is + de andere items, zodat nieuwe item gekozen kan worden, indien nodig is.
Maar ik weet niet of dit mogelijk is.

De structuur op DB ziet als volg uit:
tabel medicinetype
koppel tabel medicinetype_medicines
En elke keer wanneer ik een nieuw medicijn invoer, dan wordt een medicinetype gekozen uit de drop down lijst. Vervolgens sla ik het ID van de nieuw medicijn + het ID van de medicinetype op in de koppel tabel medicinetype_medicines.

En ik zit nu te denken dat ik het volgende moet doen voor mijn probleem:
1. achterhalen welke medicijn gekoppeld is aan medicinetype en het weergeven in de drop down lijst
2. alle medicinetype weergeven in de drop down lijst

Hopelijk is nu alles duidelijk met wat ik bedoel
 
Frank Nietbelangrijk

Frank Nietbelangrijk

15/09/2017 20:39:52
Quote Anchor link
kijk eens naar mijn voorbeeld. (had al gezegd dat je je eens in functies zou moeten verdiepen). Je hoeft enkel maar op te geven uit welke tabel de gegevens voor de select moeten komen, welke kolom de ID's heeft en welke kolom de "waardes" heeft.

Het voorbeeld gebruikt een tabel met de naam "kleuren". Als je dit voorbeeld gaat testen en je drukt op de knop verzenden dan wordt het formulier opnieuw getoond maar wel met de gekozen waarde geselecteerd. Dat kun je dus ook op een edit-pagina gebruiken ;-) Op regel 68 kun je desgewenst je tabel en kolomnamen wijzigen naar jouw eigen namen.

kleuren
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
id | kleur
==========
1  | Groen
2  | Blauw
3  | Geel
4  | Rood


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
<?php
/*
 * MAAK VERBINDING MET DE DATABASE
 */

$conn = mysqli_connect("127.0.0.1", "user", "password", "database");

if (!$conn) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}


/*
 * functie die de de options bouwt voor een select met data uit een tabel en indien gevraagd de geselecteerde optie ook selected weergeeft.
 *
 *  $conn:      database connection
 *  $table:     de naam van de tabel waar de opties in staan
 *  $primarykey de kolomnaam van het ID of primary key
 *  $value:     de kolomnaam die de teksten bevat die in de select weergegeven moeten worden
 *  $selected:  Het ID van de geselecteerde optie
 */

function buildOptions($conn, $table, $primarykey, $value, $selected = false)
{

    $html = '';
    
    $query = "SELECT $primarykey, $value FROM $table";
    
    $result = mysqli_query($conn, $query);
    
    if(false === $result) {
        echo "Error in query: " . $query . " Error: " . mysqli_error($conn);
        exit;
    }

    
    while($row = mysqli_fetch_assoc($result))
    {

        $attr = '';
        
        if($selected == $row[$primarykey])
            $attr = ' selected';
        
        $html .= '<option value="'.$row[$primarykey].'"'.$attr.'>'.$row[$value].'</option>';
    }

    
    return $html;
}


/*
 *  INITIALISATIE
 */

$kleur = false;

/*
 * INDIEN HET FORMULIER VERSTUURD IS
 */

if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    // overschrijf de standaardwaarden voor de waarden die ge-POST zijn
    $kleur = $_POST['kleur'];
    
    echo 'Geselecteerde kleur: ' . $kleur;
}


/*
 * OPTIES VOOR DE SELECT VOORBEREIDEN
 */

$options = buildOptions($conn, 'kleuren', 'id', 'kleur', $kleur);

/*
 * OUTPUT
 */

?>

<!doctype html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>een titel</title>
    </head>
    <body>
        <form action="" method="post">
            <select name="kleur">
                <?php echo $options; ?>
            </select>
            <button type="submit">Verzenden</button>
        </form>
    </body>
</html>
Gewijzigd op 15/09/2017 20:53:21 door Frank Nietbelangrijk
 
Mohamed nvt

Mohamed nvt

17/09/2017 20:34:56
Quote Anchor link
Hallo Frank Nietbelangrijk,

Sorry voor mijn late reactie, want het weekend zat er tussen ;-)
Jouw bovenstaand voorbeeld heb ik even getest, maar helaas werkt het niet bij mij. Er worden geen opties aangeboden. Ook zie ik dat je vanuit gaat van een tabel, terwijl ik in de database een tabel heb + nog een koppel_tabel.

Misschien heb ik de opties verkeerd aangepast.
Wil je even naar kijken? ik weet niet waar ik de koppel_tabel moet plaatsen.

De code ziet als volgt eruit:
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
/*
 * MAAK VERBINDING MET DE DATABASE
 */

include ("include/db-connection.php");

/*
 * functie die de de options bouwt voor een select met data uit een tabel en indien gevraagd de geselecteerde optie ook selected weergeeft.
 *
 *  $conn:      database connection
 *  $table:     de naam van de tabel waar de opties in staan
 *  $primarykey de kolomnaam van het ID of primary key
 *  $value:     de kolomnaam die de teksten bevat die in de select weergegeven moeten worden
 *  $selected:  Het ID van de geselecteerde optie
 */

function buildOptions($dbc, $table, $primarykey, $value, $selected = false)
{

    $html = '';
    
    $query = "SELECT $primarykey, $value FROM $table";
    
    $result = mysqli_query($dbc, $query);
    
    if(false === $result) {
        echo "Error in query: " . $query . " Error: " . mysqli_error($dbc);
        exit;
    }

    
    while($row = mysqli_fetch_assoc($result))
    {

        $attr = '';
        
        if($selected == $row[$primarykey])
            $attr = ' selected';
        
        $html .= '<option value="'.$row[$primarykey].'"'.$attr.'>'.$row[$value].'</option>';
    }

    
    return $html;
}


/*
 *  INITIALISATIE
 */

$kleur = false;

/*
 * INDIEN HET FORMULIER VERSTUURD IS
 */

if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    // overschrijf de standaardwaarden voor de waarden die ge-POST zijn
    $kleur = $_POST['kleur'];
    
    echo 'Geselecteerde kleur: ' . $kleur;
}


/*
 * OPTIES VOOR DE SELECT VOORBEREIDEN
 */

$options = buildOptions($dbc, 'medicines_medicinestype', 'id', 'medicinestype', $kleur);

/*
 * OUTPUT
 */

?>

<!doctype html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>een titel</title>
    </head>
    <body>
        <form action="" method="post">
            <select name="kleur">
                <?php echo $options; ?>
            </select>
            <button type="submit">Verzenden</button>
        </form>
    </body>
</html>
 
Frank Nietbelangrijk

Frank Nietbelangrijk

18/09/2017 00:04:22
Quote Anchor link
Probeer eens

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$options
= buildOptions($dbc, 'medicinestype', 'id', 'medicinetypename', $kleur);
?>


en zet dit eens boven in je script zodat ik zeker weet dat je eventuele foutmeldingen te zien krijgt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>


Verder kun je de functie meerdere keren aanroepen en gebruiken op elke tabel die je maar wilt. De functie zou alleen op dit moment te kort schieten als je een filter wilt toepassen die wellicht met een JOIN query gebouwd zou moeten worden maar het was dan ook slechts een werkend voorbeeld om je in de goede richting te sturen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$medicinetypeOptions
    = buildOptions($dbc, 'medicinestype', 'id', 'medicinetypename', $kleur);
$medicinecountryOptions = buildOptions($dbc, 'medicinescountry', 'id', 'companyname', $kleur);
$suppliersOptions       = buildOptions($dbc, 'suppliers', 'id', 'suppliername', $kleur);
?>


Toevoeging op 18/09/2017 00:12:28:

Verder ben ik wel benieuwd welke tabelnamen en kolomnamen je hebt. Kun je daar een overzichtje van maken?

Toevoeging op 18/09/2017 00:14:00:

Ik begrijp ook niet waarom je een kolom 'medicinetypename' hebt in een tabel 'medicinestype'. Ik zou die kolom gewoon 'name' genoemd hebben. Al die dubbelzinnigheid is nergens voor nodig.
Gewijzigd op 18/09/2017 00:09:51 door Frank Nietbelangrijk
 
Mohamed nvt

Mohamed nvt

18/09/2017 20:29:32
Quote Anchor link
Hallo Frank Nietbelangrijk,

Bovenstaande voorbeeld van je heb ik werkend gekregen op http://hawarco.co/select.php.
Deze script kijkt welke medicine_id hoort bij medicinetype_id.
Zo kan bijvoorbeeld een medicinetype_id meerdere malen voorkomen, omdat betreffende medicinetype_id gekoppeld is aan meerdere medicines.

Eigenlijk heb ik tussen de tabellen medicinestype en medicines_tabel one to many relatie, als je snapt wat ik bedoelt. Dit is nl een normalisatie term ;-)

Overzicht van twee tabellen + kolomnamen:
http://hawarco.co/img/medicines_medicinetype.png
http://hawarco.co/img/medicinetype.png

Maar goed en nu, wat stel je voor, nu dit script werkt?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

19/09/2017 18:41:05
Quote Anchor link
Een one to many heeft geen koppeltabel nodig. Dat is alleen bij een many to many relatie.

Voorbeeld one to many:

fotoboek
- fotoboek_id
- title
- created (datetime)

fotos
- foto_id
- fotoboek_id <== De one to many koppeling (een fotoboek KAN 0, 1 of meerdere foto's bevatten)
- filename
- orientation
 
Mohamed nvt

Mohamed nvt

19/09/2017 19:31:58
Quote Anchor link
Hallo Frank Nietbelangrijk,

Je hebt helemaal gelijk. Ik bedoelde idd een many to many tabel, want een medicine kan gekoppeld worden aan verschillende medicinetype, en een medicinetype kan gekoppeld worden aan meerdere medicines ;-)
 
Frank Nietbelangrijk

Frank Nietbelangrijk

19/09/2017 20:06:34
Quote Anchor link
Juist Many to Many dus. Dan maak je een formulier voor het bewerken/aanmaken van een medicijn en dan wil je dus 1 of meerdere medicinetypes kunnen koppelen met dit medicijn (of precies andersom kan ook).

De meest basic manier om dit te bewerkstelligen is met een multiple select maar dit is ook tevens de meest lelijke manier.

Mooier is een oplossing zoals deze
 
Mohamed nvt

Mohamed nvt

19/09/2017 20:19:42
Quote Anchor link
Volgens mij heb ik het verkeerd uitgelegd, want ik heb geen multiple select nodig.
Elke keer kan een medicine gekoppeld zijn aan een medicinetype, maar dezelfde medicine kan niet gekoppeld worden aan verschillende medicinetype.
Snap je het nu?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

19/09/2017 23:44:22
Quote Anchor link
Ik denk dat ik het wel snap.

Lees je laatste twee eigen berichten nog eens terug. Bij de eerste zeg je:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
een medicine kan gekoppeld worden aan verschillende medicinetype, en een medicinetype kan gekoppeld worden aan meerdere medicines


en bij de laatste zeg je:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Elke keer kan een medicine gekoppeld zijn aan een medicinetype, maar dezelfde medicine kan niet gekoppeld worden aan verschillende medicinetype


Dus toch een many to one?
 
Thomas van den Heuvel

Thomas van den Heuvel

20/09/2017 00:02:37
Quote Anchor link
Is dit niet een hele moeilijke manier om te zeggen dat een medicijn precies één medicijntype heeft? :p
 
Mohamed nvt

Mohamed nvt

20/09/2017 11:18:49
Quote Anchor link
Hallo Frank Nietbelangrijk,

Bij nader inzien is het idd een one-to-many relatie. Dit betekent dus dat ik bepaalde aanpassing moet aanbrengen op DB-niveau en sommige bestanden. Helaas is het niet anders ;-) Maar het voordeel hiervan is dat makkelijker maakt om dit probleem, geselecteerde item uit drop down lijst, op te lossen. Want alles zal in een tabel opgeslagen worden, vind je niet ;-)

@Thomas van den Heuvel, hahaha jah dat lijkt het erop :D
 
Frank Nietbelangrijk

Frank Nietbelangrijk

20/09/2017 11:39:41
Quote Anchor link
Lijkt me een goed Plan :-)

"Keep it simple"
 
Mohamed nvt

Mohamed nvt

22/09/2017 21:54:34
Quote Anchor link
Hallo Frank Nietbelangrijk,

DB is aangepast en de functies van de CRUD, CR en D zijn ook bijgewerkt en het werkt allemaal prima ;-)
Maar de update functie dus niet.

Ik ben gaan verder zoeken, maar helaas lukt het nog niet.
in de IF statement, waarvan de waardes van de input fields worden opgehaald op basis van een ID van het vorige pagina, heb ik de volgende query geschreven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
$mtquery = "SELECT
                            medicines.id,medicines.medicinename,medicines.medicinetype_id,medicinestype.medicinetypename
                            FROM medicines
                            LEFT JOIN medicinestype ON medicinestype.id=medicines.medicinetype_id
                            WHERE id='" . mysqli_real_escape_string($dbc, $_GET['id']) . "'";
                            
                 if ($mtresult = mysqli_query($dbc, $mtquery)){ // run the query
                        $mtrow = mysqli_fetch_array($mtresult);// Retrieve the information.
                        echo $mtrow["medicinetypename"];
                 }

Ik weet dat de query werkt, want vooraf heb ik het getest in PhpMyadmin en daar krijg ik wel results, maar op de pagina med_edit.php krijg ik dus geen resultaat en ook geen foutmelding.
Ik moet wel erbij vermelden dat ik de IF () statement direct sluit, zoals je hierboven ziet...

Voor mijn probleem ben ik dus verder gaan zoeken en kwam op het volgende URL uit:
https://stackoverflow.com/questions/22701850/php-mysql-how-to-show-selected-value-on-dropdown-menu

Dit beschrijft precies mijn probleem en daar wordt ook een oplossing voor gegeven onder nummer 2,maar ik weet niet hoe ik de oplossing kan toepassen binnen mijn code. De eerst value staat reeds boven de while loop...
Wil je even naar bovenstaande URL kijken?

Onderstaande code gebruik ik om een dropdown voor medicinetype weer te geven.
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
<tr>
                                <td><label for="medicinetypename"><b>Select medicine type:</b></label></td>
                                <td><select name="medicinetypename">
                                <option value="">---Select---</option>
                                <?php
                                require_once (MYSQL);
                                $query = "SELECT * from medicinestype";
                                $result = mysqli_query($dbc,$query);
                                if(!$result){
                                    die ("query failed" . mysqli_error($dbc));    
                                }

                                while ($row = mysqli_fetch_assoc($result)){
                                        $medicinetype_id = $row['id'];
                                        $medicinetypename = $row['medicinetypename'];
                                    echo "<option value='$medicinetype_id'>{$medicinetypename}</option>";
                                }

                                ?>

                                </select></td>
                                <td><?php if(isset($errors['medicinetypename'])) echo $errors['medicinetypename']; ?></td>
                            </tr>
Gewijzigd op 22/09/2017 21:57:50 door Mohamed nvt
 

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.