Wackamole Skrevet 10. januar 2008 Del Skrevet 10. januar 2008 Hei, jeg lurer på hvor jeg kan få tak i Seatmap til et lan party, eller hvor jeg kan lære det (tutorial), jeg har prøvd og lære meg via php.net, (imagecreate) men får det absolutt ikke til. Derfor lurer jeg på om dere vet hvor jeg kan få tak i bare seatmappen (det er det eneste jeg trenger)... Hilsen /.Fredrik Lenke til kommentar
grimjoey Skrevet 10. januar 2008 Del Skrevet 10. januar 2008 det er vel kanskje ikke det man starter med når man skal lære seg programmering. det er ikke så vrient, men det krever en god del tid, og du må tenke som en programmerer. vet om et system som ble skrevet for snart 10 år siden i php 3. tror ikke det er så mye å hente der men. Lenke til kommentar
Wackamole Skrevet 10. januar 2008 Forfatter Del Skrevet 10. januar 2008 Nei.. jeg har drevet med .php i godt over et år nå, har til og med et nybegynner kurs i det (*Skryte* ). Jeg driver og koder et CMS (Sånn "lære av mine feil" CMS), så skal jeg lage en side for et dataparty som foregår på skolen min, derfor trenger jeg seatmappen... Har mest lyst og lære dette, men vis det finnes et ferdig script, så er det helt i orden... /.Fredrik Lenke til kommentar
grimjoey Skrevet 10. januar 2008 Del Skrevet 10. januar 2008 (endret) lag et skjema som indikerer plassene. det bør være baser på et rutenett. prøv å tenk det at du tegner på rutepapir og du kan kun tegne plasser i rutene. prøv å få det til å likne mest mulig på de virkelige plassene. post et bilde når du er ferdig så kan jeg forsøke å hjelpe deg videre. du må også fortelle meg hvilke egenskaper en plass skal ha. for eksempel (tom, reservert, opptatt, betalt, admin) Endret 10. januar 2008 av grimjoey Lenke til kommentar
Wackamole Skrevet 10. januar 2008 Forfatter Del Skrevet 10. januar 2008 (endret) Nå ble jeg usikker, mener du at jeg skal lage et skjema som i "form" eller bare rutene som koden skal være i? Egenskaper: Tom, Opptatt, Betalt og Admin (VIP) Endret 10. januar 2008 av Famen Lenke til kommentar
grimjoey Skrevet 10. januar 2008 Del Skrevet 10. januar 2008 et seat map er en oversikt av sitteplasser i et dataparty hvor man ser hvilke plasser som er opptatt og man kan klikke for å holde av plass også videre. er det dette du mener du vil lage? i så fall trenger du først å fremst å vite hvordan plassene ser ut i fugleperspektiv. en oversikt over plassene med andre ord. Lenke til kommentar
Wackamole Skrevet 10. januar 2008 Forfatter Del Skrevet 10. januar 2008 ja, men skal jeg kode dette, eller bare lage et bilde?.. Tusen takk ska du ha for og hjelpe meg med dette forresten... Lenke til kommentar
grimjoey Skrevet 10. januar 2008 Del Skrevet 10. januar 2008 (endret) bilde edit: det er bare for å ha en visuell referanse. koden vil generere bildet som kommer til å blir brukt til slutt edit: du trenger en tabell: (bruker_id type må du ha lik som brukertabellen din) CREATE TABLE kalldenhvaduvil (id_x INT(3) NOT NULL, id_y INT(3) NOT NULL, bruker_id INT(11) DEFAULT NULL, type INT(1) DEFAULT NULL, betalt BIT(1) DEFAULT NULL, PRIMARY KEY(id_x, id_y)); så sier vi at: type: 0 er Tom 1 er Opptatt 2 er Admin (VIP) edit: typo Endret 10. januar 2008 av grimjoey Lenke til kommentar
grimjoey Skrevet 10. januar 2008 Del Skrevet 10. januar 2008 (endret) dobbelpost Endret 10. januar 2008 av grimjoey Lenke til kommentar
Wackamole Skrevet 10. januar 2008 Forfatter Del Skrevet 10. januar 2008 (endret) Skal du bare ha Rutenettet, eller plassene og alt? EDIT: Nå har jeg fikset rutenett med plasser og hele pakken, du trenger ikke og bry deg om de blå og grå plassene, siden disse ikke vil bli brukt. De oransje plassene er admin (vip) og de grønne er vanlige plasser. (Det skal være flere plasser, men vil lære litt, så tenkte jeg kunne ordne dem selv) Endret 10. januar 2008 av Famen Lenke til kommentar
grimjoey Skrevet 10. januar 2008 Del Skrevet 10. januar 2008 (endret) har du plasser som en hestesko for eksempel legger du alle plassene inn i tabellen med koordinatene som id_x og id_y. prikken ligger på koordinat 1,2. for å legge inn plassen i tabellen bruker man INSERT INTO kalldenhvaduvil(id_x, id_y) VALUES(1, 2); edit: skjema og kode for å legge inn plasser da fikser du sikkert selv om du trenger det. er du interesert i å skrive objekt orientert (ikke min sterkeste side men kan bli interesant)? jeg vil gjøre minst mulig og la deg prøve å finne ut av ting selv. du må legge inn noen plasser i tabellen, lage kode for å endre status på en plass. legge til eller fjerne bruker (for å legge en bruker til en plass setter du bare bruker_id i plass tabellen til en bruker id i brukertabellen). kode for å tegne selve plassoversikten, markere plassene med farger avhengig av status, og lage areamap for at brukerene skal kunne klikke og bestille plass. alt dette etter hva du selv ønsker. for å tegne plassene spesifiserer du høyde og bredde på hver enkel plass. koordinatene i plass tabellen er en referanse til det øverste venstre hjørnet på en plass. $seat['width'] = 40; // oppgis i pixler $seat['height'] = 30; først må vi regne ut bredden og høyden på det kommende oversikts bildet. $res = mysql_query( 'SELECT MAX(id_x), MAX(id_y) FROM kalldenhvaduvil;' ); $row = mysql_fetch_row( $res ); $seat['totalwidth'] = $seat['width'] * $row[0]; $seat['totalheight'] = $seat['height'] * $row[1]; $img = imagecreatetruecolor( $seat['totalwidth'], $seat['totalheight'] ); $white = imagecolorallocate($img, 255, 255, 255); $black = imagecolorallocate($img, 0, 0, 0); imagefilledrectangle($img, 0, 0, $seat['totalwidth'], $seat['totalheight'], $white); // så må vi tegne firkanter for hver aktuelle plass. først hente database info $res = mysql_query( 'SELECT * FROM kalldenhvaduvil;' ); while ( $row = mysql_fetch_assoc( $res ) ) { $seats[] = $row; } foreach ( $seats as $s ) { $displace_x = $s['id_x'] * $seat['width']; $displace_y = $s['id_y'] * $seat['height']; imagerectangle( $img, $displace_x, $displace_y, ( $displace_x + $seat['width'] ), ( $displace_y + $seat['height'] ), $black); } ved nermere ettertanke kommer vi til å oversette koordinater fra tabellen til pixler ofte, så vi bør skrive en funksjon for det. men du må gjerne teste denne koden og avslutte med: header('Content-type: image/gif'); imagegif($img); imagedestroy($img); og se om det blir noe ut av det. ... legger meg nå, men titter innom i morgen. Endret 12. januar 2008 av grimjoey Lenke til kommentar
Wackamole Skrevet 10. januar 2008 Forfatter Del Skrevet 10. januar 2008 (endret) Oppdaterte posten over, er det greit, trenger du noe mer?.. EDIT: imagecreaterectangel() finnes ikke.. er det imagerectangle() du mener? EDIT2: Fikk et stort svart bilde Endret 10. januar 2008 av Famen Lenke til kommentar
grimjoey Skrevet 10. januar 2008 Del Skrevet 10. januar 2008 (endret) du har helt rett. har rettet det nå pluss et par andre feil. sikkert flere også. har ikke testet koden. det holder det bildet du lagde. jeg lagde et (styggere ) selv for å illustrere hvordan plassene skal legges inn i tabellen. jeg legger meg nå. er det noe du ikke forstår som jeg kan forklare nermere? håper du kommer litt i gang med dette og finner ut av en del ting selv. du kan forsøke å skrive en funksjon som oversetter koordinater fra tabellen til koordinater i bildet (koden finnes i innlegget mitt, du må bare forstå den og gjøre den om til en funksjon) // konseptkode function translate_seat_to_img(seat_x, seat_y, seat_width, seat_height) { return array(image_x, image_y); } Endret 10. januar 2008 av grimjoey Lenke til kommentar
Wackamole Skrevet 10. januar 2008 Forfatter Del Skrevet 10. januar 2008 Nå har jeg kommet så langt, jeg tror ikke at function jeg laget er rett! (det er garantert). men dette er det jeg er kommet til før jeg legger meg.. seatmap.php Klikk for å se/fjerne innholdet nedenfor <?php header('Content-type: image/gif'); // oppgis i pixler $seat['width'] = 30; $seat['height'] = 30; include_once("db_connect.php"); $res = mysql_query( 'SELECT MAX(id_x), MAX(id_y) FROM seatmap' ); $row = mysql_fetch_row( $res ); $seat['totalwidth'] = $seat['width'] * $row[0]; $seat['totalheight'] = $seat['height'] * $row[1]; $img = imagecreatetruecolor( $seat['totalwidth'], $seat['totalheight'] ); $white = imagecolorallocate($img, 255, 255, 255); $black = imagecolorallocate($img, 0, 0, 0); imagefilledrectangle($img, 0, 0, $seat['totalwidth'], $seat['totalheight'], $black); // så må vi tegne firkanter for hver aktuelle plass. først hente database info $res = mysql_query( 'SELECT * FROM seatmap' ); while ( $row = mysql_fetch_assoc( $res ) ) { $seats[] = $row; } foreach ( $seats as $s ) { $displace_x = $s['id_x'] * $seat['width']; $displace_y = $s['id_y'] * $seat['height']; imagerectangle( $img, $displace_x, $displace_y, ( $displace_x + $seat['width'] ), ( $displace_y + $seat['height'] ), $black); } function seat_img($displace_x, $displace_y, $seat_width, $seat_height) { return array($image_x, $image_y); } ?> <?php imagegif($img); imagedestroy($img); ?> Lenke til kommentar
grimjoey Skrevet 10. januar 2008 Del Skrevet 10. januar 2008 den funksjonen gjør nok ikke mye annet en å gi feilmelding. det var meningen at du skulle fylle ut koden inni. jeg bare skrev et hint om hva du trenger som input og hva output bør være. du får pønske litt på det så snakkes vi i morgen. Lenke til kommentar
Wackamole Skrevet 10. januar 2008 Forfatter Del Skrevet 10. januar 2008 (endret) ok, var egentlig vill gjetting, har aldri laget funksjoner før... men skal gruble og se om jeg finner noe ut... Endret 10. januar 2008 av Famen Lenke til kommentar
grimjoey Skrevet 11. januar 2008 Del Skrevet 11. januar 2008 (endret) en funksjon er egentlig bare en måte å pakke inn kode på. har du en kode du kommer til å bruke flere steder kan det være lurt å skrive en funksjon. for eksempel dersom du alltid skriver mysql_query( 'etterllerannet' ) or die( mysql_error() ); kan du lage en funksjon som gjør at du slipper å gjenta det samme hele tiden. function my_query( $sql ) { $res = mysql_query( $sql ) or die( mysql_error() ); return $res; } senere da kan du skrive my_query('ettellerannet'); og den vil gjøre det samme som mysql_query( 'etterllerannet' ) or die( mysql_error() ); en funksjon kan enten være uten argumenter function connect() { $link = mysql_connect( 'host', 'username', 'password' ); mysql_select_db( 'databasenavn', $link ); return $link; } eller den kan være med argumenter function connect( $host, $username, $password, $dbname ) { $link = mysql_connect( $host, $username, $password ); mysql_select_db( $dbname, $link ); return $link; } du kan også sette standard verdier i argumenter som blir gjeldende dersom ingen argumenter er gitt når funksjonen eksekveres. function connect( $host = 'localhost', $username = 'root', $password = 'rewt' , $dbname = 'default' ) { $link = mysql_connect( $host, $username, $password ); mysql_select_db( $dbname, $link ); return $link; } return er en spesialfunksjon som kun gjelder inne i funksjoner. den bestemmer hva funksjonen skal returnere etter at den har eksekvert. funksjonen blir stoppet av return. kode som er etter return blir ikke eksekvert, så dersom du skal ha flere returns i en funksjon må du ha flow control i tillegg (if, elseif, else, .....) function foo( $bar ) { if ( $foo < 5 ) return 'mindre en fem'; elseif ( $foo > 5 ) return 'større en fem'; else return 'erlik 5'; } echo foo( 1 ); echo foo( 5 ); echo foo( 6 ); en annen ting verdt å nevne er noe som kalles scope. det handler om hvor en variabel er tilgjengelig. $variabel = 'test tekst'; function test() { echo $variabel; } test(); denne vil ikke virke fordi variabelen $variabel er definert utenfor funksjonen. for å få variabelen til å være tilgjengelig for funksjonen kan vi gjøre to ting. enten la den passere via et argument, eller spesifikt fortelle php at funksjonen skal benytte den variabelen. $variabel = 'test tekst'; function test($variabel) { echo $variabel; } test($variabel); eller: $variabel = 'test tekst'; function test() { global $variabel; // dette forteller php at funksjonen skal bruke variabelen $variabel som ligger utenfor funksjonen echo $variabel; } test(); det finnes unntak som kalles super_globals. dette er $_POST, $_GET, $_SERVER, $_FILES, $_SESSION osv... disse er tilgjengelig inne i funksjoner uansett. i php kan man også skrive funksjoner inne i funksjoner. jeg vet ikke om noe annet programmerings språk som tillater det. function a( $arg = null) { function b() { echo 'this is function b'; } if ( $arg ) b(); } b(); //fungerer ikke fordi den ligger inne i funksjon a(); a( true ); // vil skrive 'this is function b' til output. funksjoner inne i funksjoner kan kun brukes inne i funksjonen som holder funksjonene. edit: grunnen til at du får et sort bilde er at jeg skrev feil når jeg satt bakgrunnsfarge. endre $black til $white i imagefilledrectangle(); like under imagecreatetruecolor() du kan også endre på $width og $height. gjør de litt mindre så slipper bildet å bli så stort Endret 12. januar 2008 av grimjoey 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å