random nummer.
ik trek een nummer met rand(); bijv 1-50
ik stop de getrokken nummers in de database. dit sla ik op zoals dit ex: 1,2,3,4,5,6
en nu wil ik het zo hebben dat ie geen rand nummers meer pakt die al getrokken zijn..
weet iemand hoe ik dat het beste aan kan pakken ?
Gewijzigd op 01/01/1970 01:00:00 door Grizz
heeft het iets met kaarten te maken?
Doe het dan anders, maak een array van 1-50, die kan je "schudden"met shuffle.
Code (php)
En met array pop kan je een waarde uit de array halen, die er vervolgens niet meer in voorkomt.
zie: http://nl2.php.net/manual/en/function.array-pop.php
Quote:
Komen deze getallen in 1 record? Zo ja, dan is dat fout. In 1 record zet je 1 gegeven.dit sla ik op zoals dit ex: 1,2,3,4,5,6
Gebruik UNIQUE in de database (op de kolom waar de gegevens in staan) en je kunt nooit dubbele waardes opslaan. Je krijgt keurig een foutmelding retour van de database (1062 als ik het goed heb) wanneer je iets probeeert in de voeren dat al bestaat.
precies wat ik nodig had.
Gewijzigd op 01/01/1970 01:00:00 door Grizz
Kijk even naar dit voorbeeld:
EDIT:
Overigens was dit voordat ik array_pop() kende.
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
57
58
59
60
61
62
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
57
58
59
60
61
62
<?php
include ("verbinden.php");
// kaarten maken
$kaarten = range(1, 52);
srand((float)microtime() * 1000000);
// kaarten schudden
shuffle($kaarten);
// lege var voor de kaarten
$dbkaarten = "";
// een var maken met kaarten gescheiden door een komma
for($i=0;$i<=51;$i++){
$dbkaarten .= $kaarten[$i].",";
}
// laatste comma verwijderen
$lengtedb = strlen($dbkaarten);
$dbkaarten = substr($dbkaarten,0,$lengtedb-1);
// kaarten tellen (als het goed is 52)
$teller = explode(",",$dbkaarten);
$geteld = count($teller);
// kaarten delen naar speler
// speler bepalen
for ($j=1;$j<=4;$j++){
$spelerkaarten[$j] = "";
echo '<br>Speler ' . $j . ':';
// kaarten bepalen
for ($i=0;$i<=4;$i++){
$spelerkaarten[$j] .= $teller[$i].",";
echo "<img src=img/".$teller[$i].".jpg border=1> ";
}
// laatste comma verwijderen, kaarten in een string zetten
$lengte = strlen($spelerkaarten[$j]);
$spelerkaarten[$j] = substr($spelerkaarten[$j],0,$lengte-1);
// kaarten voor de speler weergeven
$kaartenspeler = explode(",",$spelerkaarten[$j]);
// lengte van de string met de kaarten voor de speler.
$speelkaartlengte = strlen($spelerkaarten[$j])+1;
$dbkaarten = substr($dbkaarten,$speelkaartlengte,$lengtedb);
//echo "<br>".$dbkaarten;
$teller = explode(",",$dbkaarten);
echo $spelerkaarten[$j]."<br>";
}
// een game gaan aanmaken.
$sql_spelers="INSERT INTO `games` (`dealer`,`kaarten`,`password`) VALUES ('jantje','".$dbkaarten."','wachtwoord');";
$query_spelers=mysql_query($sql_spelers) or die (mysql_error());
// de id pakken van de geïnserte data.
$gameid = mysql_insert_id();
// voor elke speler zijn kaarten wegschrijven.
for ($j=1;$j<=4;$j++){
$sql_spelers="INSERT INTO `spelers` (`gameid`,`spelernr`,`kaarten`) VALUES ('".$gameid."','".$j."','".$spelerkaarten[$j]."');";
$query_spelers=mysql_query($sql_spelers) or die (mysql_error());
}
?>
include ("verbinden.php");
// kaarten maken
$kaarten = range(1, 52);
srand((float)microtime() * 1000000);
// kaarten schudden
shuffle($kaarten);
// lege var voor de kaarten
$dbkaarten = "";
// een var maken met kaarten gescheiden door een komma
for($i=0;$i<=51;$i++){
$dbkaarten .= $kaarten[$i].",";
}
// laatste comma verwijderen
$lengtedb = strlen($dbkaarten);
$dbkaarten = substr($dbkaarten,0,$lengtedb-1);
// kaarten tellen (als het goed is 52)
$teller = explode(",",$dbkaarten);
$geteld = count($teller);
// kaarten delen naar speler
// speler bepalen
for ($j=1;$j<=4;$j++){
$spelerkaarten[$j] = "";
echo '<br>Speler ' . $j . ':';
// kaarten bepalen
for ($i=0;$i<=4;$i++){
$spelerkaarten[$j] .= $teller[$i].",";
echo "<img src=img/".$teller[$i].".jpg border=1> ";
}
// laatste comma verwijderen, kaarten in een string zetten
$lengte = strlen($spelerkaarten[$j]);
$spelerkaarten[$j] = substr($spelerkaarten[$j],0,$lengte-1);
// kaarten voor de speler weergeven
$kaartenspeler = explode(",",$spelerkaarten[$j]);
// lengte van de string met de kaarten voor de speler.
$speelkaartlengte = strlen($spelerkaarten[$j])+1;
$dbkaarten = substr($dbkaarten,$speelkaartlengte,$lengtedb);
//echo "<br>".$dbkaarten;
$teller = explode(",",$dbkaarten);
echo $spelerkaarten[$j]."<br>";
}
// een game gaan aanmaken.
$sql_spelers="INSERT INTO `games` (`dealer`,`kaarten`,`password`) VALUES ('jantje','".$dbkaarten."','wachtwoord');";
$query_spelers=mysql_query($sql_spelers) or die (mysql_error());
// de id pakken van de geïnserte data.
$gameid = mysql_insert_id();
// voor elke speler zijn kaarten wegschrijven.
for ($j=1;$j<=4;$j++){
$sql_spelers="INSERT INTO `spelers` (`gameid`,`spelernr`,`kaarten`) VALUES ('".$gameid."','".$j."','".$spelerkaarten[$j]."');";
$query_spelers=mysql_query($sql_spelers) or die (mysql_error());
}
?>
Heb ik ooit gemaakt, samen met Erik (ook van PHP-hulp)
@Frank
Ikweet dat het niet helemaal netjes is, qua normalisatie, maar het werkt wel goed zo.. ;)
@Grizz (weer)
$dbkaarten bevat na dit script nog de overgebleven waarden van de kaarten. (overigens was dit voor een 4 persoons pokerspel)
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
dankjewel ik bekijk het na het eten even :) bedankt voor je tijd!!
Haha, welke tijd, ik had dit zo al liggen hoor ;), maar toch graag gedaan.