Updaten van data in de database
Code (php)
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
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
<?php
session_start();
ob_start();
?>
<?php
// Create connection
$con=mysqli_connect("localhost","root","","gameboek");
$gebruikersnaam = $_SESSION['gebruikersnaam'];
$leeftijd = mysqli_real_escape_string($con, $_POST['leeftijd']);
$stad = mysqli_real_escape_string($con, $_POST['stad']);
$favorietegamegenre = mysqli_real_escape_string($con, $_POST['favorietegamegenre']);
$favorietegame1 = mysqli_real_escape_string($con, $_POST['favorietegame1']);
$favorietegame2 = mysqli_real_escape_string($con, $_POST['favorietegame2']);
$favorietegame3 = mysqli_real_escape_string($con, $_POST['favorietegame3']);
$favorietegame4 = mysqli_real_escape_string($con, $_POST['favorietegame4']);
$email= mysqli_real_escape_string($con, $_POST['email']);
//$afbeelding = ?
$result = mysqli_query($con,"SELECT * FROM gebruikers WHERE gebruikersnaam='" . $gebruikersnaam . "'");
mysqli_query($con, "UPDATE gebruikers SET stad = $stad WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
mysqli_query($con, "UPDATE gebruikers SET leeftijd = $leeftijd WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
mysqli_query($con, "UPDATE gebruikers SET favoriete_gamegenre = $favorietegamegenre WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
mysqli_query($con, "UPDATE gebruikers SET favoriete_game1 = $favorietegame1 WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
mysqli_query($con, "UPDATE gebruikers SET favoriete_game2 = $favorietegame2 WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
mysqli_query($con, "UPDATE gebruikers SET favoriete_game3 = $favorietegame3 WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
mysqli_query($con, "UPDATE gebruikers SET favoriete_game4 = $favorietegame4 WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
mysqli_query($con, "UPDATE gebruikers SET email = $email WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
echo $leeftijd ;
echo $gebruikersnaam;
echo $stad;
echo $favorietegamegenre;
echo $favorietegame1;
echo $favorietegame2 ;
echo $favorietegame3 ;
echo $favorietegame4;
$_SESSION['leeftijd'] = $leeftijd;
$_SESSION['stad'] = $stad;
$_SESSION['email'] = $email;
$_SESSION['favoriete_gamegenre'] = $favorietegamegenre;
$_SESSION['favoriete_game1'] = $favorietegame1;
$_SESSION['favoriete_game2'] = $favorietegame2;
$_SESSION['favoriete_game3'] = $favorietegame3;
$_SESSION['favoriete_game4'] = $favorietegame4;
}
?>
session_start();
ob_start();
?>
<?php
// Create connection
$con=mysqli_connect("localhost","root","","gameboek");
$gebruikersnaam = $_SESSION['gebruikersnaam'];
$leeftijd = mysqli_real_escape_string($con, $_POST['leeftijd']);
$stad = mysqli_real_escape_string($con, $_POST['stad']);
$favorietegamegenre = mysqli_real_escape_string($con, $_POST['favorietegamegenre']);
$favorietegame1 = mysqli_real_escape_string($con, $_POST['favorietegame1']);
$favorietegame2 = mysqli_real_escape_string($con, $_POST['favorietegame2']);
$favorietegame3 = mysqli_real_escape_string($con, $_POST['favorietegame3']);
$favorietegame4 = mysqli_real_escape_string($con, $_POST['favorietegame4']);
$email= mysqli_real_escape_string($con, $_POST['email']);
//$afbeelding = ?
$result = mysqli_query($con,"SELECT * FROM gebruikers WHERE gebruikersnaam='" . $gebruikersnaam . "'");
mysqli_query($con, "UPDATE gebruikers SET stad = $stad WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
mysqli_query($con, "UPDATE gebruikers SET leeftijd = $leeftijd WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
mysqli_query($con, "UPDATE gebruikers SET favoriete_gamegenre = $favorietegamegenre WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
mysqli_query($con, "UPDATE gebruikers SET favoriete_game1 = $favorietegame1 WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
mysqli_query($con, "UPDATE gebruikers SET favoriete_game2 = $favorietegame2 WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
mysqli_query($con, "UPDATE gebruikers SET favoriete_game3 = $favorietegame3 WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
mysqli_query($con, "UPDATE gebruikers SET favoriete_game4 = $favorietegame4 WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
mysqli_query($con, "UPDATE gebruikers SET email = $email WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
echo $leeftijd ;
echo $gebruikersnaam;
echo $stad;
echo $favorietegamegenre;
echo $favorietegame1;
echo $favorietegame2 ;
echo $favorietegame3 ;
echo $favorietegame4;
$_SESSION['leeftijd'] = $leeftijd;
$_SESSION['stad'] = $stad;
$_SESSION['email'] = $email;
$_SESSION['favoriete_gamegenre'] = $favorietegamegenre;
$_SESSION['favoriete_game1'] = $favorietegame1;
$_SESSION['favoriete_game2'] = $favorietegame2;
$_SESSION['favoriete_game3'] = $favorietegame3;
$_SESSION['favoriete_game4'] = $favorietegame4;
}
?>
Het probleem is dat het enkel lukt om cijfers up te daten. Wanneer ik bijvoorbeeld in het invoervakje "stad" "Brussel" invul, gebeurt er niets met de database. Maar wanneer ik "18" invul in het invoervakje, update stad in de database naar "18".
Eerst dacht ik dat dit aan de datatypes in mijn database lag, maar al mijn kolommen zijn varchars, enkel leeftijd is een int
Gewijzigd op 27/12/2014 15:03:48 door Johnny Test
Maak van:
Code (php)
1
2
3
2
3
<?php
mysqli_query($con, "UPDATE gebruikers SET favoriete_game4 = $favorietegame4 WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
?>
mysqli_query($con, "UPDATE gebruikers SET favoriete_game4 = $favorietegame4 WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
?>
Dit:
Code (php)
1
2
3
2
3
<?php
mysqli_query($con, "UPDATE gebruikers SET favoriete_game4 = '$favorietegame4' WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
?>
mysqli_query($con, "UPDATE gebruikers SET favoriete_game4 = '$favorietegame4' WHERE gebruikersnaam = '" . $gebruikersnaam . "'");
?>
Verschil zit hem in de ' om $variabele heen.
Als die missen, mislukt je query, behalve bij cijfers. Want daarbij hoeven geen enkele haakjes (al is het een goede gewoonte dit wel te doen).
En dit geldt dan ook voor alle andere regels!
Gewijzigd op 27/12/2014 15:11:25 door Eddy E
UPDATE tabel
SET stad = 'brussel', email='[email protected]'
WHERE gebruikersnaam = 'jansen'
Opmerking:
Leefijd: beter sla je een geboortedatum op, dan is je data morgen ook nog actueel.
favoriete_game1, favoriete_game2, .....
wat nu als er een 5e bijkomt? Genummerde kolomnamen zijn een sterke aanwijzing dat je iets niet goed doet.
Beter maak je een apart lijstje met favo-games die gekoppeld zijn aan de gebruikers:
favogames
game varchar
gebruikersnaam varchar
volgorde int (dat zijn die 1 tm 4)
je ziet dan dat je ook 1 of 4 of 10 games kunt opgeven. (ook al zegt je opdrachtgever nu dat het er 4 zijn en altijd 4 blijven: het is altijd een heel dringende situatie als jij er dan op aangesproken wordt dat er een reclamecampagne start morgen en blijkt dat een top-10 niet opgeslagen kan worden.
"verandert nooit" moet je altijd begrijpen als "vooralsnog denk ik dat het zo blijft, maar het kan ieder moment alsnog veranderen"
En ik weet dat ik meerdere kolommen in 1 query kan aanpassen Ivo. Maar ik had ze even uit elkaar gezet zodat het duidelijker was om er een fout in te vinden :)
Er kan geen 5de favoriete game bijkomen omdat er maar 4 invoervakjes voorzien zijn. Dit is uiteindelijk ook maar een klein deel van mijn project. Het kon even goed 1 favoriete game zijn. Ik probeer hier zo weinig mogelijk tijd in te steken zodat ik genoeg tijd heb om de belangrijke delen uit te voeren ;)
Quote:
Er kan geen 5de favoriete game bijkomen omdat er maar 4 invoervakjes voorzien zijn
tja, en er kan geen 5e invoervakje bijkomen, omdat...?
Maar goed, dat is dan iets om voor je volgende project in het actherhoofd te houden.
http://www.yapf.net/index.php/Database_ontwerp_101
Ivo P op 27/12/2014 16:53:41:
tja, en er kan geen 5e invoervakje bijkomen, omdat...?
Maar goed, dat is dan iets om voor je volgende project in het actherhoofd te houden.
http://www.yapf.net/index.php/Database_ontwerp_101
Quote:
Er kan geen 5de favoriete game bijkomen omdat er maar 4 invoervakjes voorzien zijn
tja, en er kan geen 5e invoervakje bijkomen, omdat...?
Maar goed, dat is dan iets om voor je volgende project in het actherhoofd te houden.
http://www.yapf.net/index.php/Database_ontwerp_101
Omdat dat niet de bedoeling is :) de meeste gamers hebben 1 favoriete game zoals je meestal 1 favoriete kleur hebt. 4 vakjes zal dan wel genoeg zijn denk ik.
Het kan nooit kwaad om je applicatie alvast op de toekomst voor te bereiden ;-)
'X lijkt mij wel genoeg' mag nooit de doorslag geven
Gewijzigd op 30/12/2014 16:20:29 door Johnny Test
Ik bedoel te zeggen, dat wat nu misschien in jouw ogen voor de handliggende feiten zijn, in de toekomst helemaal niet zo logisch meer blijkt.
Ik gaf het geslacht als voorbeeld omdat iedereen daar 2 roept, of misschien 3 als je de optie 'onbekend/zeg ik niet' mogelijk wilt maken.
Dat als tegenhanger van jouw "4", omdat 1 of 2 jou wel genoeg leek en 4 daarmee al direct een flinke marge gaf.
Maar straks komen er gebruikers van jouw site met de vraag, of ze niet een top-10 mogen invoeren.
Met deze opzet rest jou dan niets anders dan nog 6 kolommen toe te voegen en alle query's aan te passen.
Terwijl een opzet die genormaliseerd is, je zou kunnen volstaan met ergens het getalletje 4 naar 10 te verhogen waardoor er direct 10 invoervakjes zouden verschijnen en de rest vanzelf zou lopen.
Ik zie nu in je script vooral dingen over games staan, dus ik neem aan dat games ook inderdaad het onderwerp vormen van jouw site?
U begrijpt duidelijk mijn project niet helemaal, er is hier dan ook helemaal geen nood aan omdat de site enkel voor mijn gebruik is.
Het is jouw keuze verder, plus dat het een mooi leermoment is voor de toekomst.