aftrekken in tabel wekt niet of slecht
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
include('../connect.php');
$select = "SELECT * FROM gebruikers";
$query = mysql_query($select);
while($rij = mysql_fetch_object($query)) {
$isvip = $rij->isvip;
if($isvip >=1){
mysql_query("UPDATE gebruikers SET isvip = isvip - 1 ");
}else{
//niets
}
}
?>
include('../connect.php');
$select = "SELECT * FROM gebruikers";
$query = mysql_query($select);
while($rij = mysql_fetch_object($query)) {
$isvip = $rij->isvip;
if($isvip >=1){
mysql_query("UPDATE gebruikers SET isvip = isvip - 1 ");
}else{
//niets
}
}
?>
de ene keer werkte het, de andere keer niet. Ik ben beginnen zoeken, rondvragen googlen niets gevonden. wat mijn probleem was, was dat er soms -2 werd gedaan(in de db en met het script dat hierboven staat) nu 5 min geleden voor deze post ontdekte ik dat er nu wel maar eentje werd afgetrokken dus -1. dat kwam doordat er nu maar 1 lid VIP was. dus elk lid dat vip is trekt hij het aantal van af. 1 lid doet hij vipdagen -1 10 leden doet hij vipdagen -10 6545456 leden doet hij -6545456. hoe kan ik dit verhinderen?
Sorry voor heel dit verhaal. maar zo moeten jullie niet vragen "wees iets gespicifieerder"
Alvast bedankt!
Kortom, voer de query slechts éénmaal uit of geef een where op, hoewel het dan kan zijn dat je erg veel queries uit gaat voeren wat weer inefficiënt is.
Je kan de queries natuurlijk ook combineren, iets als:
Overigens vraag ik me af of er geen handiger manier is, zoals bijvoorbeeld de eind datum opslaan? Of begin datum en aantal dagen zodat je de eind datum kan berekenen?
Boaz schreef op 02.06.2009 21:20:
Je query bevindt zich in een while, voor ieder record wordt deze dus uitgevoerd. En omdat je geen WHERE hebt op gegeven wordt de query op ieder record toegepast. Dat verklaart ook wat je zegt: "10 leden doet hij vipdagen -10".
Kortom, voer de query slechts éénmaal uit of geef een where op, hoewel het dan kan zijn dat je erg veel queries uit gaat voeren wat weer inefficiënt is.
Je kan de queries natuurlijk ook combineren, iets als:
Overigens vraag ik me af of er geen handiger manier is, zoals bijvoorbeeld de eind datum opslaan? Of begin datum en aantal dagen zodat je de eind datum kan berekenen?
Kortom, voer de query slechts éénmaal uit of geef een where op, hoewel het dan kan zijn dat je erg veel queries uit gaat voeren wat weer inefficiënt is.
Je kan de queries natuurlijk ook combineren, iets als:
Overigens vraag ik me af of er geen handiger manier is, zoals bijvoorbeeld de eind datum opslaan? Of begin datum en aantal dagen zodat je de eind datum kan berekenen?
die datums, heb ik al meerdere keren aan bod gekregen waaroim begin je niet met start datum einddatum en een NOW().. maar das dan toch onhandig als je af en toe +7 moet doen door een of andere reden :s? soms hou ik wedstrijd waardoor leden dan extra vipdagje kunnen winnen en nu is het handig als ik het vipdagje +1 of +9 kan doen.
& zou ik het volgende niet kunnen doen?:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?
include('../connect.php');
mysql_query("UPDATE gebruikers SET isvip = isvip-1 WHERE isvip >= 1");
?>
include('../connect.php');
mysql_query("UPDATE gebruikers SET isvip = isvip-1 WHERE isvip >= 1");
?>
********Ja boaz! twerkt thnx je bracht me op een ide en
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?
include('../connect.php');
mysql_query("UPDATE gebruikers SET isvip = isvip-1 WHERE isvip >= 1");
?>
include('../connect.php');
mysql_query("UPDATE gebruikers SET isvip = isvip-1 WHERE isvip >= 1");
?>
Gewijzigd op 01/01/1970 01:00:00 door Sam Smekens
Sam Smekens schreef op 02.06.2009 21:26:
maar das dan toch onhandig als je af en toe +7 moet doen door een of andere reden :s?
Met data/datums, kan je ook gewoon rekenen, kijk eens in de handleiding:
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add
Keuze van juiste data typen en flexibele methoden is belangrijk. Vaak levert dit uiteindelijk voordelen op, bijvoorbeeld als je iets gaat uitbreiden.