PHP Update query werkt helaas niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Mohamed nvt

Mohamed nvt

30/08/2016 21:24:04
Quote Anchor link
Hallo allemaal,

Momenteel ben ik bezig om een record op basis van een ID aan te passen, helaas lukt het me niet om dit werkend te krijgen.
Het invoegen van een record gaat goed.
Het lezen van een record gaat goed
Het verwijderen van een record gaat goed
Het wijzigen van een record gaat helaas niet goed...

Ik heb verschillende opties geprobeerd, maar de foutmelding heeft geen betrekking tot de php update query. En toch weet ik precies dat het probleem toch in PHP update query zit.

De genereerde foutmelding is als volgt:

Notice: Undefined variable: result_update in D:\xampp\htdocs\inventory_test\med_edit.php on line 36
Query failed

Alvast bedankt voor het meedenken!
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
<?php include "includes/db-config.php"; ?>
<?php include "includes/header.php"; ?>
<?php include "includes/sidebar.php"; ?>
<?php

// 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 * FROM medicines WHERE med_id=$id";
    $result = mysqli_query($connection,$query);
    while($row = mysqli_fetch_assoc($result)){
            $med_id= $row['med_id'];
            $med_name = $row['med_name'];
            $med_production= $row['med_create_date'];
            $med_expire= $row['med_expire_date'];
    }    
}
else {
    echo "No medicine has been chosen";
}

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

?>

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
        $med_name = $row['med_name'];
        $med_production= $row['med_create_date'];
        $med_expire= $row['med_expire_date'];
        $update_medicines = "UPDATE medicines
                                    SET
                                    med_name = '$med_name',
                                    med_create_date = '$med_production',
                                    med_expire_date ='$med_expire'
                                        WHERE med_id= '"
.$_POST['id']."' ";
        $result_update = mysqli_query($connection,$update_medicines);
        }

if(!$result_update){
    die ("Query failed" . mysqli_error($connection));    
}

?>

<?php echo "<div>"; ?>
<?php echo "<h1>Edit page</h1>"; ?>

<form action="med_edit.php" method="post">
<fieldset>
<legend>Medicine edit form</legend>
<input type="hidden" name="id" value=" <?php echo $med_id; ?> " >
<label for="medicine">Medicine name:</label><input type="text" name="medicine" id= "medicine" value="<?php if(isset($med_name)) echo $med_name; ?>"> <br>
<label for="production">production Date:</label><input type="text" name="production" id= "production" value="<?php if(isset($med_production)) echo $med_production; ?>"> <br>
<label for="expire">Medicine name:</label><input type="text" name="expire" id= "expire" value="<?php if(isset($med_expire)) echo $med_expire; ?>"> <br>
<input type="submit" name="update_medicine" value="Edit">
</fieldset>
</form>
</div>
<?php include "includes/footer.php"; ?>
 
PHP hulp

PHP hulp

19/01/2021 10:14:38
 
- SanThe -

- SanThe -

30/08/2016 21:37:19
Quote Anchor link
Regel 38, 39 en 40 horen nog voor regel 37 te staan.
Anders bestaat $result_update inderdaad niet.
 
Mohamed nvt

Mohamed nvt

30/08/2016 21:43:22
Quote Anchor link
- SanThe - op 30/08/2016 21:37:19:
Regel 38, 39 en 40 horen nog voor regel 37 te staan.
Anders bestaat $result_update inderdaad niet.

Hoi,
Bedankt voor je snelle reactie!
Ik wil je feedback graag begrijpen en daarbij heb ik een vraag:
Hoe kan ik een variabel controleren terwijl het op dat moment niet bestaat?

Btw; ik heb je feedback verwerkt en krijg dezelfde foutmelding plus dat het aangeeft dat er geen medicine gekozen is...:
No medicine has been chosen
Notice: Undefined variable: result_update in D:\xampp\htdocs\inventory_test\med_edit.php on line 37
Query failed
 
- SanThe -

- SanThe -

30/08/2016 21:50:16
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
if(isset($var))
{
   // bestaat
}
else
{   // bestaat niet
}
?>


No medicine has been chosen
Die hoort bij de Select en niet bij de Update.
$_GET['id'] zal niet bestaan.
Je zet dat id direct in de query, dat houdt in dat de query lek is. (Zie sql-injection).

Toevoeging op 30/08/2016 21:51:53:

Maak van if(!$result_update) eens if($result_update === false).
 
Mohamed nvt

Mohamed nvt

30/08/2016 22:04:29
Quote Anchor link
Het klopt dat de melding " No medicine has been chosen" bij SELECT hoort, maar vreemd genoeg wanneer ik op een item klik, dan wordt alles weergegeven netjes in een tabel in een volgend pagina..dus deze foutmelding vind ik een beetje vreemd...

Voor nu maak ik me even geen zorgen over security, want dat pak ik later op...

Nu verschijnt nog steeds dezelfde foutmelding, en de record wordt gewijzigd met als resultaat lege waarden...

Nieuw code

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
<?php include "includes/db-config.php"; ?>
<?php include "includes/header.php"; ?>
<?php include "includes/sidebar.php"; ?>
<?php

// 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 * FROM medicines WHERE med_id=$id";
    $result = mysqli_query($connection,$query);
    while($row = mysqli_fetch_assoc($result)){
            $med_id= $row['med_id'];
            $med_name = $row['med_name'];
            $med_production= $row['med_create_date'];
            $med_expire= $row['med_expire_date'];
    }    
}
else {
    echo "No medicine has been chosen";
}

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

?>

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
        $med_name = $row['med_name'];
        $med_production= $row['med_create_date'];
        $med_expire= $row['med_expire_date'];
        $update_medicines = "UPDATE medicines
                                    SET
                                        med_name = '$med_name',
                                        med_create_date = '$med_production',
                                        med_expire_date ='$med_expire'
                                            WHERE med_id= '"
.$_POST['id']."' ";

if($result_update === False){
    die ("Query failed" . mysqli_error($connection));    
}

$result_update = mysqli_query($connection,$update_medicines);
        }


?>

<?php echo "<div>"; ?>
<?php echo "<h1>Edit page</h1>"; ?>

<form action="med_edit.php" method="post">
<fieldset>
<legend>Medicine edit form</legend>
<input type="hidden" name="id" value=" <?php echo $med_id; ?> " >
<label for="medicine">Medicine name:</label><input type="text" name="medicine" id= "medicine" value=" <?php if(isset($med_name)) echo $med_name; ?> "> <br>
<label for="production">production Date:</label><input type="text" name="production" id= "production" value=" <?php if(isset($med_production)) echo $med_production; ?> "> <br>
<label for="expire">Medicine name:</label><input type="text" name="expire" id= "expire" value=" <?php if(isset($med_expire)) echo $med_expire; ?> "> <br>
<input type="submit" name="update_medicine" value="Edit">
</fieldset>
</form>
</div>
<?php include "includes/footer.php"; ?>
 
- Ariën -
Beheerder

- Ariën -

30/08/2016 22:10:28
Quote Anchor link
Quote:
Voor nu maak ik me even geen zorgen over security, want dat pak ik later op...

Sloten zet je ook niet pas later op je huis.
Nu kan het nog. Straks moet je alle queries nalopen of er SQL-injection in zit, en is er een kans dat je er eentje vergeet. Ikzelf heb geleerd om dit direct aan een querie toe te voegen. Het beschermt bovendien niet alleen tegen security maar ook tegen ongewenste manipulaties van je query. Vul eens voor de grap een ' (apostrof) in.

Of stap anders over op PDO, dan wordt alles vanzelf gedaan als een een waarde gaat binden ;-)
Gewijzigd op 30/08/2016 22:11:40 door - Ariën -
 
- SanThe -

- SanThe -

30/08/2016 22:12:31
Quote Anchor link
Regel 40 moet tussen regel 36 en 37.

De value van <input type="hidden" name="id" ... /> bevat aan beide kanten een spatie.
Dat is vast niet de bedoeling.
De andere values trouwens ook.
Gewijzigd op 30/08/2016 22:14:07 door - SanThe -
 
Mohamed nvt

Mohamed nvt

30/08/2016 22:19:14
Quote Anchor link
Je bedoelt dus zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
if($result_update === False){
    $result_update = mysqli_query($connection,$update_medicines);
    die ("Query failed" . mysqli_error($connection));    
}
        }

Weet je dit zeker? Dit heb ik nooit eerder gezien nl...
Alle spaties heb ik verwijderd, maar dit mocht niet baten...
precies dezelfde foutmelding...
 
Ben van Velzen

Ben van Velzen

30/08/2016 22:22:17
Quote Anchor link
Tussen 36 en 37, niet tussen 37 en 38.
Serieus, volg eens een tutorial (en begrijp deze ook, niet klakkeloos dingen overnemen), je bent nu gewoon maar wat aan het proberen.
Gewijzigd op 30/08/2016 22:23:50 door Ben van Velzen
 
- SanThe -

- SanThe -

30/08/2016 22:23:18
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$result_update
= mysqli_query($connection,$update_medicines);
if($result_update === False){
    die ("Query failed" . mysqli_error($connection));    
}

?>
 
Mohamed nvt

Mohamed nvt

30/08/2016 22:26:31
Quote Anchor link
Ben van Velzen op 30/08/2016 22:22:17:
Tussen 36 en 37, niet tussen 37 en 38.
Serieus, volg eens een tutorial (en begrijp deze ook, niet klakkeloos dingen overnemen), je bent nu gewoon maar wat aan het proberen.

Hahaha! Sorry!
Ik vond het al raar, vandaar ook mijn commentaar....
Het blijkt dat alles binnen de isset() functie moet zijn...


Toevoeging op 30/08/2016 22:28:46:

- SanThe - op 30/08/2016 22:23:18:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$result_update
= mysqli_query($connection,$update_medicines);
if($result_update === False){
    die ("Query failed" . mysqli_error($connection));    
}

?>

Tnx! Dit heb ik nu aangepast.
Na verschijnt enkel "No medicine has been chosen" met een leeg formulier eronder.
De waardes in de DB worden aangepast/leeg gemaakt....
 
- Ariën -
Beheerder

- Ariën -

30/08/2016 22:35:40
Quote Anchor link
Dan heb je geen id-argument in de URL meegegeven.
Laat je action-paramater van je <form>-tag gewoon leeg. Nu stuur je hem door naar med_edit.php waarbij er geen id-argument in de URL staat.
 
- SanThe -

- SanThe -

30/08/2016 22:36:08
Quote Anchor link
Dan heb je geen $_GET['id'] en is er dus ook geen Select geweest.
Dus $row zal niet bestaan.
 
Mohamed nvt

Mohamed nvt

30/08/2016 22:40:36
Quote Anchor link
- Ariën - op 30/08/2016 22:35:40:
Dan heb je geen id-argument in de URL meegegeven.
Laat je action-paramater van je <form>-tag gewoon leeg. Nu stuur je hem door naar med_edit.php waarbij er geen id-argument in de URL staat.

Hoi Ariën,
Btw; ik heb post method en geen get...
Ik heb de action-parameter leeg nu

Bij het wijzigen van een record verschijnt nu helemaal geen ERROR.
De record in de DB wordt gewijzigd/leeg gemaakt....
 
- Ariën -
Beheerder

- Ariën -

30/08/2016 22:45:29
Quote Anchor link
Echo eens $update_medicines. Welke querie wordt er dan geprobeerd uit te voeren?
 
Mohamed nvt

Mohamed nvt

30/08/2016 23:03:43
Quote Anchor link
Geef me tot morgen ochtend de tijd en ik zal alles uploaden naar de webserver.
Tot zover dank voor jullie hulp!

Update 1,

Het is gelukt om heel snel alles up te loaden naar de web server:

URL: http://dev.pc-on-rails.nl/test2
Gewijzigd op 30/08/2016 23:07:49 door Mohamed nvt
 
- Ariën -
Beheerder

- Ariën -

30/08/2016 23:09:54
Quote Anchor link
Dit is nog geen antwoord op mijn vraag verder ;-)
 
Mohamed nvt

Mohamed nvt

30/08/2016 23:11:46
Quote Anchor link
- SanThe - op 30/08/2016 22:36:08:
Dan heb je geen $_GET['id'] en is er dus ook geen Select geweest.
Dus $row zal niet bestaan.


Ik snap je feedback niet.
Van medicines pagina krijg ik een overzicht.
Vervolgens selecteer ik er eentje en klik op edit. Hierna word ik geredirect, op basis van een id, naar med_edit.php. Er verschijnt een tabel van de geselecteerde item.
Wanneer ik wat gegevens verander en klik op edit, dan worden de gegevens aangepast/leeg gemaakt en ga ik automatisch weer terug naar medicines.php.
Als je het wil, kun je het testen..

Toevoeging op 30/08/2016 23:17:30:

- Ariën - op 30/08/2016 23:09:54:
Dit is nog geen antwoord op mijn vraag verder ;-)


ik krijg het cijfer 1... zoals te zien op:
http://dev.pc-on-rails.nl/test2/med_edit.php?id=9
 
- Ariën -
Beheerder

- Ariën -

30/08/2016 23:23:53
Quote Anchor link
Laat je relevante code eens zien? Want je zou je query moeten zien.
 
Mohamed nvt

Mohamed nvt

31/08/2016 08:30:53
Quote Anchor link
- Ariën - op 30/08/2016 23:23:53:
Laat je relevante code eens zien? Want je zou je query moeten zien.


Voor welk pagina wil je de code zien?
 
Obelix Idefix

Obelix Idefix

31/08/2016 08:47:44
Quote Anchor link
Wat zit er in de variabelen op regel 27 / 29?
Echo ze eens.
Waarom maak je die extra variabelen eigenlijk aan?
 

Pagina: 1 2 3 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.