Gå til innhold

Modifisere funksjon / utsette en handling litt


Anbefalte innlegg

Jeg har en parringsfunksjon på hjemmesiden min, og dette er snakk om dyr, ikke noe annet ;) Slik det fungerer pr. dags dato så får eierene babyene med en gang, men jeg vil gjerne utsette ventetiden i et par tre dager, slik at dyret som blir parret opp går gravid i tre dager før babyen kommer. Jeg finner ikke heeelt ut hvordan jeg gjør dette, så jeg ville satt pris på om noen her kunne hjelpe meg litt i gang. Jeg er som sagt før ikke helt stødig i php, men jeg prøver å lære hver eneste dag. Har kjøpt en del bøker, men har ikke fått lest noe særlig i dem i og med at vi er midt oppi flyttekaos nå.. :dontgetit:

 

Uansett, her er litt/mesteparten av parringskoden:

 

elseif(isset($_GET['ikketillatparing'])) {
   mysql_query("UPDATE dyr_dyr SET kanpares = '0' WHERE id LIKE '" . $_GET['id'] . "'");
   print "<h1>Ikke tillat paring</h1><hr>\nParing av dette dyret er ikke lenger tillatt.";
 	}
 	elseif(isset($_GET['tillatparing'])) {
   if(is_numeric($_POST['pris'])) {
   	$pris = round($_POST['pris'], 0);
   	if($pris < 0) {
     topp("Tillat paring");
     print "<h1>Error</h1><hr>\nIkke prøv å jukse.";
     bunn();
   	}
   	mysql_query("UPDATE dyr_dyr SET kanpares = '1' WHERE id LIKE '" . $_GET['id'] . "'");
   	mysql_query("UPDATE dyr_dyr SET paringspris = '" . $pris . "' WHERE id LIKE '" . $_GET['id'] . "'");
   	print "<h1>Tillat paring</h1><hr>\nParing av dette dyret er nå tillatt.";
   }
   else {
   	print "<h1>Tillat paring</h1><hr>\n<form action=\"dyr.php?tillatparing&id=" . $_GET['id'] . "\" method=\"post\">\n<strong>Pris:</strong> <input type=\"text\" name=\"pris\" size=\"22\" /><br /><br /><input type=\"submit\" value=\"Tillat paring\" /></form>";
   	bunn();
   }
 	}
 	
 	elseif(isset($_GET['par'])) {
   if(dyr_alder($hent['datotid']) < 1 || $hent['datotid'] == 0) {
   	print "<h1>Ikke gammel nok</h1><hr>\n";
   	print $hent['navn'] . " må være minst 1 år for å kunne pares.";
                   print "<br><br>Gå tilbake til <a href=\"bruker.php\">brukersiden</a> din.";
   	bunn();
   }
   if(isset($_POST['dyr'])) {
   	$sqlDyrBruker = mysql_query("SELECT bruker,paringspris FROM dyr_dyr WHERE id LIKE '" . $_POST['dyr'] . "' AND kanpares LIKE '1' LIMIT 1");
   	$dyr = mysql_fetch_array($sqlDyrBruker);
   	$paringspris = $dyr['paringspris'];
   	if(mysql_num_rows($sqlDyrBruker) < 1) {
     print "<h1>Kan ikke pares</h1><hr>\nDyret finnes ikke eller kan ikke pares.";
                       print "<br>Gå tilbake til <a href=\"bruker.php\">brukersiden</a> din.";
     bunn();
   	}
   	if($dyr['bruker'] != brukerID) {
     $pengerigjen = brukerPenger - $paringspris;
     if($pengerigjen < 1) {
     	print "<h1>Ikke nok penger</h1><hr>\nDu har ikke nok penger til å pare dette dyret.";
                           print "<br>Gå tilbake til <a href=\"bruker.php\">brukersiden</a> din.";
     	bunn();
     }
   	}
   	
   	if(isset($_POST['navn']) && strlen(trim($_POST['navn']))>2) {
     mysql_query("UPDATE dyr_dyr SET navn = '" . $_POST['navn'] . "' WHERE id LIKE '" . $_POST['id'] . "' LIMIT 1");
     print "<h1>Paring</h1><hr>\n";
     print "Paringen ble utført og du kan se " . $_POST['navn'] . " på <a href=\"bruker.php\">brukersiden din</a>. Husk å ta godt vare på den lille.<br><br>
     Babyene er ofte svake og sårbare de første dagene etter fødselen, så pass ekstra godt på at  " . $_POST['navn'] . " har det bra.";
     bunn();
   	} 
   	
   	if($dyr['bruker'] != brukerID) {
     mysql_query("UPDATE dyr_brukere SET penger = '" . $pengerigjen . "' WHERE id LIKE '" . brukerID . "' LIMIT 1");
     $eier = mysql_fetch_array(mysql_query("SELECT bruker FROM dyr_dyr WHERE id LIKE '" . $_POST['dyr'] . "' LIMIT 1"));
     $eierPenger = mysql_fetch_array(mysql_query("SELECT penger FROM dyr_brukere WHERE id LIKE '" . $eier['bruker'] . "' LIMIT 1"));
     $eierTotal = $eierPenger['penger'] + $paringspris;
     mysql_query("UPDATE dyr_brukere SET penger = '" . $eierTotal . "' WHERE id LIKE '" . $eier['bruker'] . "' LIMIT 1");
   	}
   	$art = mysql_fetch_array(mysql_query("SELECT art FROM dyr_dyr WHERE id LIKE '" . $_GET['id'] . "' LIMIT 1"));
   	$art = $art['art'];
   	
   	if(rand(0,1) == 0) {
        $kjonn = "gutt";
   	}
   	else {
        $kjonn = "jente";
   	}
   	
   	if(rand(0,100) == 50) {
     print "<h1>Paring</h1>\n";
     print "Noe gikk dessverre galt og babyen døde.<br /><br />\n";
     print "<a href=\"bruker.php\">Til brukersiden din</a>";
     bunn();
   	}
   	
   	$sqlfar = mysql_query("SELECT navn,poeng FROM dyr_dyr WHERE id LIKE '" . $_POST['dyr'] . "'");
   	$far = mysql_fetch_array($sqlfar);
   	$poeng = round($far['poeng'] / 10) + round($hent['poeng'] / 10);
       	

   	print "<h1>Paring</h1><hr>\n";
   	
   	if(isset($_POST['navn']) && strlen(trim($_POST['navn']))<=2) {
     echo "Paringen ble <i>ikke</i> fullført.<br>";
     echo "Navnet på dyret var ikke satt, eller var for kort (minst 3 tegn)!<br>Prøv igjen:<br><br>";
     $id = $_POST['id'];
     $kjonn = $_POST['kjonn'];

   	} else {
     mysql_query("INSERT INTO dyr_dyr VALUES('', 'Har ikke navn', '" . $art . "', '" . brukerID . "', '0', '<br><b>Mor:</b> " . $hent['navn'] . "<br>" . "<b>Far:</b> " . $far['navn'] .  "<br>" . "<b>Humør:</b> " . "', '" . $poeng . "', '" . $kjonn . "', '', '" . time() . "', '0', '', '')");
     $id = mysql_insert_id();
     mysql_query("UPDATE dyr_dyr SET sistparet = '" . time() . "' WHERE id LIKE '" . $_GET['id'] . "'");
   	}    	
   	//echo strlen(trim($_POST['navn']))." ".$_POST['navn']."<br>";
   	print "Det ble en <strong>" . $kjonn . "</strong>. Vær nøyaktig når du skriver inn navnet på babyen(e), det kan foreløpig ikke endres. Bilde legger du inn ved å trykke på <em>Endre bilde</em> ved dyret på brukersiden din.<br /><br />\n";
   	print "<form action=\"dyr.php?par&id=" . $_GET['id'] . "\" method=\"post\">\n";
   	print "<input type=\"hidden\" name=\"dyr\" value=\"" . $_POST['dyr'] . "\" />\n";
   	print "<input type=\"hidden\" name=\"kjonn\" value=\"" . $kjonn . "\" />\n";
   	print "<input type=\"hidden\" name=\"id\" value=\"" . $id . "\" />\n";
   	print "<strong>Navn:</strong><br />\n";
   	print "<input type=\"text\" name=\"navn\" size=\"30\" /><br /><br />\n";
   	print "<input type=\"submit\" value=\"Gi babyen navn\" />\n";
   	print "</form>";
   	bunn();
   }
   $sqlDyrInfo = mysql_query("SELECT art,kjonn FROM dyr_dyr WHERE id LIKE '" . $_GET['id'] . "' LIMIT 1");
   $dyrInfo = mysql_fetch_array($sqlDyrInfo);
   if($dyrInfo['kjonn'] == "gutt") $kjonn = "jente";
   if($dyrInfo['kjonn'] == "jente") $kjonn = "gutt";
   function paringsdyr($bruker) {
   	global $dyrInfo, $kjonn;
   	if($bruker == 1) {
     $sql = mysql_query("SELECT id,navn,bruker,poeng FROM dyr_dyr WHERE kanpares LIKE '1' AND bruker LIKE '" . brukerID . "' AND art LIKE '" . $dyrInfo['art'] . "' AND kjonn LIKE '" . $kjonn . "' AND id NOT LIKE '" . $_GET['id'] . "'");
   	}
   	else {
     $sql = mysql_query("SELECT id,navn,bruker,poeng,paringspris FROM dyr_dyr WHERE kanpares LIKE '1' AND bruker NOT LIKE '" . brukerID . "' AND art LIKE '" . $dyrInfo['art'] . "' AND kjonn LIKE '" . $kjonn . "'");
   	}
   	if(mysql_num_rows($sql) < 1) {
     print "Ingen dyr.<br />\n";
   	}
   	while($hent = mysql_fetch_array($sql)) {
     print "\t\t\t\t<input type=\"radio\" name=\"dyr\" value=\"" . $hent['id'] . "\" /> <strong>" . $hent['navn'] . "</strong>, <a href=\"bruker.php?bruker=" . $hent['bruker'] . "\">" . hentBrukerNavn($hent['bruker']) . "</a>, " . $hent['poeng'] . " poeng (kr " . $hent['paringspris'] . ")<br />\n";
   	}
   }
   print "<h1>Paring</h1><hr>\n";
   if(dyr_alder($hent['alder']) < 1) {
   	print "Dyret ditt må være over ett år for å kunne pares.";
   	bunn();
   }
   if(time() < 1209600 + $hent['sistparet']) {
   	print "Dyret ditt kan bare pares hver 14. dag.";
                   print "<br><br>Gå tilbake til <a href=\"bruker.php\">brukersiden</a> din.";
   	bunn();

Lenke til kommentar
Videoannonse
Annonse

Orket ikke lese noe særlig av koden, men hvis jeg forstår deg rett kanskje du kan gjøre noe sånt som dette:

 

Når noen parrer seg registrer du dette som "gravid" i databasen med en dato. Så kan du ha en "oppdaterings-fil" som blir kjørt som en jobb hvar natt (cron job) og oppdaterer databasen slik at de som har vært gravide over 3 døgn får barn.. Eller noe i den duren.

Endret av EirikO
Lenke til kommentar
Orket ikke lese noe særlig av koden, men hvis jeg forstår deg rett kanskje du kan gjøre noe sånt som dette:

 

Når noen parrer seg registrer du dette som "gravid" i databasen med en dato. Så kan du ha en "oppdaterings-fil" som blir kjørt som en jobb hvar natt (cron job) og oppdaterer databasen slik at de som har vært gravide over 3 døgn får barn.. Eller noe i den duren.

8209269[/snapback]

 

Takk :) Skal prøve å se litt på det, selvom jeg ikke forstod helt hvordan jeg skal gjøre det :blush: Hehe..

Lenke til kommentar

Ble bare rot når jeg prøvde meg, så jeg tror at jeg skal trå pent tilbake her :blush:

 

Er det noen som eventuellt kunne tenke seg å prøve, om jeg betaler litt for det? Jeg har ikke noe særlig å gi ut nå, men jeg får litt penger inn på konto 12 April som jeg kan avse litt av.

Lenke til kommentar

Jeg antar du har en tabell i databasen for "unger". Kan du ikke bare legge til et felt i denne tabellen som f.eks. "aktiv" eller "født" som settes som tre dager frem i tid når noen utfører en parring. Så kan du sjekke datoen på dette feltet mot dagens dato for å se om ungen er født eller ikke?

Endret av Nazgul
Lenke til kommentar
Gjest Slettet+142

du skal ikke legge inn feltene `parent`og `barn` altså? slik at du kan ved fødsel, legge id-en til moren inn i `parent` samtidig som at når moren føder, legges barnets id inn i `barn` (hvor du evt skiller med ",")?

det burde jo gå...?

 

da har du linken til mor/barn iallefall.

 

så bør du evt. ha en ekstern tabell for parings-tider og slikt..

Endret av Slettet+142
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...