Skip to content
View in the app

A better way to browse. Learn more.

GTAGames.nl - De Nederlandse Grand Theft Auto Community!

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[PHP + MySQL] Database update niet

Ik heb een scriptje gemaakt waarmee je de prijs van een sportartikel kunt aanpassen d.m.v. een form. Echter, als ik de nieuwe prijs doorvoer blijft de oude prijs in de database staan. Iemand enig idee wat er fout gaat?

<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "webauth";
$connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
$artikelquery = "SELECT * FROM artikel;";
$artikel = mysqli_query($connection, $artikelquery);
?>
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
Kies een artikel:</br>
<select name="artikel">
<?php
while($artikelrow = mysqli_fetch_row($artikel)) {
echo '<option value="'.$artikelrow[1].'">'."$artikelrow[1], $artikelrow[3] euro</option>";
}
?>
</select>
</br></br>
Vul de nieuwe prijs van het artikel in:</br>
<input type="number" name="prijs"></br></br>
<input type="submit" value="Verzend">
</form>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
$nieuwprijs = $_POST['prijs'];
$artikel = $_POST['artikel'];
$update = "UPDATE artikel SET Verkoopprijs ='". $nieuwprijs ."' WHERE Artikelnr ='". $artikel ."';";
mysqli_query($connection, $update);
echo 'Artikel '. $artikel .' is aangepast naar '. $nieuwprijs .' euro.';
}
?>

De database (.sql) heb ik bijgevoegd, mocht iemand het zelf willen proberen.

firstchoice.rar

Featured Replies

Lijkt er in principe goed uit te zien. Behalve dat je de waarde die je naar de server zend niet controleert. Weet niet of dit voor een backoffice is. Maar het lijkt me slim om te controleren of bijvoorbeeld de prijs wel een getal is (met punt en geen komma?) en ook de artikelbeschrijving controleert.

Wat ik altijd doe is gewoon eerst de queries in PhpMyAdmin gooien/testen om te kijken of er niets raar gebeurd en de query doet wat ik wil.

Je kan in ieder geval al starten door (tijdelijk) deze twee regels bovenaan je script toe te voegen:

ini_set('display_errors', '1');
error_reporting(E_ALL);

Hiermee krijg je ook Notices te zien, die anders verborgen worden. Het probleem lijkt zich echter hier te situeren:

<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">

Je vergeet daar een echo toe te voegen, dus:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

  • Author

Lijkt er in principe goed uit te zien. Behalve dat je de waarde die je naar de server zend niet controleert. Weet niet of dit voor een backoffice is. Maar het lijkt me slim om te controleren of bijvoorbeeld de prijs wel een getal is (met punt en geen komma?) en ook de artikelbeschrijving controleert.

Wat ik altijd doe is gewoon eerst de queries in PhpMyAdmin gooien/testen om te kijken of er niets raar gebeurd en de query doet wat ik wil.

De prijs bevat geen decimalen, dus daar kan niet echt iets fout gaan. Normaal gesproken wil ik nog wel eens wat checks inbouwen, maar dit is zo kleinschalig dat ik het niet echt nodig vond. Gaat me er alleen om dat ik de database aan kan passen vanuit een webpagina.

Je kan in ieder geval al starten door (tijdelijk) deze twee regels bovenaan je script toe te voegen:

[..]

Bedankt voor de suggestie, maar dat lost het probleem niet op helaas. Er zijn ook geen notices te zien. Ik staar me er op dood inmiddels. puh2.gif

Je verwijst naar de verkeerde kolom in de tabel artikel. Je artikelnummer staat in kolom 0 en niet in kolom 1, want je begint altijd bij 0 met tellen in lijsten, arrays, etc. Overigens zou ik naar de naam van de kolom verwijzen als je het uitgebreider wil maken. Je hoeft maar de volgorde van de kolommen in je database te veranderen en je hele script werkt niet meer.

Ik heb op dit moment weinig tijd anders had ik er wel langer naar gekeken.

Misschien heb je wat aan mijn code :D

http://paste.ofcode.org/MQ6dj2KP3dgg4aCWj6KKj2

(hele code hier plakken wou niet) :/

Succes

Edited by DennisBerry

  • Author

Je verwijst naar de verkeerde kolom in de tabel artikel. Je artikelnummer staat in kolom 0 en niet in kolom 1, want je begint altijd bij 0 met tellen in lijsten, arrays, etc. Overigens zou ik naar de naam van de kolom verwijzen als je het uitgebreider wil maken. Je hoeft maar de volgorde van de kolommen in je database te veranderen en je hele script werkt niet meer.

Dat was 'm, bedankt! thumbsup2.gif

  • Author

Nog even een vraagje... Hoe kan ik d.m.v. een foreach-loop mijn database updaten? Ik heb een webpagina gemaakt waarop een overzicht staat van een aantal maaltijden. De hoeveelheid benodigde ingrediënten (bijv. 100g kip, 75g tomaten) van een maaltijd kunnen aangepast worden en dat moet weer in de database opgeslagen worden.

Code:

http://codepaste.net/7o2cho

Ik heb al van alles geprobeerd, maar krijg het niet werkend...

Je POST-variabele aantal is inmiddels een array, die zich dus leent voor een lus. Als je dan foreach over aantal doet zul je automatisch de waarden terug krijgen die je zoekt.

Ik zou alleen wel de ID in de HTML van aantal toevoegen, zodat je zeker weet dat je het juiste artikel aanpast.

(hoop dat het duidelijk is, typ dit vanaf m'n mobiel :puh:)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.