-Matthijs- Geplaatst: 6 november 2014 Rapport Geplaatst: 6 november 2014 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 Reageren
Joriz Geplaatst: 6 november 2014 Rapport Geplaatst: 6 november 2014 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. Reageren
Big Boss Geplaatst: 6 november 2014 Rapport Geplaatst: 6 november 2014 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"> Reageren
-Matthijs- Geplaatst: 6 november 2014 Auteur Rapport Geplaatst: 6 november 2014 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. Reageren
Thundercover Geplaatst: 6 november 2014 Rapport Geplaatst: 6 november 2014 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. Reageren
DennisBerry Geplaatst: 6 november 2014 Rapport Geplaatst: 6 november 2014 (bewerkt) Ik heb op dit moment weinig tijd anders had ik er wel langer naar gekeken. Misschien heb je wat aan mijn code http://paste.ofcode.org/MQ6dj2KP3dgg4aCWj6KKj2 (hele code hier plakken wou niet) :/ Succes Bewerkt: 6 november 2014 door DennisBerry Reageren
-Matthijs- Geplaatst: 6 november 2014 Auteur Rapport Geplaatst: 6 november 2014 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! Reageren
-Matthijs- Geplaatst: 9 november 2014 Auteur Rapport Geplaatst: 9 november 2014 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... Reageren
.Timothy Geplaatst: 10 november 2014 Rapport Geplaatst: 10 november 2014 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 ) Reageren
Recommended Posts
Een reactie plaatsen
Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.