Avatar billede php-nybegynderen Nybegynder
04. april 2007 - 22:39 Der er 78 kommentarer og
1 løsning

tilfældige forespørgsler på ID

Jeg skal trække 16 ids ud, men når man lagrer rækker i sin database har de jo ikke altid ID fra 1-16. Mine forespørgsler er kun på id 1-16, kan man på nogen måde trække tilfældige 16 ids ud, men samtidig skal disse være forskellige?

Mine forspørgsler ser pt således ud:

$query1 = mysql_query("SELECT * FROM liga WHERE id = 1");
    $liga1 = mysql_fetch_array($query1);

Og så fortsætter de bare fra 1 til 16 i id.. Så forespørgsel nr. 16 ser således ud:

$query16 = mysql_query("SELECT * FROM liga WHERE id = 16");
    $liga16 = mysql_fetch_array($query16);

---

Kan det lade sig gøre ?

Hvis jeg skal prøve at formulere det anderledes, så skriv det i en kommentar..
Avatar billede php-nybegynderen Nybegynder
04. april 2007 - 22:41 #1
For lige at vise, hvad det går ud på:

<table width="100%">
<tr>
<td colspan="2"><p class="black"><b>Spillerunde1 - de_dust2</b> - fleksible spilletider</p></td>
</tr>
<tr>
<td><p class="black"><? echo $liga11['klan']; ?> <b>vs</b> <? echo $liga10['klan']; ?></p></td>
<td align="right"><p class="black"><i>Ikke spillet</i></p></td>
</tr>
<tr>
<td><p class="black"><? echo $liga7['klan']; ?> <b>vs</b> <? echo $liga9['klan']; ?></p></td>
<td align="right"><p class="black"><i>Ikke spillet</i></p></td>
</tr>
<tr>
<td><p class="black"><? echo $liga1['klan']; ?> <b>vs</b> <? echo $liga6['klan']; ?></p></td>
<td align="right"><p class="black"><i>Ikke spillet</i></p></td>
</tr>
<tr>
<td><p class="black"><? echo $liga3['klan']; ?> <b>vs</b> <? echo $liga14['klan']; ?></p></td>
<td align="right"><p class="black"><i>Ikke spillet</i></p></td>
</tr>
<tr>
<td><p class="black"><? echo $liga16['klan']; ?> <b>vs</b> <? echo $liga5['klan']; ?></p></td>
<td align="right"><p class="black"><i>Ikke spillet</i></p></td>
</tr>
<tr>
<td><p class="black"><? echo $liga12['klan']; ?> <b>vs</b> <? echo $liga2['klan']; ?></p></td>
<td align="right"><p class="black"><i>Ikke spillet</i></p></td>
</tr>
<tr>
<td><p class="black"><? echo $liga15['klan']; ?> <b>vs</b> <? echo $liga13['klan']; ?></p></td>
<td align="right"><p class="black"><i>Ikke spillet</i></p></td>
</tr>
<tr>
<td><p class="black"><? echo $liga8['klan']; ?> <b>vs</b> <? echo $liga4['klan']; ?></p></td>
<td align="right"><p class="black"><i>Ikke spillet</i></p></td>
</tr>
</table>




-----


$liga efterfuldt af tal er det ID som "klanen" har i databasen.. Men det skal somsagt gøres "tilfældigt", men samtidig skal det ikke kunne ændre sig, det skal tildeles så snart man bliver tilføjet i databasen, og så skal det ellers være "absolut" resten af tiden!
Avatar billede johan.o Nybegynder
05. april 2007 - 00:36 #2
Okay, som jeg forstår vil du have 16 tilfældige rækker fra en database, disse skal så parres i 8 par, og denne parring skal gemmes 'for evigt'.....right ?

Der er vist noget med at denne query -->

SELECT klan FROM liga ORDER BY RAND() LIMIT 0,16

IKKE altid levere et random svar....derfor kunne dette måske være en løsning -->

$klan=array();
$q=mysql_query("SELECT klan FROM liga");
$nr=mysql_num_rows($q);
for($i=0; $i<16; $i++) {
$r=mt_rand(1, $nr);
mysql_seek_data($q, $r);
$qr=mysql_fetch_assoc($q);
if(array_search($qr[klan], $klan)) {
  $i--; }
else {
  $klan[$i]=$qr[klan]; } }

Ikke testet så muligvis er der syntaks problemer :), ideen er -->

Hele tabellen vælges.
En løkke startes og gentages 16 gange.
I løkken findes en tilfældig værdi mellem 1 og antallet af rækker.
Pointeren sættes til den tilfældige valgte række.
Hvis klan værdien fra rækken ikke er i arrayet i forvejen fyldes værdien i arrayet klan.
Hvis klan værdien er i arrayet i forvejen sættes løkke tælleren $i en tilbage.

Så kan du f.eks. gemme de 16 værdier i tabellen samtidig med at brugeren tilføjes. Da rækkefølgen er tilfældig burde du altid kunne lave ovenstående tabel ved blot at parre klan[1] med klan[2], klan[3] med klan[4] osv osv....

Lad høre om det kan bruges :)

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
05. april 2007 - 11:19 #3
Det lyder rigtigt.

At jeg ikke helt forstår det, fordi jeg ikke er så god (endnu forhåbentlig) er noget andet.

www.xg-league.dk

For lige at fastslå om det er samme "mål" du har med dit PHP, kan du se om resultatet vil se sådan ud, som på hjemmesiden ovenover.
Avatar billede php-nybegynderen Nybegynder
05. april 2007 - 11:19 #4
Avatar billede johan.o Nybegynder
05. april 2007 - 13:11 #5
Ja målet er det samme :), om koden så levere varen må du fortælle mig når du har testet :)

<?php

connect to database !!

$klan=array();
$q=mysql_query("SELECT klan FROM liga");
$nr=mysql_num_rows($q);
for($i=0; $i<16; $i++) {
$r=mt_rand(1, $nr);
mysql_seek_data($q, $r);
$qr=mysql_fetch_assoc($q);
if(array_search($qr[klan], $klan)) {
  $i--; }
else {
  $klan[$i]=$qr[klan]; } }

$output="<html><body><table>";

for($i=0; $i<count($klan); $i++) {
$output.="<tr><td>".$klan[$i]."</td><td>vs</td><td>".$klan[++$i]."</td></tr>"; }

$output.="</table></body></html>";

?>

Måske dette leverer et eller andet resultat du kan bruge :)

Mvh. Johan
Avatar billede johan.o Nybegynder
05. april 2007 - 13:12 #6
Oups mangler lige --> echo $output; i slutningen.

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
06. april 2007 - 18:01 #7
mysql_seek_data($q, $r);

Virker ikke..

Fatal error: Call to undefined function: mysql_seek_data() in /customers/xg-league.dk/xg-league.dk/httpd.www/kampe.php on line 8
Avatar billede johan.o Nybegynder
06. april 2007 - 18:58 #8
Ja okay, den hedder mysql_data_seek() istedet, så prøv at rette det.

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
08. april 2007 - 18:58 #9
Det er faktisk noget af det rigtige der kommer ud :)

Men det skal jo være hvor alle møder alle på 15 runder.. Der er altså 16 hold og de møder hver af de 15 andre hold.

Men umiddelbart har du fat i noget..

www.xg-league.dk/?s=kampe
Avatar billede johan.o Nybegynder
08. april 2007 - 21:24 #10
Jeg er ikke helt klar over hvad du mener ? Skal de 16 deltagere gemmes og bruges igen senere ? Skal alle møde alle med det samme ?

De fejl der kommer er det muligt du kan rette ved at lave denne rettelse -->

$r=mt_rand(0, --$nr);

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
10. april 2007 - 17:09 #11
Det begynder at blive for kompliceret.

Se bare alle fejlene på siden :(
Avatar billede johan.o Nybegynder
10. april 2007 - 18:18 #12
He he..ja fejl kan man altid finde..men mon ikke vi finder en løsning også :)

Det lader til at værdien af $r er noget andet end vi forventer, så skyd denne linje ind efter mt_rand linjen -->

echo "<pre>Værdi : ".$r."</pre>";

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
10. april 2007 - 19:04 #13
Den er skudt ind nu :)
Avatar billede johan.o Nybegynder
10. april 2007 - 19:14 #14
Det er da også helt håbløst det jeg har lavet :)

Byt det her -->

$nr=mysql_num_rows($q);
for($i=0; $i<16; $i++) {
$r=mt_rand(1, --$nr);

ud med det her -->

$nr=mysql_num_rows($q)-1;
for($i=0; $i<16; $i++) {
$r=mt_rand(1, $nr);

Lad bare echo statement være så vi kan se resultatet.

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
10. april 2007 - 19:19 #15
Det er gjort nu.. Jeg ser bare med bange anelser, fordi jeg også skal have lavet, så jeg kan rette resultaterne senere :/
Avatar billede johan.o Nybegynder
10. april 2007 - 19:21 #16
Sådan der. Så fik vi denne del til at virke :)

Så kan du godt slette echo statement'en fra tidligere så vi slipper for alle de ekstra rækker.

Det er så her du bliver nød til at forklare mig hvad det er der skal ske fremover :)

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
10. april 2007 - 19:25 #17
Så er den slettet.

Resultatet skal sådanset bare være således:
www.xg-league.dk/?s=kampoversigt

Altså. Der er 16 hold, der skal møde hinanden ÉN gang hver, og de skal ikke opstå mere en ÉN gang i hver spillerunde, så derfor kan det der indtil videre ikke gå, fordi der f.eks. er 4 x IGame bare i den vi har lavet nu. Men jeg kan overhovedet ikke forstå, hvordan de er opstået.

Men ja, der skal være 15 x 8 kampe, hvor alle møder alle..

Som sagt så skal jeg senere kunne lave et "update" system, så jeg selv kan indtaste resultater osv., så jeg er ret meget på bar bund, men jeg sætter virkelig pris på alt den hjælp du giver mig :)
Avatar billede johan.o Nybegynder
10. april 2007 - 19:33 #18
Hm, ja det ser lidt mærkeligt ud ?..tænker....
Avatar billede php-nybegynderen Nybegynder
10. april 2007 - 19:38 #19
Hmm og endnu værre, nu kan jeg faktisk se at IGame har skiftet plads med Goa-Gaming Team 3, det må vel betyder at deres position ikke er absolut? :(
Avatar billede php-nybegynderen Nybegynder
10. april 2007 - 19:38 #20
Ok, den skifter hver gang man opdaterer :\
Avatar billede johan.o Nybegynder
10. april 2007 - 19:45 #21
He he..ja ja..rolig nu, babysteps :)...tænker videre...
Avatar billede php-nybegynderen Nybegynder
10. april 2007 - 19:48 #22
hehe, bare i orden du :)
Avatar billede johan.o Nybegynder
10. april 2007 - 20:17 #23
Klassisk 'fejl' tsk tsk :)

Byt det her -->

if(array_search($qr[klan], $klan)) {
$i--; }
else {
$klan[$i]=$qr[klan]; } }

ud med det her -->

if(array_search($qr[klan], $klan)===false) {
$klan[$i]=$qr[klan]; }
else {
$i--; } }

og byt denne her -->

$r=mt_rand(1, $nr);

ud med denne her -->

$r=mt_rand(0, $nr);

Mvh. Johan
Avatar billede johan.o Nybegynder
10. april 2007 - 20:23 #24
Klassisk fordi jeg ikke lige var opmærksom på at array_search jo kan returnere værdien '0' som altså betyder at værdien blev fundet på plads '0', men mit tidligere kode tolkede dette '0' som at værdien ikke blev fundet.....altså et mix af Boolean og Integers...tsk tsk.. :)
Avatar billede php-nybegynderen Nybegynder
10. april 2007 - 21:01 #25
Gjort.. Men den skifter stadig vidt omkring :D
Avatar billede johan.o Nybegynder
10. april 2007 - 21:05 #26
Ja, nu finder den 16 tilfældige 'klaner' og laver første spillerunde. Naturligvis ændre de sig når du trykker opdater, det er jo netop 16 tilfældige klaner der vælges hver gang siden vises.

Jeg kan så forstå at vi skal have lavet 15 spillerunder hvor alle møder alle og den samlede kamp plan skal gemmes.....

Jeg sidder lige og roder med hvordan spillerunderne kan laves....Så jeg vender tilbage.

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
10. april 2007 - 21:08 #27
Bare i orden.. Husk, jeg skal også kunne indtaste et resultat for hvordan hver kamp er gået, som også skal være absolut.
Avatar billede johan.o Nybegynder
10. april 2007 - 23:35 #28
Så fik jeg kigget på spillerunderne...mine matematik evner rækker simpelthen ikke til en formel der kan kombinere modstanderne...så jeg har blot lavet et stort array med hele turneringen i...skulle du finde dobbeltkonfekt i turneringen vender du bare tilbage :)

Men prøv denne kode, den skulle som sagt gerne præsentere en hel turnering med 15 spille runder -->

<?php

connect to database....

$mTurn=array();
$mTurn[]=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
$mTurn[]=array(1,4,3,6,5,8,7,10,9,12,11,14,13,16,15,2);
$mTurn[]=array(1,6,3,8,5,10,7,12,9,14,11,16,13,2,15,4);
$mTurn[]=array(1,8,3,10,5,12,7,14,9,16,11,2,13,4,15,6);
$mTurn[]=array(1,10,3,12,5,14,7,16,9,2,11,4,13,6,15,8);
$mTurn[]=array(1,12,3,14,5,16,7,2,9,4,11,6,13,8,15,10);
$mTurn[]=array(1,14,3,16,5,2,7,4,9,6,11,8,13,10,15,12);
$mTurn[]=array(1,16,3,2,5,4,7,6,9,8,11,10,13,12,15,14);
$mTurn[]=array(1,9,3,11,5,13,7,15,2,10,4,12,6,14,8,16);
$mTurn[]=array(1,11,3,13,5,15,7,9,2,12,4,14,6,16,8,10);
$mTurn[]=array(1,13,3,15,5,9,7,11,2,14,4,16,6,10,8,12);
$mTurn[]=array(1,15,3,9,5,11,7,13,2,16,4,10,6,12,8,14);
$mTurn[]=array(1,5,3,7,9,13,11,15,2,6,4,8,10,14,12,16);
$mTurn[]=array(1,7,3,5,9,15,11,13,2,8,4,6,10,16,12,14);
$mTurn[]=array(1,3,5,7,9,11,13,15,2,4,6,8,10,12,14,16);

$klan=array();
$q=mysql_query("SELECT klan FROM liga");
$nr=mysql_num_rows($q)-1;
for($i=1; $i<17; $i++) {
$r=mt_rand(0, $nr);
mysql_data_seek($q, $r);
$qr=mysql_fetch_assoc($q);
if(array_search($qr[klan], $klan)===false) {
  $klan[$i]=$qr[klan]; }
else {
  $i--; } }

$output="<html><body>";

for($r=0; $r<15; $r++) {
$output.="<table style='border: 1px solid #AA898;'>";
for($k=0; $k<16; $k++) {
  $output.="<tr><td>Hold ".$klan[$mTurn[$r][$k]]."</td><td>vs.</td><td>Hold ".$klan[$mTurn[$r][++$k]]."</td></tr>"; }
$output.="</table>"; }

$output.="</html>";

echo $output;

?>

Mvh. Johan
Avatar billede johan.o Nybegynder
10. april 2007 - 23:37 #29
Hvis ovenstående virker som beskrevet er vi klar til at kigge på hvordan, og under hvilke former, vi kan gemme turneringen, således at du kan indtaste resultater og vise turneringen så længe den 'løber'.

Du vender bare tilbage....:)

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
11. april 2007 - 16:27 #30
Umiddelbart virker det! :) Det betyder ikke noget hvis jeg ændre id?? :P
Avatar billede php-nybegynderen Nybegynder
11. april 2007 - 16:28 #31
Altså, det ser ud til at alle møder hinanden ÉN gang.. Men der er et andet problem i at de skal inddeles i runder også..

Jeg har kombinationen i min gamle kampoversigtsopsætning, hvis du vil prøve at se den? Ellers var det ikke det du mente med dine matematiske evner? :)
Avatar billede johan.o Nybegynder
11. april 2007 - 17:50 #32
Spillerunderne smider vi bare på -->

Sæt det her ind istedet for det eksisterende -->

$output="<h1>Kampoversigt</h1>\n";

for($r=0; $r<15; $r++) {
$output.="<table style='width: 100%;'>
<tr>
  <td colspan='2'><p class='black'><b>Spillerunde".($r+1)." - !! Map, kommer senere !!</b> - fleksible spilletider</p></td>
</tr>\n";
for($k=0; $k<16; $k++) {
  $output.=" <tr>\n  <td><p class='black'>".$klan[$mTurn[$r][$k]]." <b>vs</b> ".$klan[$mTurn[$r][++$k]]."</p></td>\n </tr>\n"; }
$output.="</table>\n<br>\n<br>\n"; }

echo $output;

Mvh. Johan
Avatar billede johan.o Nybegynder
11. april 2007 - 17:55 #33
Jeg har kigget lidt på din side og det ser ud som om du 'kun' har 16 tilmeldte hold...?? Hvorfor skal der så findes 16 tilfældige, det vil jo altid være de samme 16 ??

Hvis du vil have at holdene skal møde hinanden i en bestemt rækkefølge skal du indtaste turnerings skemaet i de øverste array's. Skriv holdene på en liste, giv dem numre fra 1-16. Så er array'erne bygget op således at de første 2 numre møder hinnanden, de næste to møder hinnanden osv...

Bare lige for at opklare et par løse ender....turnerings skemaet som vi arbejder med for øjeblikket..skal det genereres af dig når alle hold er tilmeldt og derefter er det fast indtil næste turnering ??

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
11. april 2007 - 18:34 #34
Det må gerne genereres automatisk. Når jeg siger at det skal være 16 tilfældige, er det fordi, at jeg førhen har taget dem ved hjælp af deres ID, det var såmænd det der var startproblemet :D

Altså, jeg lavede en query på hvert ID, så alle klanerne skulle have fra ID 1-16, det er vel ikke nødvendigt at de er det nu? De kan godt have ID 28 ikke? Jeg havde nemlig gjort mig afhængig af deres ID, hvilket jo ikke er særlig smart.

Det er godt nok genialt! Det virker som det skal nu.. :)

Synes det er utrolig pænt af dig, at give mig så meget hjælp og at du bruger din tid på det her!!

Hvordan kommer man så det næste skridt med at vælge forskellige maps og få resultater på?
Avatar billede php-nybegynderen Nybegynder
11. april 2007 - 18:36 #35
Så har jeg lige et spørgsmål. Ved du om de arrays du har indtastet, er de 100% forskellige, således at ingen møder hinanden 2 gange, og ingen af tallene står 2 gange i ét array? :)
Avatar billede php-nybegynderen Nybegynder
11. april 2007 - 18:37 #36
Nu bliver jeg dog i tvivl.. Den skifter stadig, når man opdaterer, det er faktisk ikke meningen :(

Altså, så skifter hele turneringsplanen bare eller hvad?
Avatar billede php-nybegynderen Nybegynder
11. april 2007 - 18:39 #37
johan > Hvis du giver din MSN ud, kunne det være lettere at snakke der, og så må du ellers gerne få de point nu! :)

Du kan også tilføje min: mikkel@kokage.dk - eller hvis du hellere vil blive her på eksperten, så gør vi bare det..
Avatar billede johan.o Nybegynder
11. april 2007 - 18:46 #38
Lad os bare fortsætte her :)

Jeg laver lige idt rettelser til koden, da der er nogle ting som jeg har misforstået og derfor kan laves lidt enklere :)

Med hensyn til de øverste array's med turnerings planen i, så skulle den være OK..der er 15 array's, et for hver spillerunde. I hvert array står hvert 'hold' en gang, og samlet set møder alle alle....

Det er korrekt at den ændre holdene når du opdatere, det er fordi vi arbejder med den sekvens hvor du danner turneringen første gang...senere vil vi gemme hele dynen i en tabel og så tilgå den fra en anden side hvor du så kan indtaste resultater osv....

Men jeg kigger lige på det, og vender tilbage om lidt.

Og jeg er da bare glad for at du sætter pris på hjælpen, så er det jo altid rart at hjælpe :)

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
11. april 2007 - 18:57 #39
Smart smart.. Jeg skulle bare lige være med :)

Det er da utrolig smart, at gemme dem i en tabel, havde jeg ikke lige tænkt på.. Men kan man på den måde også komme til at påvirke stillingen? Nu skal jeg nok lade vær med at rode dig ud i mere, men jeg opdaterer nemlig selv stillingen på:

www.xg-league.dk/?s=stillingen

Kan man så stadig komme til at påvirke holdet selvom de er i 2 forskellige tabeller? Fordi hvis vi opretter dem i en ny tabel, hvor er deres relation til deres gamle tabel så?
Avatar billede johan.o Nybegynder
11. april 2007 - 19:38 #40
Så har jeg fået noget dejligt mad i maven...:) og kigget på koden...det er muligt at vi ikke behøver at gemme mere i databasen end du allerede har, men det må vi kigge på senere. Prøv nedenstående kode og hvis jeg ikke tager meget fejl, så ændre turneringen sig ikke mere når du opdatere, men lad høre om det er korrekt :)

<?php

connect to database....

$mTurn=array();
$mTurn[]=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
$mTurn[]=array(1,4,3,6,5,8,7,10,9,12,11,14,13,16,15,2);
$mTurn[]=array(1,6,3,8,5,10,7,12,9,14,11,16,13,2,15,4);
$mTurn[]=array(1,8,3,10,5,12,7,14,9,16,11,2,13,4,15,6);
$mTurn[]=array(1,10,3,12,5,14,7,16,9,2,11,4,13,6,15,8);
$mTurn[]=array(1,12,3,14,5,16,7,2,9,4,11,6,13,8,15,10);
$mTurn[]=array(1,14,3,16,5,2,7,4,9,6,11,8,13,10,15,12);
$mTurn[]=array(1,16,3,2,5,4,7,6,9,8,11,10,13,12,15,14);
$mTurn[]=array(1,9,3,11,5,13,7,15,2,10,4,12,6,14,8,16);
$mTurn[]=array(1,11,3,13,5,15,7,9,2,12,4,14,6,16,8,10);
$mTurn[]=array(1,13,3,15,5,9,7,11,2,14,4,16,6,10,8,12);
$mTurn[]=array(1,15,3,9,5,11,7,13,2,16,4,10,6,12,8,14);
$mTurn[]=array(1,5,3,7,9,13,11,15,2,6,4,8,10,14,12,16);
$mTurn[]=array(1,7,3,5,9,15,11,13,2,8,4,6,10,16,12,14);
$mTurn[]=array(1,3,5,7,9,11,13,15,2,4,6,8,10,12,14,16);

$maps=array("de_dust2","de_inferno","de_nuke","de_train","de_cpl_mill","de_dust2","de_inferno","de_nuke","de_train","de_cpl_mill","de_dust2","de_inferno","de_nuke","de_train","de_cpl_mill");

$klan=array(); $i=0;
$q=mysql_query("SELECT klan FROM liga ORDER BY id");
while($qr=mysql_fetch_assoc($q)) {
$klan[++$i]=$qr[klan]; }

$output="<h1>Kampoversigt</h1>\n";

for($r=0; $r<15; $r++) {
$output.="<table style='width: 100%;'>
<tr>
  <td colspan='2'><p class='black'><b>Spillerunde".($r+1)." - ".$maps[$r]."</b> - fleksible spilletider</p></td>
</tr>\n";
for($k=0; $k<16; $k++) {
  $output.=" <tr>\n  <td><p class='black'>".$klan[$mTurn[$r][$k]]." <b>vs</b> ".$klan[$mTurn[$r][++$k]]."</p></td>\n </tr>\n"; }
$output.="</table>\n<br>\n<br>\n"; }

echo $output;

?>

Mvh. Johan
Avatar billede johan.o Nybegynder
11. april 2007 - 19:39 #41
Hov, kan se den ene linje kun vises delvist, her er den i sin rigtige længde -->

$maps=array("de_dust2", "de_inferno", "de_nuke", "de_train", "de_cpl_mill", "de_dust2", "de_inferno", "de_nuke", "de_train", "de_cpl_mill", "de_dust2", "de_inferno", "de_nuke", "de_train", "de_cpl_mill");

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
11. april 2007 - 19:44 #42
Det virker mindsanten præcis som det skal :P
Avatar billede php-nybegynderen Nybegynder
11. april 2007 - 19:44 #43
Nu er det store spørgsmål, hvordan man laver resultaterne og får dem inkluderet i stillingen!! :O
Avatar billede php-nybegynderen Nybegynder
11. april 2007 - 19:50 #44
Som det ser ud nu, er min stilling så uoverskuelig:





<h1>Stillingen</h1>

<table>
  <tr>
    <td width="5%"><p class="black"><b>#</b></p></td>
    <td width="25%"><p class="black"><b>Klan</b></p></td>
    <td width="5%"><p class="black"><b>K</b></p></td>
    <td width="5%"><p class="black"><b>V</b></p></td>
    <td width="5%"><p class="black"><b>U</b></p></td>
    <td width="5%"><p class="black"><b>T</b></p></td>
    <td width="5%"><p class="black"><b>VR</b></p></td>
    <td width="5%"><p class="black"><b>TR</b></p></td>
    <td width="5%"><p class="black"><b>+/-</b></p></td>
    <td width="5%"><p class="black"><b>P</b></p></td>
  </tr>

<?

$i = "1";

$query = mysql_query("SELECT * FROM liga ORDER by point DESC,result DESC");
    while($liga = mysql_fetch_array($query)) {

    if($i>2) {

?>

  <tr onmouseover="this.style.background='#999999';" onmouseout="this.style.background='#FFFFFF';">
    <td><p><font style="color:red;"><? echo $i; ?></font></p></td>
    <td><p><a class="red" href="?s=klan&id=<? echo $liga['id']; ?>"><? echo $liga['klan']; ?></a></p></td>
    <td><p><font style="color:red;"><? echo $liga['vundne']+$liga['uafgjorte']+$liga['tabte']; ?></font></p></td>
    <td><p><font style="color:red;"><? echo $liga['vundne']; ?></font></p></td>
    <td><p><font style="color:red;"><? echo $liga['uafgjorte']; ?></font></p></td>
    <td><p><font style="color:red;"><? echo $liga['tabte']; ?></font></p></td>
    <td><p><font style="color:red;"><? echo $liga['vr']; ?></font></p></td>
    <td><p><font style="color:red;"><? echo $liga['tr']; ?></font></p></td>
    <td><p><font style="color:red;"><? echo $liga['result']; ?></font></p></td>
    <td><p><font style="color:red;"><? echo $liga['point']; ?></font></p></td>
  </tr>

<?

$i++;

    }
    else {

?>

  <tr onmouseover="this.style.background='#999999';" onmouseout="this.style.background='#FFFFFF';">
    <td><p><font style="color:green;"><? echo $i; ?></font></p></td>
    <td><p><a class="green" href="?s=klan&id=<? echo $liga['id']; ?>"><? echo $liga['klan']; ?></a></p></td>
    <td><p><font style="color:green;"><? echo $liga['vundne']+$liga['uafgjorte']+$liga['tabte']; ?></font></p></td>
    <td><p><font style="color:green;"><? echo $liga['vundne']; ?></font></p></td>
    <td><p><font style="color:green;"><? echo $liga['uafgjorte']; ?></font></p></td>
    <td><p><font style="color:green;"><? echo $liga['tabte']; ?></font></p></td>
    <td><p><font style="color:green;"><? echo $liga['vr']; ?></font></p></td>
    <td><p><font style="color:green;"><? echo $liga['tr']; ?></font></p></td>
    <td><p><font style="color:green;"><? echo $liga['result']; ?></font></p></td>
    <td><p><font style="color:green;"><? echo $liga['point']; ?></font></p></td>
  </tr>

<?

$i++;

    }
    }

?>

</table>
Avatar billede johan.o Nybegynder
11. april 2007 - 19:58 #45
Ja, og så skal du træffe en beslutning :)

Vi behøver ikke gemme turneringsplanen, da den nu altid vil være den samme så længe du ikke ændrer indholdet af 'liga' tabellen.

Men du skal jo have resultaterne gemt på en eller anden måde.

Enten kan vi oprette en mySQL tabel hvor vi gemmer resultaterne, eller vi kan gemme resultaterne direkte i koden.

Der er lidt forskellige muligheder ved de to muligheder, men der er især to hensyn som du skal tage stilling til. Sikkerhed og brugervenlighed.

Hvis du vælger en tabel løsning, kan vi jo lave en side som du kan logge ind på og derfra opdatere kampene, men et login system er aldrig 100% sikkert, så det gør dig jo sårbar overfor 'fjendtlige' brugere, risikoen er ganske vist lav, men den er der.

Hvis du opdatere direkte i koden, vil koden være langt mere enkel, brugervenligheden vil afhænge af dine evner til at opdatere koden korrekt...nok ikke det store problem :)...og sikkerheden er 100% bevaret.

Men lad høre hvad du syntes vi skal arbejde med, og spørg endelig hvis du er i tvivl om noget.

Mvh. Johan
Avatar billede johan.o Nybegynder
11. april 2007 - 19:59 #46
Ja okay kan se du kigger på stillingen...lad os først kigge på turneringsplanen, så kan vi senere se på stillingen...okay ?

Mvh. Johan
Avatar billede johan.o Nybegynder
11. april 2007 - 20:01 #47
Det skal jo også nævnes at hvis vi gemmer resultaterne i en tabel, er det jo nærliggende at bruge de informationer til at danne stillingen udfra...ganske automatisk :)

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
11. april 2007 - 20:14 #48
Synes vi skal tage tabellen i MySQL. Det er det jeg har lagt op til indtil videre, fordi jeg har også lavet en form for automatik :) Mit storeproblem var egentlig at få det lavet i en ny tabel og få det overført til klanerne i stillingen.

Altså.. Der spilles 30 runder. 15-15 er uafgjort og giver 1 point. 14-16 er tabt kamp og giver 0 point, og til sidst er 16-14 en vundet kamp og giver 2 point.

Du kan garanteret gøre det let, men hvor havde jeg mange problemer med det. Har lige forlagt det, vil prøve at finde det jeg havde lavet, men kan også være du bare har løsningen på en meget hurtig måde..

Men altså hvor er jeg forvirret, håber du forstår det jeg mener..

Hvis vi går ud fra: klan1 og klan2

Klan1 vs Klan2
15 - 15

Så skal begge klaner have 1 point

Klan1 vs Klan2
18 - 12

Så får Klan1 2 point og Klan2 får 0 point
Avatar billede johan.o Nybegynder
11. april 2007 - 20:38 #49
Er du forvirret ? :), hvad forvirrer ?, det er jo ret vigtigt at du selv er med på hvad vi laver, fordi de kommende løsninger bliver du nok nød til selv at starte på og så tager vi problemerne efterhånden. Jeg skal selvfølgelig nok forsøge at give dig et oplæg til de forskellige del elementer hvis du har brug for det. Men lad endelig høre hvad du er i tvivl om.

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
11. april 2007 - 20:52 #50
Kan bare ikke forstå, at når jeg skriver så meget for at finde en løsning, at du så kan lave den på så få linje..

Og jeg tænker alt for langt tror jeg. Kender ikke så meget til arrays, men de er da utrolig smarte.

Når jeg skal lave sådan et system som dette, så har jeg ingen anelse om, hvordan man opretter en helt ny tabel og laver forbindelse mellem resultaterne og klanen, så man kan trække det ud og opdatere osv.

Hvis en kamp bliver 15-15

Ville jeg nok lave 2 inputs, som har hvert deres navn. Så ville jeg relatere dem til de hold de "hører til". Og i stillingen ville jeg så sige:

if ($input1 = 15) {
$uafgjorte = $uagjorte+1
$point = $point+1 }

og hvis den var vundet med 16:

if ($input1 > 15) {
$vundne = $vundne+1
$point = $point+2 }

Og du kan bare gøre det på meget lettere måder, forstår sådanset det meste af det du har lavet, men jeg kan ikke se hvordan man skal tage det næste skridt.. Har slet ikke arbejdet med "relationer" eller hvad man nu kalder det.

Tænker jeg for meget over at det skal kunne påvirke stillingen :) ?
Avatar billede johan.o Nybegynder
11. april 2007 - 21:49 #51
Det er klart at jo mere indblik og forståelse man har for PHP, jo kortere kode kan man skrive, men du skal ikke lade dig gå på af at du skal bruge flere linjer, det vigtigste er jo at koden virker. Når du så har kode der virker, kan det være god træning at prøve at reducere den. Ofte skal jeg også først have funktionaliteten på plads, altså se at det virker, før jeg kan reducere og gøre koden kortere. Men som sagt kort kode er ikke alt, det er ofte vigtigere at man kan overskue koden. Man kan f.eks. skrive en superkort kode idag, og når man så skal kigge på den 6 mdr. senere, tager det en lille uge at fatte hvad det er man har lavet :)

Så humlen er at du skal bruge de virkemidler du kender og så prøve at krydre dem med nye ting som du samler op rundt omkring. Jeg ved ikke om du kan læse og forstå engelsk, men hvis det ikke er et problem, er php.net jo et leksikon af viden og informationer om forskelige dele af sproget.

Der er absolut ikke noget galt med at tænke langt frem, det er faktisk ofte en stor fordel at man først danner sig det store overblik, og derefter går igang med koden. Men projektet her er jo ved at udvikle sig hurtigt :), så jeg forstår da godt hvis det er svært at gennemskue sammenhængene.

Hvis det hjælper har jeg faktisk heller ikke det fulde overblik over hvordan tingene skal hænge sammen, men hvis du er frisk på projektet så tager vi jo bare tingene som de kommer, så må vi jo bare tage et par skridt tilbage hvis det bliver nødvendigt at ændre nogle ting undervejs.

De eksempler du viser omkring point tildeling er udemærkede. Vores problem lige nu er at vi ikke rigtigt kan implementere dem, da vi stadig ikke har fået på plads hvordan vi vil gemme informationerne, og derfor heller ikke hvordan vi kan bruge dem. Men lad mig prøve at beskrive projektet for dig, som jeg forstår det :)

Du har tabellen 'liga' jeg kender ikke det fulde omfang af den tabel, men jeg foreslår at den tabel bare indeholder følgende :

Id, Holdnavn.

Så skal vi bruge en turneringstabel, den skal indeholde :

Id, Hjemmeresultat, Uderesultat.

Da turneringsplanen indeholder 15 spillerunder med 8 kampe i hver kommer denne tabel til at indeholde 15x8 altså 120 rækker, en for hver kamp. Da vi allerede har lavet vores turneringsplan således at den ikke ændre sig, bygger vi tabellen således at række 1 i tabellen er resultatet af den første kamp, række 2 er resultatet af den anden kamp osv....

Det er muligt vi senere tilføjer nogle felter til 'liga' tabellen med sejre, uafgjorte og tabte kampe, men foreløbig er jeg ikke sikker på at vi behøver dem.

Okay så vi har to tabeller, en med hold ('liga') og en med resultater.

Når vi viser turneringsplanen skal vi bruge 'liga' tabellen til at danne kampene, og så kigger vi i resultat tabellen for at skrive resultaterne. Det er jo egentlig simpelt nok, men det skal jo også være muligt for dig at skrive resultaterne ind. Det kan du enten gøre direkte i tabellen, via myPhpAdmin, men da indholdet i tabellen ikke er nemt at sætte sammen med holdnavnene, det er jo bare 120 rækker med tal, så er det nok bedre at du kan gøre det via turneringsplanen. Så derfor er det nødvendigt at lave et login system, således at du kan logge ind og få adgang til at skrive resultater ind, via turneringsplanen. Hvis ikke vi laver et login system, kan alle jo skrive resultater ind og det er vel ikke godt. Det kan stort set laves ved at udvide den side vi arbejder med i øjeblikket, det vigtigste lige nu er blot at du er med på at det bliver muligt at indtaste fra den samme side som vi arbejder med nu.

Så nu har vi en side hvorfra vi kan indtaste og vise resultaterne af kampene.

Så skal vi jo også have en side der viser stillingen i turneringen. Denne side skal....hmmm....he he ja se nu mangler der jo noget...der skal jo være en reference mellem resultaterne og holdene som er rimelig nem at tolke...derfor skal vi nok lave resultat tabellen lidt om. Den skal indeholde :

Id, Hjemmehold, Udehold, Hjemmeresultat, Uderesultat.

Når vi så skal lave stillingen, kigger vi alle kampene igennem, og laver noget kode der holder styr på sejre, uafgjorte og tabte kampe for alle holdene og når vi er færdige kan vi regne stillingen ud og vise den.

....Så to tabeller og to sider kan måske gøre det...

Er du mere forvirret nu eller hjælper det lidt på overblikket ?

Jeg bliver nok nød til at slutte for iaften, men jeg er højst sandsynligt på igen imorgen aften.

Hvis du har mod på det, så kan det være rigtigt godt at læse om Array's på php.net, fordi der bliver vist meget omkring array's i det følgende :) På www.php.net skriver du blot array oppe i søge feltet og vælger Functions i dropdown til højre så skulle siden gerne komme frem.

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
11. april 2007 - 22:18 #52
Det hjælper rigtig meget!

Jeg vil se frem til i morgen, jeg har virkelig mod på at lave det nu. Mit eneste hul lige nu er, hvordan man laver relationen, som du også kom i tanke om midt i at du skrev din tekst :). Altså:

Id, Hjemmehold, Udehold, Hjemmeresultat, Uderesultat.

Men det glæder jeg mig til at finde ud af i morgen. Jeg gør det, at jeg sætter det op på en anden hjemmeside nu, og så kan jeg arbejde ud fra den, så det ikke forstyrrer den nuværende side.

- Skriv en gang i morgen, når du har tid og lyst.
Avatar billede php-nybegynderen Nybegynder
11. april 2007 - 22:32 #53
Her er den så:

www.divinium.dk/liga

Jeg har ændret lidt i koden, for at det kommer til at passe med tabellen.. Den ser sådan ud nu:

<?

include("config.php");

$mTurn=array();
$mTurn[]=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
$mTurn[]=array(1,4,3,6,5,8,7,10,9,12,11,14,13,16,15,2);
$mTurn[]=array(1,6,3,8,5,10,7,12,9,14,11,16,13,2,15,4);
$mTurn[]=array(1,8,3,10,5,12,7,14,9,16,11,2,13,4,15,6);
$mTurn[]=array(1,10,3,12,5,14,7,16,9,2,11,4,13,6,15,8);
$mTurn[]=array(1,12,3,14,5,16,7,2,9,4,11,6,13,8,15,10);
$mTurn[]=array(1,14,3,16,5,2,7,4,9,6,11,8,13,10,15,12);
$mTurn[]=array(1,16,3,2,5,4,7,6,9,8,11,10,13,12,15,14);
$mTurn[]=array(1,9,3,11,5,13,7,15,2,10,4,12,6,14,8,16);
$mTurn[]=array(1,11,3,13,5,15,7,9,2,12,4,14,6,16,8,10);
$mTurn[]=array(1,13,3,15,5,9,7,11,2,14,4,16,6,10,8,12);
$mTurn[]=array(1,15,3,9,5,11,7,13,2,16,4,10,6,12,8,14);
$mTurn[]=array(1,5,3,7,9,13,11,15,2,6,4,8,10,14,12,16);
$mTurn[]=array(1,7,3,5,9,15,11,13,2,8,4,6,10,16,12,14);
$mTurn[]=array(1,3,5,7,9,11,13,15,2,4,6,8,10,12,14,16);

$maps=array("de_dust2", "de_inferno", "de_nuke", "de_train", "de_cpl_mill", "de_dust2", "de_inferno", "de_nuke", "de_train", "de_cpl_mill", "de_dust2", "de_inferno", "de_nuke", "de_train", "de_cpl_mill");

$holdnavn=array(); $i=0;
$q=mysql_query("SELECT holdnavn FROM liga1 ORDER BY id");
while($qr=mysql_fetch_assoc($q)) {
$holdnavn[++$i]=$qr[holdnavn]; }

$output="<h1>Kampoversigt</h1>\n";

for($r=0; $r<15; $r++) {
$output.="<table style='width: 100%;'>
<tr>
  <td colspan='2'><p class='black'><b>Spillerunde".($r+1)." - ".$maps[$r]."</b> - fleksible spilletider</p></td>
</tr>\n";
for($k=0; $k<16; $k++) {
  $output.=" <tr>\n  <td><p class='black'>".$holdnavn[$mTurn[$r][$k]]." <b>vs</b> ".$holdnavn[$mTurn[$r][++$k]]."</p></td>\n </tr>\n"; }
$output.="</table>\n<br>\n<br>\n"; }

echo $output;

?>
Avatar billede php-nybegynderen Nybegynder
11. april 2007 - 22:32 #54
(ændringen er "holdnavn" i stedet for klan, fordi du kaldte den det i tabellen)
Avatar billede johan.o Nybegynder
12. april 2007 - 18:50 #55
Jeg er lige på et par minutter nu, og så kommer jeg sikkert tilbage omkring kl.22.

Jeg ved ikke om du har lavet begge tabeller, ellers må du godt lave de to mySQL tabeller jeg snakkede om tidligere og poste et SQL dump her, så er vi nemlig sikre på at vi arbejder med det samme udgangspunkt.

Turneringstabellen har jo ingen resultater eller hold for den sags skyld, så vi skal have lavet et eller andet som fylder turneringstabellen op, hvis den er tom, når turneringsplanen vises....

Du kan prøve at se om du kan få kodet noget der sørger for dette, jeg kunne forestille mig at vi lige før linjen $output="<h1>Kampoversigt</h1>\n"; laver et check af om der er nogle rækker i resultattabellen overhovedet, hvis der er sættes en variabel til true, hvis ikke sættes den til false.

Længere nede i koden hvor vi udskriver linjerne  $output.=" <tr>\n  <td><p class='black'>"....osv laver du så en if(!variabel) { så inserter den de to hold på de rigtige pladser i tabellen....

Men nu bliver jeg nød til at løbe, vi tales ved senere :)

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
12. april 2007 - 21:27 #56
Det må du så lige forklare nærmere når du er her :)

if(!variabel)

Hvilken variabel og hvorfor?
Avatar billede johan.o Nybegynder
12. april 2007 - 22:48 #57
Det blev lige lidt sent :(

Prøv at se denne teori kode...

$holdnavn=array(); $i=0;
$q=mysql_query("SELECT holdnavn FROM liga1 ORDER BY id");
while($qr=mysql_fetch_assoc($q)) {
$holdnavn[++$i]=$qr[holdnavn]; }

// Check her om der er noget i resultat/turnerings-tabellen.
// Hvis der er sættes f.eks. $tabelEmpty=false; hvis ikke der er noget i tabellen sættes $tabelEmpty=true;
// Du kan checke om der er indhold ved at lave en mysql query på alt.
// Og endnu bedre checke om der er 120 rækker med mysql_num_rows, det er jo det antal kampe der er i turneringen.

$output="<h1>Kampoversigt</h1>\n";

for($r=0; $r<15; $r++) {
$output.="<table style='width: 100%;'>
<tr>
  <td colspan='2'><p class='black'><b>Spillerunde".($r+1)." - ".$maps[$r]."</b> - fleksible spilletider</p></td>
</tr>\n";
for($k=0; $k<16; $k++) {
  $output.=" <tr>\n  <td><p class='black'>".$holdnavn[$mTurn[$r][$k]]." <b>vs</b> ".$holdnavn[$mTurn[$r][++$k]]."</p></td>\n </tr>\n";

// Her skrives kampene ud til 'skærmen'.
// Hvis $tabelEmpty er true, skal vi have smidt kampene i turneringstabellen,
//  så her kan vi lave
// if($tabelEmpty) { læg de to holdavne i tabellen }

}
$output.="</table>\n<br>\n<br>\n"; }

Er det muligt for dig ? :)

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
12. april 2007 - 22:59 #58
Jeg smider det ind nu :)

De 16 hold hedder:

hold1-hold16

Som du også kan se på siden:

www.divinium.dk/liga

Smider lige det der ind.
Avatar billede php-nybegynderen Nybegynder
12. april 2007 - 23:12 #59
Forstår det simpelthen ikke :(

Skal jeg lave en INSERT INTO på udehold og hjemmehold?
Avatar billede johan.o Nybegynder
12. april 2007 - 23:19 #60
Ja, det lyder fornuftigt.

F.eks. INSERT INTO turnering VALUES('', '".$holdnavn[$mTurn[$r][($k-1)]]."', '".$holdnavn[$mTurn[$r][$k]]."', '', '')

Men det er fint nok, hvis du ikke er med :), jeg må desværre slutte for i aften, så du kan prøve at se om du kan få hoved og hale på 'opgaven', hvis du ikke selv har fundet noget laver jeg et forslag til dig imorgen :)

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
12. april 2007 - 23:20 #61
Jeg er godt nok forvirret, så tror næppe jeg har fundet hoved og hale :P

Men vi snakkes :)
Avatar billede johan.o Nybegynder
12. april 2007 - 23:20 #62
...og det ville være lækkert hvis du kunne vise et 'dump' af de to tabeller..det kan du lave i myPhpAdmin...hedder vist noget med 'export' :)

Mvh. Johan
Avatar billede johan.o Nybegynder
12. april 2007 - 23:21 #63
Lige før jeg smutter...er det fordi du har svært ved at overskue den eksisterende kode ?

Mvh. Johan
Avatar billede johan.o Nybegynder
13. april 2007 - 18:49 #64
Okay, jeg er her kun nogle minutter, får gæster om lidt :)...Jeg har lavet lidt ændringer til koden. Bl.a. det store array, har jeg istedet for 1-16, lavet 0-15...mere om det senere :)

Så har jeg tilføjet det vi snakkede om igår om at hvis turneringstabellen er tom tilføjer den turneringsplanen...

Jeg poster både kode og den struktur jeg har i min database, så kan du kigge på det, og skriv nu endelig hvis der er noget du er i tvivl om, eller vil have forklaret :)

<?php

include("connect.php");

// Her laves et multidimensionelt array, $mTurn, med turneringsplanen...altså hvem møder hvem.
// Der er 15 spillerunder og hver linje svarer til en spillerunde.
// Der er 16 deltagere og de er repræsenteret med tallene 0-15.
// De to første 'tal' møder hinnanden, de to næste ligeså osv.....
// Så i første spillerunde spiller 0 mod 1, i anden runde spiller 0 mod 3, i tredie runde spiller 0 mod 5 osv.

$mTurn=array();
$mTurn[]=array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
$mTurn[]=array(0,3,2,5,4,7,6,9,8,11,10,13,12,15,14,1);
$mTurn[]=array(0,5,2,7,4,9,6,11,8,13,10,15,12,1,14,3);
$mTurn[]=array(0,7,2,9,4,11,6,13,8,15,10,1,12,3,14,5);
$mTurn[]=array(0,9,2,11,4,13,6,15,8,1,10,3,12,5,14,7);
$mTurn[]=array(0,11,2,13,4,15,6,1,8,3,10,5,12,7,14,9);
$mTurn[]=array(0,13,2,15,4,1,6,3,8,5,10,7,12,9,14,11);
$mTurn[]=array(0,15,2,1,4,3,6,5,8,7,10,9,12,11,14,15);
$mTurn[]=array(0,8,2,10,4,12,6,14,1,9,3,11,5,13,7,15);
$mTurn[]=array(0,10,2,12,4,14,6,8,1,11,3,13,5,15,7,9);
$mTurn[]=array(0,12,2,14,4,8,6,10,1,13,3,15,5,9,7,11);
$mTurn[]=array(0,14,2,8,4,10,6,12,1,15,3,9,5,11,7,13);
$mTurn[]=array(0,4,2,6,8,12,10,14,1,5,2,7,9,13,11,15);
$mTurn[]=array(0,6,2,4,8,14,10,12,1,7,3,5,9,15,11,13);
$mTurn[]=array(0,2,4,6,8,10,12,14,1,3,5,7,9,11,13,15);

// Her laves et array, $maps, med de map's der skal spilles.
// Da der er 15 spillerunder er der 15 maps.

$maps=array("de_dust2", "de_inferno", "de_nuke", "de_train", "de_cpl_mill", "de_dust2", "de_inferno", "de_nuke", "de_train", "de_cpl_mill", "de_dust2", "de_inferno", "de_nuke", "de_train", "de_cpl_mill");

// Her laves to array's.
// $hold_navn indeholder alle de hold der deltager i turneringen.
// $hold_id indeholder holdenes id...dette array bruger vi ikke endnu, men muligvis senere...

$hold_navn=array();
$hold_id=array();
$ql=mysql_query("SELECT id, holdnavn FROM liga ORDER BY id");
while($qlr=mysql_fetch_assoc($ql)) {
$hold_navn[]=$qlr[holdnavn];
$hold_id[]=$glr[id]; }

// Her checkes om der er noget i vores turneringstabel (mySQL)

$tur_empty=true;
$qt=mysql_query("SELECT * FROM turnering");
if(mysql_num_rows($qt)==120) { $tur_empty=false; }

// Her sammensættes det output der skal vises hos klienten (browseren).
// Alt output samles i variablen $output og sendes først til sidst.
// Vi ved at der er 15 spillerunder, med 8 kampe i hver.
// Derfor er der 2 'for' løkker i det følgende.
// Den første tæller de 15 spillerunder fra 0-14.
// Den starter på 0 fordi den første 'nøgle' i turneringsarray'et $mTurn, og maps
// array'et $maps, er '0' (eksempel : $maps[0]="de_dust2";), og den sidste nøgle
// er 14 (eksempel : $maps[14]="de_cpl_mill";)
// Derfor laver vi ($r+1) når vi skal skrive hvilken spillerunde det er, der er jo ingen spillerunde 0.
// Den næste løkke tæller de 8 kampe. Løkken tæller fra 0-16, men det er fordi der er 16 hold, selve
// løkken løbes 'kun' igennem 8 gange, da 'tælleren' $k, stiger med 2 for hvert gennemløb.
// Hvergang vi 'skriver' en kamp til turneringsskemaet, skrives kampen også ind i turneringstabellen (mySQL)
// hvis variablen $tur_empty er true.

$output="<h1>Kampoversigt</h1>\n";

for($r=0; $r<15; $r++) {
$output.="<table style='width: 100%;'>
<tr>
  <td colspan='2'><p class='black'><b>Spillerunde".($r+1)." - ".$maps[$r]."</b> - fleksible spilletider</p></td>
</tr>\n";
for($k=0; $k<16; $k++) {
  $output.=" <tr>\n  <td><p class='black'>".$hold_navn[$mTurn[$r][$k]]." <b>vs</b> ".$hold_navn[$mTurn[$r][++$k]]."</p></td>\n </tr>\n";
  if($tur_empty) { mysql_query("INSERT INTO turnering VALUES('', '".$hold_navn[$mTurn[$r][($k-1)]]."', '".$hold_navn[$mTurn[$r][$k]]."', 0, 0)"); } }
$output.="</table>\n<br>\n<br>\n"; }

echo $output;

?>

#
# Struktur dump for tabellen `liga`
#

CREATE TABLE liga (
  id int(2) NOT NULL auto_increment,
  holdnavn varchar(100) NOT NULL default '',
  UNIQUE KEY id (id)
) TYPE=MyISAM;

#
# Struktur dump for tabellen `turnering`
#

CREATE TABLE turnering (
  id int(3) NOT NULL auto_increment,
  hjemmehold varchar(100) NOT NULL default '',
  udehold varchar(100) NOT NULL default '',
  hjemmeres int(2) NOT NULL default '0',
  uderes int(2) NOT NULL default '0',
  UNIQUE KEY id (id)
) TYPE=MyISAM;

Vi tales :)

Mvh. Johan
Avatar billede johan.o Nybegynder
13. april 2007 - 18:54 #65
En lille ting, bare hvis du ikke ved det, i multidimensionelle array's, ligesom $mTurn, 'finder' man værdierne ved først at skrive reference nøgle i første dimension og så rference nøgle til anden dimension osv...

Eksempelvis $mTurn[0][3] vil være '3' i den kode jeg lige har postet og $mTurn[1][3] vil være '5'

:)

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
15. april 2007 - 21:32 #66
Ok, så er jeg tilbage fra weekendens mørke gader :)

Det ser godt ud :O

Men hvordan får vi kørt resultaterne ind? :p
Avatar billede johan.o Nybegynder
15. april 2007 - 21:45 #67
Tja, hvordan vil du foreslå ?

Det mest nærliggende er jo via en form med nogle input felter, så det kan du jo prøve at lave. Nu udskrives tabel celler med indholdet i streng format. Istedet skal de så udskrives i tabel celler men i input felter, og så skal hele dynen ind i et form felt.

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
16. april 2007 - 15:50 #68
ADMIN VIEW:
<input name="hjemmehold" type="text" value="<? echo $hjemmehold; ?>"> - <input name="udehold" type="text" value="<? echo $udehold; ?>">

NORMAL VIEW:
<b><? echo $hjemmehold; ?> - <? echo $udehold; ?></b>

Kunne det ikke være noget i den stil? Og så skal der self. tildeles et ID for hver kamp! Men jeg kan ikke sætte mig ind i alle dine koder.. Så hvordan vi skal få det puttet ind, ved jeg ikke hvad vi skal gøre. Men umiddelbart ville det være bedst med noget i den stil.
Avatar billede php-nybegynderen Nybegynder
16. april 2007 - 15:50 #69
evt. skal de hedde: $hjemmeholdresultat og $udeholdresultat
Avatar billede johan.o Nybegynder
16. april 2007 - 16:29 #70
Ja for den :), det kan vi sagtens bruge.

Først en lille detalje....

Du behøver ikke lave <? echo ..noget.. ?> inde i denne del af koden, vi putter jo det hele i en variabel som vi echo'er til sidst...

Så <input name='hjemmehold' type='text' value='".$hjemmehold."'> er ganske fint, men vi får et problem da der laves 120 rækker af denne slags og de kommer alle sammen til at hedde 'hjemmehold'. Så på en eller anden måde skal vi have gjort rækkerne unikke...men jeg sidder lige på arbejde så jeg bliver nød til at vende tilbage senere :) Men det kunne være cool hvis du laver et seperat stykke kode, altså helt uafhængigt af den vi arbejder med, som kan lave 120 rækker i en tabel med 120 unikke input felter for det vil vi kunne overføre direkte til vores kode.

Du kan bruge f.eks.

for($i=0; $i<120; $i++) {

til at køre løkken med de 120 rækker.

Men altså det jeg gerne vil have...hvis det ikke er for meget at bede om :)..er et stykke kode der laver det her output -->

<table>
<tr>
<td><input name="input1" type="text" value="value1"></td>
</tr>
<tr>
<td><input name="input2" type="text" value="value2"></td>
</tr>
<tr>
<td><input name="input3" type="text" value="value3"></td>
</tr>
....osv 120 gange ialt...
</tr>
</table>

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
16. april 2007 - 16:57 #71
Uhha :O

Skal jeg lave det der 120 gange?
Avatar billede php-nybegynderen Nybegynder
16. april 2007 - 17:30 #72
Det skulle gerne være her, medmindre jeg har misforstået :)

www.divinium.dk/kampe.php
Avatar billede php-nybegynderen Nybegynder
16. april 2007 - 18:00 #73
Men kommer man så til at kunne skælne?
Avatar billede johan.o Nybegynder
16. april 2007 - 18:35 #74
He he..nu kan jeg ikke se koden bagved men du skal jo lave et php script der benytter bl.a. denne 'funktion'..

for($i=0; $i<120; $i++) { ...alt hvad der står her bliver gentaget 120 gange og variablen $i stiger ved hver 'gennemløb' med 1, fra 0 til 119... }

Det må du kunne bruge til noget..det er jo ikke meningen at du blot skal lave de 120 linjer, du skal lave et stykke 'smart' kode der gør det for dig :)

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
16. april 2007 - 18:46 #75
Der er ingen kode bagved, men som sagt, så forstår jeg ikke hvordan..

Kan også være jeg bare skal gøre det på min egen primitive måde til det gamle system.
Avatar billede johan.o Nybegynder
16. april 2007 - 19:51 #76
Jamen det er også helt okay, det lyder også som om du bør starte med et lidt mindre krævende projekt :)

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
16. april 2007 - 20:21 #77
Nej såmænd ikke.. Bare et system der er langt mindre automatiseret (dog lige så godt i sidste ende, men kræver dobbelt så meget arbejde)

Hehe.

Men tak for hjælpen anyway.
Avatar billede johan.o Nybegynder
16. april 2007 - 22:32 #78
Ja okay fair nok, et spørgsmål om formulering :), men jeg smider et svar hvis du vil lukke her :)

Mvh. Johan
Avatar billede php-nybegynderen Nybegynder
18. april 2007 - 18:54 #79
Jeg har lavet et nyt spørgsmål, prøv at tage et kig på den. Jeg har lavet systemet (på en meget åndsvag måde), men den virker ikke optimalt, og jeg ved ikke hvad der er galt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester