gebruik van if en UPDATE
Ik heb onderstaande geschreven, echter vind ik het fijn als iemand anders zijn licht er ook even op kan laten schijnen. Naar mijn idee is het goed..
Het is de bedoeling dat als de state ( 0 is levend, 1 banned, 2 dood ) niet gelijk is aan 0 van een bodyguard, deze automatisch wegvalt bij zijn "werkgever" .
Hieronder de code die ik daarvoor heb :
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
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
<?php
$nsql = "SELECT name,rank,health,armor,gang,location,sitestate,bodyguard,bgspot1,bgspot2,bgspot3,login_ip FROM login WHERE id='" .mysql_real_escape_string($_SESSION['user_id']). "'";
$query = mysql_query($nsql) or die(mysql_error());
$row = mysql_fetch_object($query);
$player_name = htmlspecialchars($row->name);
$player_state = htmlspecialchars($row->sitestate);
$player_bodyguard = htmlspecialchars($row->bodyguard);
$player_bgspot1 = htmlspecialchars($row->bgspot1);
$player_bgspot2 = htmlspecialchars($row->bgspot2);
$player_bgspot3 = htmlspecialchars($row->bgspot3);
$nsql = "SELECT name,sitestate FROM login WHERE name='".mysql_real_escape_string($target_name)."'";
$query = mysql_query($nsql) or die(mysql_error());
$row = mysql_fetch_object($query);
$bg_name = htmlspecialchars($row->name);
$bg_state = htmlspecialchars($row->sitestate);
//droppen eerste bg
if ($bgstate != 0) && ($player_bgspot1 = $bg_name ){
$result = mysql_query("UPDATE login SET bodyguard=bodyguard-1, bgspot1='".mysql_real_escape_string($player_bgspot2)."', bgspot2='".mysql_real_escape_string($player_bgspot3)."', bgspot3='' WHERE name='" .mysql_real_escape_string($player_name). "'")
or die(mysql_error());
}
//droppen tweede bg
if ($bgstate != 0) && ($player_bgspot2 = $bg_name ){
$result = mysql_query("UPDATE login SET bodyguard=bodyguard-1, bgspot2='".mysql_real_escape_string($player_bgspot3)."', bgspot3='' WHERE name='" .mysql_real_escape_string($player_name). "'")
or die(mysql_error());
}
//droppen derde bg
if ($bgstate != 0) && ($player_bgspot3 = $bg_name ){
$result = mysql_query("UPDATE login SET bodyguard=bodyguard-1, bgspot3='' WHERE name='" .mysql_real_escape_string($player_name). "'")
or die(mysql_error());
}
?>
$nsql = "SELECT name,rank,health,armor,gang,location,sitestate,bodyguard,bgspot1,bgspot2,bgspot3,login_ip FROM login WHERE id='" .mysql_real_escape_string($_SESSION['user_id']). "'";
$query = mysql_query($nsql) or die(mysql_error());
$row = mysql_fetch_object($query);
$player_name = htmlspecialchars($row->name);
$player_state = htmlspecialchars($row->sitestate);
$player_bodyguard = htmlspecialchars($row->bodyguard);
$player_bgspot1 = htmlspecialchars($row->bgspot1);
$player_bgspot2 = htmlspecialchars($row->bgspot2);
$player_bgspot3 = htmlspecialchars($row->bgspot3);
$nsql = "SELECT name,sitestate FROM login WHERE name='".mysql_real_escape_string($target_name)."'";
$query = mysql_query($nsql) or die(mysql_error());
$row = mysql_fetch_object($query);
$bg_name = htmlspecialchars($row->name);
$bg_state = htmlspecialchars($row->sitestate);
//droppen eerste bg
if ($bgstate != 0) && ($player_bgspot1 = $bg_name ){
$result = mysql_query("UPDATE login SET bodyguard=bodyguard-1, bgspot1='".mysql_real_escape_string($player_bgspot2)."', bgspot2='".mysql_real_escape_string($player_bgspot3)."', bgspot3='' WHERE name='" .mysql_real_escape_string($player_name). "'")
or die(mysql_error());
}
//droppen tweede bg
if ($bgstate != 0) && ($player_bgspot2 = $bg_name ){
$result = mysql_query("UPDATE login SET bodyguard=bodyguard-1, bgspot2='".mysql_real_escape_string($player_bgspot3)."', bgspot3='' WHERE name='" .mysql_real_escape_string($player_name). "'")
or die(mysql_error());
}
//droppen derde bg
if ($bgstate != 0) && ($player_bgspot3 = $bg_name ){
$result = mysql_query("UPDATE login SET bodyguard=bodyguard-1, bgspot3='' WHERE name='" .mysql_real_escape_string($player_name). "'")
or die(mysql_error());
}
?>
Quote:
Het gebruik van genummerde kolomnamen duidt in 99 van de 100 gevallen op een verkeerd datamodel, dus dat zal ook hier het geval zijn...bgspot1,bgspot2,bgspot3
Ga normaliseren en zorg dat je met een goed datamodel aan de slag gaat.
Verder kun je het updaten van de database wellicht zelfs gewoon met 1 query doen, als je gebruik maakt van een correct datamodel hoogstwaarschijnlijk zeker...