login  Naam:   Wachtwoord: 
Registreer je!
 Forum

rand() probleempje

Offline Warbringer - 18/01/2007 22:52 (laatste wijziging 19/01/2007 15:33)
Avatar van WarbringerOnbekend Beste mensen.
Ik wil als proef een kort spelletje maken.
Je krijgt een kaart voor je die bestaat uit 18 blokjes.
Er zijn 5 verschillende blokjes.

hout (1)
water (2)
ijzer (3)
gras (4)
klei (5)

Nu wil ik deze weergeven met PHP, das geen probleem natuurlijk MAAR... als iemand zijn account maakt dan wil ik natuurlijk hem een unique kaartje geven dus gebruikte ik het rand() commando.

  1. <?
  2. $vakje1 = rand(1,5);
  3. ?>


het probleem nu is, in my database slaat hij dingen op OOK als 0 (nul) en als 6 (zes)... maar ik geef aan dat hij 1 tot en met 5 mag gebruiken... kan iemand mij misschien uitleggen hoe dit komt, en of dat ik misschien beter een andere methode kan / moet gebruiken voor iets als dit?

14 antwoorden

Gesponsorde links
Offline timmie_loots - 18/01/2007 22:55
Avatar van timmie_loots PHP gevorderde Dat kan niet.

Je moet je hele script even geven, want er is vast iets anders fout.
Offline Warbringer - 18/01/2007 23:49 (laatste wijziging 18/01/2007 23:57)
Avatar van Warbringer Onbekend oke zal hem zo even erop zetten.
verder nog een vraagje.

  1. function veld_1()
  2. {
  3. if($fetch->veld_1 = "1")
  4. {
  5. print "3";
  6. }
  7. }


Wat is hier fout aan? de waarde 3 (drie) staat in mijn SQL table.
Of ik nu zeg als de waarde 1 is, of 2 of 3 of wat dan ook, hij print altijd 3 uit... terwijl als de waarde niet goed is hij niks moet doen.

Wat doe ik hier precies verkeerd nu?


ps. het script dat kijkt welke waarde het heeft en welk blokje weergegeven moet worden --->
http://www.plaatscode.be/3873/

dit is de (een stuk uit) pagina die het moet weergeven.
ik laat hier alleen de <table> zien waar ik het stukje heb.
http://www.plaatscode.be/3874/
Offline timmie_loots - 19/01/2007 00:02 (laatste wijziging 19/01/2007 00:03)
Avatar van timmie_loots PHP gevorderde Je moet dubbele = gebruiken. Op dit moment geef je $fetch->veld de hele tijd de waarde waarop je wilt controleren.

De code wordt dan zeau.

Daar moet je trouwens geen functie voor gebruiken, is niet echt een strak plan. Niet als je hem zo wilt gebruiken als ik hem interpreteer.
Offline Warbringer - 19/01/2007 01:27 (laatste wijziging 19/01/2007 01:41)
Avatar van Warbringer Onbekend dus een dubbele = teken?... raar had ik geprobeerd maar dan doet hij helemaal niks meer (geeft hij helemaal geen plaatje weer)... zal het nog eens overdoen haha dankjewel!

--- EDIT---

geprobeerd maar niks... kijk eens naar het resultaat op:
http://reignofv...G/game.php

met deze code: http://www.plaatscode.be/3876/
Offline Berten - 19/01/2007 06:29 (laatste wijziging 19/01/2007 06:30)
Avatar van Berten PHP beginner warbringer:

je functie veld_1() is nuteloos.
je print telkens een waarde gelijk aan die die je uit de database haalt.
  1. #
  2. <?php
  3. #
  4. // deze code zal het juiste veldje weergeven op de map van de speler zijn / haar dorpje
  5. #
  6. ...
  7. mysql_query("SELECT * FROM RoV_player_maps WHERE gebruikersnaam = 'Warbringer'") or die(mysql_error());
  8. #
  9. $fetch = mysql_fetch_object($query);
  10. $var = $fetch->veld_1;
  11. echo $var;
  12. ?>

Als je toch met je oude functie wil werken voor een reden, probeer dan eens dit:

  1. if($fetch->veld_1 == 1)


zonder quotes rond de 1 dus
Offline Kr4nKz1n - 19/01/2007 08:50
Avatar van Kr4nKz1n Onbekend Waarom gebruik je niet array_rand?

En daarnaast snap ik niks van je coding, ik zie tot nu toe nog geen verband, tussen wat je wilt, en je coding.
Offline pj_muller00 - 19/01/2007 09:01
Avatar van pj_muller00 PHP interesse Je code kan niet werken ...

$fetch->veld_1

kent hij niet in de functie, je zou er een globale var. van moeten maken.

Maar zeg gewoon ff wat je wilt, en ik script het wel even voor je.

Pj  
Offline Warbringer - 19/01/2007 12:43 (laatste wijziging 19/01/2007 12:52)
Avatar van Warbringer Onbekend super hehe, nou wat ik eigenlijk wou is het volgende:

Als de gebruiker een account maakt worden er 18 vakjes d.m.v. een rand() gemaakt (getal 1 t/m 5). Dit wordt in de SQL database opgeslagen. 1 = hout, 2 = klei, 3 = water enz enz enz...

Dat gaat allemaal perfect maar als de gebruiker inlogt, en zijn speel veld te zien krijgt dan moet het dus uit de sql gehaald worden.
Om lappen code te voorkomen wou ik dit met een function doen die in een extern bestand staat dat ik include / require.

Het is dus iets van, kijken welk getal id 1 heeft, is het 1 dan print plaatje hout, is het 2 dan print plaatje klei is het 3 dan print plaatje water... en zo voor alle 18 hokjes.

De hokjes zijn gesliced in Adobe Imageready en zijn dus in borders opgedeeld.

Dus in een extern .php bestand wou ik 18 functions maken, voor elk hokje een function die dus kijkt wat de waarde is, en dan het plaatje print.
Offline Berten - 19/01/2007 13:14
Avatar van Berten PHP beginner hoe heten de plaatjes voor die vakjes te vullen?
als je ze plaatje_x noemt waar x=1 voor hout, x=2 voor klei kan je het gemakkelijk zo doen

  1. $query = "select * from vakjes where username='dejuisteusername";
  2. $result = mysql_query($query);
  3. while($row=mysql_fetch_array($result)) {
  4. echo '<img src="plaatje_'.$row['plaatjeid'].'" alt="" />";
  5. }
Offline Warbringer - 19/01/2007 13:25 (laatste wijziging 19/01/2007 13:43)
Avatar van Warbringer Onbekend ja zo deed ik het precies hehe plaatje_1.gif plaatje_2.gif en zo doende voor elk soort..


mysql_fetch_array... dat het zelfde als mysql_fetch_object ?
en trouwens mijn code werkt perfect MAAR niet meer als ik hem
in een function zet... er was gezegt een 'global' function van maken zou dat een oplossing zijn denk je?.

Verder kijkt hij nu ook niet welk nummer id1 is, want bij elk account heeft id1 t/m id18 een andere waarden omdat de velden automatisch gegenereerd worden met het rand() commando zodat niet iedereen dezelfde kaart voor zijn neus krijgt 

het moet dus echt puur zijn bijvoorbeeld

  1. $usr_c = $_COOKIE['blablabla'];
  2.  
  3. $query = mysql_query("SELECT * FROM veldjes WHERE gebruikersnaam = '".$usr_c."'");
  4. $number = mysql_fetch_object($query)
  5.  
  6. if($number->veld_1 == 1)
  7. {
  8. echo "<img src=\"plaatjes\veld_1.gif\">";
  9. }
  10. if($number->veld_1 == 2)
  11. {
  12. echo "<img src=\"plaatjes\veld_2.gif\">";
  13. }


zoiets als dit, dus echt PER username kijkt hij van, (ik moet dan wel de code PER vakje erin zetten maar das geen probleem daarom wou ik 'eigenlijk' met functions werken via een include) id1 heeft welke waarde, ow die waarde! dan print ik dat plaatje...
Offline Kr4nKz1n - 19/01/2007 15:00
Avatar van Kr4nKz1n Onbekend Waarom niet gelijk $_COOKIE hernoemen naar $usr_c ?
En geberuik bovenaan even <? of <?php
Offline nemesiskoen - 19/01/2007 15:54
Avatar van nemesiskoen Gouden medaille

PHP expert
fetch_assoc/fetch_array is sneller als fetch_object.
En wat je daar doet, die 'if'-jes is nergens voor nodig. Lees Berten zijn post nog eens en doe dat eens een keertje.
Overigens bestaat de uitdrukking (in php dan toch) 'een function global maken' niet. Wat je wel kan doen is een variabele global maken, zodat deze beschikbaar wordt in de functie. Wat je ook zou kunnen doen is een argument meegeven, maar wat het beste is dat is doen wat Berten zegt.
Offline Warbringer - 19/01/2007 18:12 (laatste wijziging 20/01/2007 13:45)
Avatar van Warbringer Onbekend Heb ik nog niet echt geleerd haha, fetch_array is dus het zelfde als fetch_object alleen beter... net zoiets als

$_GET en $_POST waarbij POST beter is en print en echo waarbij echo beter is ?...
Offline Berten - 20/01/2007 15:58
Avatar van Berten PHP beginner functie:
(ik ga er van uit dat het veld waarin de ID van je pic wordt weergegeven veld1 heet?
anders moet je ff laten zien hoe je tabel veldjes is opgebouwd)

  1. function maakkaart($userid) {
  2. $query = mysql_query("select * from veldjes where gebruikersnaam = '".$userid."'");
  3. $return = "";
  4. while($row = mysql_fetch_array($query)) {
  5. $return .= '<img src="\plaatjes\veld_'.$row['veld_1'].'.gif" alt="" />';
  6. }
  7. return $return;
  8. }


functie aanroepen:
  1. echo maakkaart($usr_c);
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.237s