Avatar billede free_help Nybegynder
30. maj 2011 - 22:32 Der er 14 kommentarer og
1 løsning

hente random text fra database.

Hej Eksperter.

Jeg skal bruge følgende funktion:

En terning med forskelige niveauer hentet fra databasen men vist som billede.

Man skal som bruger kunne trykke på en knap for at slå med en terning.

Terningen hentes fra databasen og kan have følgende niveauer:

Lvl 1= Random fra 1-4
Lvl 2= Random fra 1-5
Lvl 3= Random fra 1-6
Lvl 4= Random fra 1-7
Lvl 5= Random fra 1-8
Lvl 6= Random fra 1-9
Lvl 7= Random fra 1-10

Det givne tal skal så vises på skærmen som billede eks. img1.jpg, img2.jpg osv.
Avatar billede CCodam Nybegynder
31. maj 2011 - 00:11 #1
Hvorfor skal terningen hentes fra databasen?

Hvorfor ikke bruge javascripts:
Math.floor((math.random() * 9) + 1)

Eller PHP:
Rand(1, 10);

For at få et random tal imellem 1 og 10.
Avatar billede free_help Nybegynder
31. maj 2011 - 06:45 #2
Tak for 2 gode bud.

Det eneste den i virkeligheden skal hente fra databasen er brugerens "level".
Så hvis brugeren er lvl 1 har han den ene terning er han lvl 2 vil han have den anden terning osv.
Avatar billede majbom Novice
31. maj 2011 - 07:30 #3
så skal du jo hente intervallet ud, ud fra brugerens lvl og derefter bruge det til din randomizer
Avatar billede free_help Nybegynder
31. maj 2011 - 08:46 #4
Det har du sandsynligvis fuldstændig ret i :)
Men jeg er helt ny i php'ens verden, så hvis du gider lave den vil jeg gerne se koden til den funktion, så jeg kan se læse og forstå opbygningen.
Avatar billede CCodam Nybegynder
31. maj 2011 - 10:47 #5
Lad os sige at du har hevet spillerens level ud, som et tal, i variablen $lvl


<?php
// Opret en simpelt array, der indeholder værdierne, for terningens max
$arrLVL = array(4, 5, 6, 7, 8, 9, 10);

// Udregn ternings kast, og gem resultatet i variablen $terning
$terning = $Rand(1, $arrLVL[$lvl]);
?>

<!-- Vis det korrekte ternings billede -->
<img src="img<?php echo $terning; ?>.jpg" alt="Du slog <?php echo $terning; ?>" />
Avatar billede free_help Nybegynder
02. juni 2011 - 07:57 #6
Fedt!
Skal hjem og lege med det i aften.

Afslutningsvis gider så give et eks. på hvordan den kodestreng kunne se ud som henter informationen fra databasen? Når jeg har set et eksempel på hvordan den kan se ud kan jeg selv lære det og bruge det fremadrettet.

Mange tak for en rigtig god hjælp. Lav venligst også svar.
Avatar billede free_help Nybegynder
02. juni 2011 - 07:59 #7
(altså et eksempel på hvordan variablen $lvl bliver skabt)
Avatar billede CCodam Nybegynder
02. juni 2011 - 11:12 #8
Der er 4 steps

1. Forbinde til din MySQL server
http://www.php.net/ (...)

<?php
$link = mysql_connect('mysql_server', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db("mysql_database");
?>


2. Lave din forespørgelse til serveren.
http://php.net/ (...)

$result = mysql_query("SELECT lvl_column FROM users_table WHERE username_column = '" . $php_username_variable . "'");
if (!$result) {
    die('Invalid query: ' . mysql_error());
}


3. Gemme resultatet af din forespørgelse i variablen $lvl
http://php.net/ (...)

$lvl = mysql_fetch_array($result);


4. Luk forbindelsen til MySQL serveren

mysql_close($link);
Avatar billede free_help Nybegynder
02. juni 2011 - 21:04 #9
Jeg har for sjov for at teste din første kode sat $lvl = 5;
Men den giver en fejl.

Har du evt msn?
Avatar billede CCodam Nybegynder
02. juni 2011 - 22:28 #10
#9 Jeg har smidt dig en besked her på eksperten :)
Avatar billede Slettet bruger
03. juni 2011 - 11:51 #11
// define levels and dice limits

$levels = array(
1 => array(1, 4),
2 => array(1, 5),
3 => array(1, 6),
4 => array(1, 7),
5 => array(1, 8),
6 => array(1, 9),
7 => array(1, 10)
);

$lvl = 7;
$limits = $levels[$lvl]; // get dice limits
$val = rand($limits[0], $limits[1]); // get dice value using rand()

echo "<img src='terning_{$val}.jpg' alt='' />";
Avatar billede CCodam Nybegynder
03. juni 2011 - 12:14 #12
#11 Det er nogenlunde det samme du finder i post #5 :)
Avatar billede Slettet bruger
03. juni 2011 - 12:19 #13
Bortset fra at din kode (no offense :)) er lidt mere ugennemskuelig for en nybegynder, og den er forkert. Hvis man i din kode har $lvl = 1 vil dit maksimum være 5 og ikke 4, eftersom array(4, 5, 6..., 10) er det samme som array(0 => 4, 1 => 5, 2 => 6, ..., 6 => 10)
Avatar billede CCodam Nybegynder
03. juni 2011 - 13:40 #14
Jeg er enig i at den kommentering jeg lavede, kom til at forvirrer mere end den gavner :/

Derudover har du ret i at jeg har glemt at et array selvfølgelig starter på 0. Derfor skal man lige sætte en værdi end i dens placering. Derved:

$arrLVL = array(0, 4, 5, 6, 7, 8, 9, 10);

Jeg ser dog ikke grunden til at udvide arrayet til et multidimensional array, som du vælger at gøre.
Avatar billede Slettet bruger
03. juni 2011 - 13:46 #15
Godt vi er enige :-)

Et ord: Fleksibilitet. Jeg har tit haft opgaver der til at starte med kun skulle kunne kravle, men efter en uge skulle de også kunne gå ;) Bare en god vane at gøre sin kode skalerbar..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester