Gå til innhold

Trenger hjelp med en PHP-oppgave!


Anbefalte innlegg

Jeg har et innleveringsoppgave som må gjøres:

 

I et lokalt idrettslag ønsker skøyteløperne seg et system som kan brukes til å registrere rundetider for treningsøkter. Man tenker seg et system med en enkel webside på en bærbar pc, hvor treneren kan registrere rundetider fortløpende for en utøver på isen.

 

Du skal lage en løsning for dette ved å skrive to skript som til sammen skal kunne brukes til å registrere rundetider for en utøver (person) ved en treningsøkt.

 

Det første skriptet skal brukes til å taste inn

 

•navn på utøveren (personnavn)

•dato for treningsøkten

•klokkeslettet treningsøkten starter

Det andre skriptet skal brukes til å taste inn rundetider for treningsøkten. Dette skriptet må kjøres på nytt for hver ny rundetid som skal registreres.

 

Skriptet for rundetider skal fungere på følgende måte:

 

•For hver ny runde skal utøverens navn og rundenummeret komme opp automatisk. Personnavnet må allerede være tastet inn ved hjelp av det første skriptet, mens rundenummeret skal vises automatisk og øke med 1 for hver runde som registreres.

 

•Ved siden av det nye rundenummeret skal treneren kunne taste inn rundetiden som flyt-tall.

 

 

•Når rundetiden er tastet inn skal treneren trykke 'submit query' og websiden skal da oppdateres med en liste over alle runder som er registrert siden treningsøkten startet.

 

 

•Websiden skal også vise utøverens navn og dato/klokkeslett for treningsøkten, samt beregne summen og gjennomsnittet av alle rundetidene for treningsøkten.

 

 

 

Jeg har boken "PHP, A beginners guide" skrevet av Vikram Vaswani. Jeg kan litt HTML fra før. Må je gha i++ med, isset, $_POST, litt matematikk ?

Lenke til kommentar
Videoannonse
Annonse

Mkay, du skriver hvem bøker du har, men ingenting om hvor bra erfaring du har med PHP. For meg og skape et slikt system er relativt enkelt. Det jeg hadde gjort er først og fremst dette:

 

(1) Planlegge

Du kan aldri planlegge nok! Det har jeg funnet ut feil vei.... For og være ærlig så er ikke beskrivelsen din helt perfekt. Jeg forstår at du skal skape et system for et idrettslag, hvorav de skal kunne registrere de forskjellige personene, treningene og rundetidene. Den måten du beskriver det på, veel, jeg liker den egentlig ikke. Hvis du må gjøre det slik på grunn av en skole oppgave eller lignende så er det vel og greit, men husk at det er ofte positivt og tenke utenfor boksen :)

Her er åssen jeg ville gjort det:

Jeg ville delt hele systemet i 3 deler.

1. Registrering av "elev"

2. Registrering av trening

3. Registrering av rundetider

 

La oss ta en ting om gangen, skal vi? ;)

1. Registering av elev:

Grunnet mangel på bedre ord så bruker jeg elev, anyways. Her lager vi et simpelt system som enten legger til informasjon i en database, eller oppdaterer den. Har du ingen erfaring med databaser så skal jeg gi deg noen pointers, men jeg antar at du har det.

 

Her har du 3 sider. Du har en side som lister alle "elevene", en hvor du kan legge til en ny elev og en hvor du kan oppdatere en elev. (Sletting teller ikke, da dette gjøres med PHP også bare redirecter du til "Overview" av elever.)

2. Registering av trening:

Her registerer du de som har vært med på en trening. Her bruker du også databaser, og gjerne en Array. Feks så kan oppsettet være slik:

 

Table: treninger

---------------------------------

ID: (11)int, auto_increment, primary key

Dato: date

Deltakere: text

 

I dato så plasserer vi datoen ved hjelp av ISO format. (YYYY-MM-DD)

I deltagere så plasserer vi en serialized Array med alle deltagere.

 

Design messig så har du en side for og lage ny trening og velge deltagere, en side hvor du har en liste med alle treningene også en "trenings overview" hvor du ser treningsdatoen, deltagere og gjennomsnittlige rundetider feks. I en tabell.

3. Registrering av rundetid:

Etter du har registert en trening, så skal du kunne registere disse rundetidene. Disse plasseres da også i en database selvfølgelig, sånn at de er lett tilgjenglige. Disse burde registeres i ISO 8601 format, som er HH:MM:SS men siden jeg antar at rundetidene er under en time, så holder det med og registere MM:SS også bare legger du til 00: forran. ( $rundetid = "00:" . $registertRundetid; )

 

Tabel oppsettet ditt burde være noe ala dette:

 

Tabel: Rundetid

------------------------------------------------

ID: (11)int, auto_increment, primary key

deltagerID: (11)int

treningID: (11)int

rundetid: (255)varchar

 

Deltager ID er ID fra "elev" tabellen.

Trening ID er ID fra trenings tabellen.

rundetiden er den som treneren skriver in. Jeg er ikke helt sikker på om MySQL har noen TIME funksjon, men hvis dne har det så bruker du det. :)

 

--------------------------------------------------------------------------------------------------------------------

 

Hva matta angår så er ikke det allverdens. Du bare kombinerer noen funksjoner.

 

http://snipplr.com/view/16089/convert-hhmmss-to-seconds/

^ Da får du det i sekunder :)

Så med sekunder så er det bare og dele det på antall rundetider registrert, noe som du kan få fra mysql_num_rows()

Så er det bare og bruke outputten du får der, som da vil være i sekunder og revesere den tilbake til hh:mm:ss :)

http://snipplr.com/view/4688/convert-seconds-to-hhmmss/

 

----------------------------------------------------------------------------------------------------------------------

Sånn, det burde gi deg en pekepin på hva du må gjøre. Bare og spør om du har noen videre spørsmål :)

  • Liker 1
Lenke til kommentar

Det var ikke jeg som skrev det, men NKI som gjorde det.

 

Altså, jeg må bruke Array, isset, i++, løkker ?

NITH, Første året? :p

 

Blant annet, ja. Altså, det jeg vet du vil få bruk for er:

Array

Serialize

Unserialize

mysql_connect, mysql_select_db, mysql_query, mysql_fetch_array, mysql_num_rows

isset $_POST og $_GET

Switch / If Else

 

Serialize / Unserialize for og legge alle deltagerne i en Array som du kan sende i DB.

 

$i++; og løkker/while er vel så som så. Altså, $i++ får du ikke bruk for i dette prosjektet, eller, du kan bruke det, men det er smartere og bruke foreach eller while.

 

[i]while($row = mysql_fetch_array($query)) {

}[/i]

 

feks.

 

Switch bruker du for og få den standard index.php?action=et eller annet.

 

Da bruker du

 

switch($_GET["action"])
{
case "ny_bruker":
funksjon();
break;

case "endre_bruker":
nyFunksjon();
break;

case "slett_bruker":
enAnnenFunksjon();
break;
}

 

Hvis du er en person som lærerer av og lese kildekode, så burde du studere Raid Planners til feks WoW. De har noen lignende features for hva du planlegger og gjøre :) Husk at, som en programmør så finnes det 100 løsninger til et problem, du må finne den som er riktig for deg.

Lenke til kommentar

Hva som er enkelst for deg er nødvendigvis ikke hva som er enklest for meg :) Det jeg prøver og si er at en hver person har forskjellig måte og kode på, du må finne din. Nå kan jeg ikke akkurat si jeg forsto hva du mente med "flyttal" og "do og while loop". Presenter et eksempel så skal jeg gi deg et bedre svar :)

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å
×
×
  • Opprett ny...