Iris_L Skrevet 22. mars 2007 Del Skrevet 22. mars 2007 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å.. 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
EirikO Skrevet 22. mars 2007 Del Skrevet 22. mars 2007 (endret) 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 22. mars 2007 av EirikO Lenke til kommentar
Iris_L Skrevet 22. mars 2007 Forfatter Del Skrevet 22. mars 2007 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 Hehe.. Lenke til kommentar
Iris_L Skrevet 23. mars 2007 Forfatter Del Skrevet 23. mars 2007 Ble bare rot når jeg prøvde meg, så jeg tror at jeg skal trå pent tilbake her 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
Peter Skrevet 23. mars 2007 Del Skrevet 23. mars 2007 (endret) 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 23. mars 2007 av Nazgul Lenke til kommentar
Iris_L Skrevet 23. mars 2007 Forfatter Del Skrevet 23. mars 2007 Nei, jeg har en felles for alle dyr. Slik ser den ut: Lenke til kommentar
Gjest Slettet+142 Skrevet 23. mars 2007 Del Skrevet 23. mars 2007 (endret) 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 23. mars 2007 av Slettet+142 Lenke til kommentar
Peter Skrevet 23. mars 2007 Del Skrevet 23. mars 2007 Legg født inn i den tabellen du har da, og sett default verdi til 0. Da vil scriptet fortsatt fungere dersom du sammenligner tiden med datoen idag. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå