meerdere rijen selecteren
Voor een cronjob ben ik bezig met een bepaalde check die voor elk geregistreerd lid moet kijken of hij minder dan 0 munten heeft, dus het is eigenlijk een bugfix cronjob.
Nu zat ik te kijken of ik dat nou met for each moest doen of niet, het is me nog niet gelukt, en ik dacht dat jullie het vast wel weten...
Ik wil dus voor elke speler in de tabel members kijken of hij minder heeft dan 0 munten, voor alle spelers die minder dan 0 munten hebben moet de volgende query worden uitgevoerd:
Code (php)
1
2
3
4
2
3
4
<?php
$sql = "INSERT INTO helpdesk (member, vraag) values('Cronjob', 'De speler ".$member['name']." had minder dan 0 munten.')";
$query = mysql_query($sql);
?>
$sql = "INSERT INTO helpdesk (member, vraag) values('Cronjob', 'De speler ".$member['name']." had minder dan 0 munten.')";
$query = mysql_query($sql);
?>
Bij voorbaat dank voor jullie hulp!
Jonas
Is hier echt een cronjob voor nodig?
Hoop dat je hiermee akoord gaat ;)
Bedoel je zoiets?:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$query = mysql_query("SELECT * FROM users WHERE munten < '0'");
while($row = mysql_fetch_assoc($query))
{
$sql = "INSERT INTO helpdesk (member, vraag) values('Cronjob', 'De speler ".$member['name']." had minder dan 0 munten.')";
$query = mysql_query($sql);
}
?>
$query = mysql_query("SELECT * FROM users WHERE munten < '0'");
while($row = mysql_fetch_assoc($query))
{
$sql = "INSERT INTO helpdesk (member, vraag) values('Cronjob', 'De speler ".$member['name']." had minder dan 0 munten.')";
$query = mysql_query($sql);
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Yearupie Achternaamloos
Met while() had ik het ook snel opgelost, maar ik wil het graag met for each,
omdat ik ook andere cronjobs uitvoer waar wordt gekeken naar alle rijen die
in een tabel staan, en die dus niet aan een bepaalde voorwaarde (munten<0)
moeten voldoen.
Ik moet dus ook alle rijen uit de tabel spion halen, dat is voor alle leden die
een spion hebben ingehuurd, voor deze moet random worden bepaald of de
spion ze heeft gevonden of niet. Dit lukt allemaal wel, maar ik krijg ze niet goed
uit de database... Kun je het eens laten zien met for each? Bvd!
Gewijzigd op 01/01/1970 01:00:00 door SeaCrime
Bovenstaande while() is goed. Een foreach() gaat hier niet zomaar werken. Daar moet je dan nog meer dingen voor gaan doen en dat is overbodig.
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
56
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
56
<?php
error_reporting(E_ALL);
include("config.php");
$xQu = mysql_query("SELECT * FROM spion");
while($xQ = mysql_fetch_assoc($xQu)) {
$gn1 = mysql_query("SELECT * FROM spion WHERE id='".$xQ['id']."'");
$gn = mysql_fetch_assoc($gn1);
if($gn['datum'] + 1800 > time()) { // de spion is minder dan een half uur gelden begonnen met zoeken
$randomNumber = rand(1,7); // random wordt bepaald of de speler door de spion is gevonden
if($randomNumber == 3) { // dit is het geval...
mysql_query("UPDATE members SET gevonden='1', gevondenspeler='".$gn['speler']."' WHERE login='".$persoon['user']."'") or die(mysql_error());
mysql_query("DELETE FROM spion WHERE id='".$gn['id']."'") or die(mysql_error());
}else{ // dit is niet het geval
// niets doen, persoon is nog niet gevonden
}
}else{ // spion is al langer dan een half uur aan het zoeken...
$randomNumber2 = rand(1,4);
if($randomNumber2 < 4) { // persoon wordt alsnog gevonden door spion
$gn1 = mysql_query("SELECT * FROM spion WHERE id='".$xQ['id']."'");
$gn = mysql_fetch_assoc($gn1);
mysql_query("UPDATE members SET gevonden='1', gevondenspeler='".$gn['speler']."' WHERE login='".$persoon['user']."'") or die(mysql_error());
mysql_query("DELETE FROM spion WHERE id='".$gn['id']."'") or die(mysql_error());
}else{
mysql_query("DELETE FROM spion WHERE id='".$gn['id']."'") or die(mysql_error());
}
}
}
mysql_query("UPDATE cronjobs SET laatstekeer=NOW() WHERE naam='spion'");
?>
error_reporting(E_ALL);
include("config.php");
$xQu = mysql_query("SELECT * FROM spion");
while($xQ = mysql_fetch_assoc($xQu)) {
$gn1 = mysql_query("SELECT * FROM spion WHERE id='".$xQ['id']."'");
$gn = mysql_fetch_assoc($gn1);
if($gn['datum'] + 1800 > time()) { // de spion is minder dan een half uur gelden begonnen met zoeken
$randomNumber = rand(1,7); // random wordt bepaald of de speler door de spion is gevonden
if($randomNumber == 3) { // dit is het geval...
mysql_query("UPDATE members SET gevonden='1', gevondenspeler='".$gn['speler']."' WHERE login='".$persoon['user']."'") or die(mysql_error());
mysql_query("DELETE FROM spion WHERE id='".$gn['id']."'") or die(mysql_error());
}else{ // dit is niet het geval
// niets doen, persoon is nog niet gevonden
}
}else{ // spion is al langer dan een half uur aan het zoeken...
$randomNumber2 = rand(1,4);
if($randomNumber2 < 4) { // persoon wordt alsnog gevonden door spion
$gn1 = mysql_query("SELECT * FROM spion WHERE id='".$xQ['id']."'");
$gn = mysql_fetch_assoc($gn1);
mysql_query("UPDATE members SET gevonden='1', gevondenspeler='".$gn['speler']."' WHERE login='".$persoon['user']."'") or die(mysql_error());
mysql_query("DELETE FROM spion WHERE id='".$gn['id']."'") or die(mysql_error());
}else{
mysql_query("DELETE FROM spion WHERE id='".$gn['id']."'") or die(mysql_error());
}
}
}
mysql_query("UPDATE cronjobs SET laatstekeer=NOW() WHERE naam='spion'");
?>
Nu werkt het echter nog steeds niet, als er 2 rijen in de database staan in de tabel spion wordt er op een of andere manier maar bij eentje deze query's uitgevoerd... What can I do?
Bij voorbaat dank voor de hulp!
Na 2 dagen toch een bumpje. Excuses hiervoor. Zie bovenstaande post. Bij voorbaat dank!
De loop van Yearupie:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$query = mysql_query("SELECT * FROM users WHERE munten < '0'");
while($row = mysql_fetch_assoc($query))
{
$sql = "INSERT INTO helpdesk (member, vraag) values('Cronjob', 'De speler ".$member['name']." had minder dan 0 munten.')";
$query = mysql_query($sql);
}
?>
$query = mysql_query("SELECT * FROM users WHERE munten < '0'");
while($row = mysql_fetch_assoc($query))
{
$sql = "INSERT INTO helpdesk (member, vraag) values('Cronjob', 'De speler ".$member['name']." had minder dan 0 munten.')";
$query = mysql_query($sql);
}
?>
De fout zit er in dat de result van de SELECT-query in de variabele $query overschreven wordt door de result van de INSERT-query. Dit is op te lossen door de vars in de loop een andere naam te geven.
Hier kom in namelijk nog niet uit, weet je wat ik hier kan doen...?
Bij voorbaat dank!