Avatar billede Slettet bruger
04. januar 2011 - 16:05 Der er 30 kommentarer og
1 løsning

System med radio buttons og send til database

Har denne side som henter en brugers spiller frem:


echo "<center><table border='1' class='sample'><tr bgcolor='#000000'><td colspan='3'><center>";
echo "<font color='#FC9801' face='Verdana, Arial, Helvetica, sans-serif'>Dine spillere</font></center></td></tr>";
echo "<tr bgcolor='#222222'><td><center><font color='#FC9801' size='2' face='Verdana, Arial, Helvetica, sans-serif'>spiller</font></center></td>";
echo "<td><center><font color='#FC9801' size='2' face='Verdana, Arial, Helvetica, sans-serif'>Klub</font></center></td>";
echo "<td><center><font color='#FC9801' size='2' face='Verdana, Arial, Helvetica, sans-serif'>Placering</font></center></td></tr>";

$result = mysql_query("SELECT * from player WHERE PLADS = 'GK' And SPILLER = '".$_SESSION['user']."' ORDER BY NAVN");
  while($row=mysql_fetch_array($result))
{

echo "<tr><td><input type='radio' name='io' value='o' checked='checked'></td><td><input type='radio' name='io' value='i'></td><td>" .$row['NAVN']. "</td><td>" .$row['KLUB']. "</td><td>" .$row['PLADS']. "</td></tr>";
}


$result = mysql_query("SELECT * from player WHERE PLADS = 'F' And SPILLER = '".$_SESSION['user']."' ORDER BY NAVN");
  while($row=mysql_fetch_array($result))
{

echo "<tr><td><input type='radio' name='io' value='o' checked='checked'></td><td><input type='radio' name='io' value='i'></td><td>" .$row['NAVN']. "</td><td>" .$row['KLUB']. "</td><td>" .$row['PLADS']. "</td></tr>";
}


$result = mysql_query("SELECT * from player WHERE PLADS = 'M' And SPILLER = '".$_SESSION['user']."' ORDER BY NAVN");
  while($row=mysql_fetch_array($result))
{

echo "<tr><td><input type='radio' name='io' value='o' checked='checked'></td><td><input type='radio' name='io' value='i'></td><td>" .$row['NAVN']. "</td><td>" .$row['KLUB']. "</td><td>" .$row['PLADS']. "</td></tr>";
}

$result = mysql_query("SELECT * from player WHERE PLADS = 'A' And SPILLER = '".$_SESSION['user']."' ORDER BY NAVN");
  while($row=mysql_fetch_array($result))
{

echo "<tr><td><input type='radio' name='io' value='o' checked='checked'></td><td><input type='radio' name='io' value='i'></td><td>" .$row['NAVN']. "</td><td>" .$row['KLUB']. "</td><td>" .$row['PLADS']. "</td></tr>";
}


$result = mysql_query("SELECT * from player WHERE PLADS = 'T' And SPILLER = '".$_SESSION['user']."' ORDER BY NAVN");
  while($row=mysql_fetch_array($result))
{

echo "<tr><td><input type='radio' name='io' value='o' checked='checked'></td><td><input type='radio' name='io' value='i'></td><td>" .$row['NAVN']. "</td><td>" .$row['KLUB']. "</td><td>" .$row['PLADS']. "</td></tr>";
}

echo "</table>";
?>




Den vil lave en liste med
2 GK
6 F
6 M
2 A
2 T

Så vil jeg gerne have at man man kan sende følgende til en database.

Alle spillerne skal sendes til en database der hedder "runde" under følgende felter:

"navn", "klub", "plads", "user" og "io"


Men kun hvis visse krav fra radio knapperne er godkendt.
Et vis antal af hver type skal være mærket i radio knappen "i"

Krav 1:

Der skal være 1, og kun 1 spiller af typen GK der har er mærket "i"


Krav 2:

Der skal være 1, og kun 1 spiller af typen A der har er mærket "i"


Krav 3:

Der skal være 1, og kun 1 spiller af typen T der har er mærket "i"


Krav 4:

Der skal være enten 3 F'er og 3 M'er, eller 2F'er og 4 M'er der
har er mærket "i"


Hvis disse krav ikke er overholdt skal der komme en besked om fejl.

Hvis data er blevet sendt til databasen skal man ende på samme side hvor man kan redigere sine valg.


Ved ikke om nogen kan hjælpe mig med dette.
Jeg er ikke så god til at bygge sådan noget op selv. Men hvis nogen vil gøre det for mig kan jeg selv lege med det.
Der er rigtigt mange andre ting der skal blandes ind i denne side. Så kommer til at lege rigtigt meget med det.

Nu håber jeg det er lidt overskueligt og nemt at forstå.
Avatar billede Slettet bruger
05. januar 2011 - 10:55 #1
Har så et nyt problem. Alle radiokanpperne ender jo med at have samme navn. Så jeg kan kun vælge en af dem. :S
Avatar billede HBP2 Praktikant
05. januar 2011 - 14:07 #2
Det lyder mere som en opgave, end som et problem.

Kan du ikke starte med at slå de mange DB-udtræk sammen til et enkelt - så bliver det noget nemmere at overskue:

SELECT navn,klub,plads FROM player WHERE plads IN('GK','F','M','A','T') AND spiller='$user' ORDER BY plads,navn;

Dine komplicerede regler er for meget for HTMLs radio-knapper. Enten skal du lave en masse javascript til at tjekke det, ellers også skal du tjekke gyldigheden når valgene er sendt til serveren. Det sidste er det nemmeste (synes jeg).

Jeg ved ikke om det kun er tilladt at vælge en knap i hver søjle eller i hver række?
Avatar billede Slettet bruger
05. januar 2011 - 14:23 #3
Se det var jo lidt nemmere hvis man kunne trække spillerne ud på den måde.

Jeg kan bare ikke få det til at virke da der ikke bliver udskrevet nogle spiller.

Det der skal vælges er en i hver række.
Og det er også den sidste med at tjekke når valget skal sendes til server, som jeg går efter.
Avatar billede Slettet bruger
05. januar 2011 - 14:31 #4
Nu fik jeg den til at skrive spillerne ud.
Men de kommer bare i forkerte række følge.

Jeg skulle gerne have dem til at komme som du skriver:
GK, F, M, A, T
Men de kommer i:
T, A, GK, F, M
Avatar billede HBP2 Praktikant
05. januar 2011 - 14:45 #5
Tja, hvis de absolut skal komme i den rækkefølge så kan du ikke brug SQL sortering ikke.
Jeg vil stadig mene at det kan betale sige at generere alle knapper i en enkelt løkke (så du kun skal rette et sted hvis du vil lave knapperne om), men så skal du selv sortere dem:

// hent det hele
$unsorted = array();
$result = mysql_query(bla bla bla);
while ($row = mysql_fetch_array($result))
  $unsorted[] = $row;
// sorter
$sorted = array();
$pladser = array("GK","F","M","A","T");
foreach ($pladser as $plads)
  foreach ($unsorted as $row)
    if ($row['plads'] == $plads)
      $sorted[] = $row;
// vis det hele
foreach ($pladser as $key => $row) {
  $navn = htmlspecialchars($row['navn']); // hvis danske tegn
  $klub = htmlspecialchars($row['klub']);
  echo "<tr> .... bla bla bla";
}

Mon ikke databasen osse indeholder et "id" felt? F.eks.
  SELECT id,plads,navn,klub FROM ....
Så kan du bruge "id" feltet som en del af navnet på hver knap, på den måde kan man kune vælge en knap i hver række.
Avatar billede HBP2 Praktikant
05. januar 2011 - 14:47 #6
hov - der er vist en fejl i min PHP:

5. sidste linie skal være:

  foreach ($sorted as $key => $row) {
Avatar billede Slettet bruger
05. januar 2011 - 15:21 #7
Det med id var også det jeg ville til at ind på.
Da det er den eneste måde jeg kan give dem deres eget navn.

Der er et problem her:
Parse error: syntax error, unexpected T_STRING in ...test.php on line 13


  foreach ($unsorted as $row)
    if ($row['plads'] == $plads)  <--- Linje 13
      $sorted[] = $row;
Avatar billede HBP2 Praktikant
05. januar 2011 - 16:06 #8
Jeg kan ikke se nogen fejl i den linie.
Er du sikker på at linie 13 faktisk er den linie? Nogen gange tæller PHP linienumre på en underlig måde.
Avatar billede Slettet bruger
05. januar 2011 - 16:16 #9
Har lige prøvet at kopiere det ind du skrev igen.
Der kom en ekstra linje på da jeg ikke havde "//hent det hele" med før.

Og nu siger den linje 14:


<?
include('config.php);

// hent det hele
$unsorted = array();
$result = mysql_query("SELECT plads,spiller,klub,navn from valg WHERE plads And spiller = Wagner ORDER BY navn");
while ($row = mysql_fetch_array($result))
  $unsorted[] = $row;
// sorter
$sorted = array();
$pladser = array("GK","F","M","A","T");
foreach ($pladser as $plads)
  foreach ($unsorted as $row)
    if ($row['plads'] == $plads)
      $sorted[] = $row;
// vis det hele
foreach ($sorted as $key => $row) {
  $navn = htmlspecialchars($row['navn']); // hvis danske tegn
  $klub = htmlspecialchars($row['klub']);

echo "<tr><td>" .$row['navn']. "</td><td>" .$row['klub']. "</td><td>" .$row['plads']. "</td></tr>";
}
?>
Avatar billede HBP2 Praktikant
05. januar 2011 - 16:25 #10
Du bør anstrenge dig lidt mere inde du henvender dig til eksperten.dk.

Du har en fejl her:

include('config.php); // mangler afsluttende '

Hvis du nu brugte en editor som farver teksten efter syntaks...
Avatar billede Slettet bruger
05. januar 2011 - 16:28 #11
Weee fandt selv problemet....
Skal lige flette det ind hvor det rigtigt skal bruges.
Avatar billede Slettet bruger
05. januar 2011 - 16:34 #12
Sådan...
Nu var det jo sådan at jeg havde prøvet det på siden hvor det skulle bruges.
Det virkede ikke og så lavede jeg lige hurtigt den test.
Her var config.php fejlen.

Men det var ikke den eneste fejl.
Og derfor virkede den ikke på siden hvor den skulle bruges.

Fejlen var i:
$result = mysql_query("SELECT plads,spiller,klub,navn from valg WHERE plads And spiller = Wagner ORDER BY navn");

Hvor jeg har "plads AND" hvilket ikke skulle være der.
Avatar billede HBP2 Praktikant
05. januar 2011 - 16:45 #13
Men hvis du nu kan generere en HTML side som ser ud som den skal, med knapper passende navne, og valgene bliver sendt tilbage til serveren, så kan du nu gå $_POST[] (eller $_GET[]) igennem og udtrække "id" delen af hver valg. Så kan du igen læse det hele fra databasen og begynde på det med at undersøge om valgene stemmer med dine krav.
Avatar billede Slettet bruger
05. januar 2011 - 18:16 #14
Det er så her jeg er lidt lost om hvordan det skal laves.

Hvis man har denne linje:

echo "<tr><td><input type='radio' name='" .$row['id']. "' value='o' checked='checked'></td><td><input type='radio' name='" .$row['id']. "' value='i'></td><td>" .$row['navn']. "</td><td>" .$row['klub']. "</td><td>" .$row['plads']. "<input type='hidden' value='$runde' name="runde'></td></tr>";


Så skal man vel indsætte en masse hidden input felter til navn og plads osv?

Og kan man så bare sende det afsted sådan:


<?php
session_start();
Header( "Location: sendt.php" );

include("config.php");

$navn = $_REQUEST["navn"];
$plads = $_REQUEST["plads"];
$klub = $_REQUEST["klub"];
$runde = $_REQUEST["runde"];
$spiller = $_SESSION['user'];

$status = '1'
{

$query = mysql_query("insert into valg (navn,klub,plads,spiller,runde) values ('$navn','$klub','$plads','$spiller','$runde')");
}

mysql_query("UPDATE user SET R'$runde'='$status' WHERE user='$_SESSION['user']' ") or die(mysql_error());

}

?>
Avatar billede HBP2 Praktikant
05. januar 2011 - 18:34 #15
nej, hver <input> indeholder et navn og en værdi:

  <input name='foo' value='bar' />

og det er dem som bliver overført til serveren.
Alle <input> skal pakkes ind i

  <form method="POST" action="upload.php">
  <input name='foo' value='bar' />
  </form>

så vil $_REQUEST[] i upload.php kunne scannes med

  foreach ($_REQUEST as $name => $value) {
    if ($name == "foo") {
      // user entered 'bar'
    }
  }

Det vil sikkert være smart at indsætte noget foran 'id' i hvert name='', f.eks.

  echo "<tr><td><input name='foo".$row['id']."' ... ";

og så tjekke om de første 3 tegn er 'foo':

  foreach ($_REQUEST as $name => $value) {
    if (substr($name, 0, 3) == "foo") {
      $id = intval(substr($name, 3));
      // læs data for rækken $id fra database
    }
  }
Avatar billede Slettet bruger
05. januar 2011 - 19:02 #16
Uha.. Nu er vi ude i noget jeg ikke har leget  med før eller kan gennemskue.

Det med at lave en form osv kan jeg sagtens.
Men så kommer det næste, at skulle sende det til databasen.

Skulle lave alle de If'er det tror jeg ikke lige jeg kan rode sammen.

Og de input du snakker om er det mine radio felter?

Og i trækker du id'et ud af navne feltet så du kan bruge det til at hente de andre data om spilleren i databasen?
Avatar billede HBP2 Praktikant
05. januar 2011 - 19:29 #17
ja, <input> er dine radio knapper.

Og når du har id'et kan du få resten af info om spilleren med:

$id = intval(substr($name, 3));
$query = "SELECT navn,plads,klub FROM player WHERE id=$id;";
...

Så skal du osse lave noget i retningen af:

$antal_GK = 0;
$antal_A = 0;

foreach ($_REQUEST ...) {
  // udtræk id
  // læs info om id fra DB
  $row = mysql_ .... ($query);
  $plads = $row['plads'];
  if ($plads == "GT")  $antal_GK++;
  if ($plads == "A")    $antal_A++;
}

og derefter kommer så dine regler:

$ok = 1;
if ($antal_GK != 1)  $ok = 0;

osv. osv.
Avatar billede Slettet bruger
05. januar 2011 - 19:45 #18
Kan du forklare hvad der sker her:


$antal_GK = 0;
$antal_A = 0;

foreach ($_REQUEST ...) {
  // udtræk id
  // læs info om id fra DB
  $row = mysql_ .... ($query);
  $plads = $row['plads'];
  if ($plads == "GT")  $antal_GK++;
  if ($plads == "A")    $antal_A++;
}

og derefter kommer så dine regler:

$ok = 1;
if ($antal_GK != 1)  $ok = 0;
Avatar billede repox Seniormester
05. januar 2011 - 19:45 #19
Det med SQL sortering og udtræk kan altså løses på en meget simplere måde:
SELECT *
FROM player
WHERE SPILLER = $_SESSION['user']
ORDER BY find_in_set(col1, 'GK,F,M,A,T'), NAVN
Avatar billede repox Seniormester
05. januar 2011 - 19:47 #20
Og find_in_set() skal selvfølgelig lige tilpasses PLADS feltet:
SELECT *
FROM player
WHERE SPILLER = $_SESSION['user']
ORDER BY find_in_set(PLADS, 'GK,F,M,A,T'), NAVN
Avatar billede Slettet bruger
05. januar 2011 - 20:19 #21
Det var en lidt bedre.
Det var nemmere at forstå for en noobie som mig.
Avatar billede HBP2 Praktikant
05. januar 2011 - 21:02 #22
Jeg kender ikke mysql - bruger selv PostgreSQL som vist ikke har 'find_in_set' funktionen. Beklager.

Forklaring til seneste PHP kode: du ønsker jo at tælle op hvor mange af hver slags 'plads' som brugeren har valgt, der skal være nøjagtig 1 'GK' osv.
Så du skal gå igennem alle elementer i $_REQUEST og hvis det er et element som hører til brugerens valg, så udtrækker du 'id' for det element. 'id' var jo noget der refererede til en række i databasen, så du læser igen den række fra databasen og bruger den info til at tælle op hvormange af hver slags 'plads' der er i det valgte.

Jeg gider selvf. ikke skrive hver eneste detalje - du skal selv lave noget, ellers lærer du aldrig noget.
05. januar 2011 - 21:08 #23
Nu har jeg bakset med en loesning.  Det tog mere tid end jeg havde regnet med, men jeg fandt det et interessant problem, og der sad meget personligt laerestof i.  I mellemtiden er der kommet en lang raekke indlaeg.  Det er ikke min hensigt at ignorere disse indlaeg, men lad mig nu alligevel bringe min loesning.

Foerst:  Jeg forstaar opgaven er, for en given bruger, at finde brugerens spillere i databasetabellen players, presentere disse paa en hjemmeside paa en saadan maade at brugeren kan vaelge et hold for en runde, og hvis holdet er sammensat korrekt at indfoere holdet i en databasetabel og ellers at give en fejlmelding.

Jeg vil foreslaa at du i tabellen players indfoerer en id for playerne.  Det goer oplysningerne nemmere at bruge, hvilket jeg skal demonstrere.  Yderligere vil jeg foreslaa at du paa hjemmesiden viser hver spiller med en checkbox i stedet for med radiobuttons.  Det er ogsaa nemmere at have med at goere.

For at udarbejde og teste en loesning har jeg lavet en databasetabel ddd_players og en komplet php kode.  Jeg viser begge nedenfor.

Min foreslaaede fremgangsmaade er, som ogsaa HBP2 siger, at lave en enkel forespoergsel: "SELECT id, navn, klub, plads FROM ddd_player WHERE spiller = '$spiller'"

$spiller skulle vaere $_SESSION['user'], men for test har jeg sat $spiller = 'spiller1'

For hver spiller der fremkommer fra forespoergselen gemmer jeg id og plads i en array for senere brug, og derudover laver jeg en formular der indeholder en tabel checkbox, navn, klub, og plads for spilleren, og derudover en submit knap.

Naar der er klikket i checkboxene og paa submit knappen saa dannes der en ny array med id'erne af de valgte spillere.  Denne array sammenlignens saa med den foerste array for at checke om holdet er sammesat korrekt, altsaa en GK, en A, o.s.v.  Hvis nej saa kommer der en fejlmelding.  Hvis ja saa sendes holdet til databasen.

For selve indsaetningen af det (korrekt) valgte hold har jeg ikke skrevet kode (men jeg kan i morgen hvis det stadig har interesse.)  Princippet skulle vaere "INSERT INTO runde.. SELECT ... FROM  players WHERE players.id IN([listen af valgte id'er])

Du kan proeve min kode af i http://christianjorgensen.be/ddd.php

ddd_Players tabellen jeg bruger ser saaledes ud:

        row(s) starting from record # 
in  horizontal horizontal (rotated headers) vertical mode and repeat headers after  cells     
          id  navn  klub  plads  spiller 
      1 navn1 klub1 GK spiller1
      2 navn2 klub2 GK spiller1
      3 navn3 klub3 A spiller1
      4 navn4 klub4 A spiller1
      5 navn5 klub5 T spiller1
      6 navn6 klub6 T spiller1
      7 navn7 klub7 F spiller1
      8 navn8 klub8 F spiller1
      9 navn9 klub9 F spiller1
      10 navn10 klub10 F spiller1
      11 navn11 klub11 F spiller1
      12 navn12 klub12 M spiller1
      13 navn13 klub13 M spiller1
      14 navn14 klub14 M spiller1
      15 navn15 klub15 M spiller1
      16 navn16 klub16 M spiller1
      17 navn17 klub17 A spiller2
      18 navn18 klub18 A spiller2

og php koden er her:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>ddd</title>
</head>

<body>
<?
$link = mysql_connect ('christianjorgensen.be.mysql', 'christianjoygen', 'dnyBKKbe') or die(mysql_error());
mysql_select_db('christianjoygen') or die('Could not select database');

//else
{
  //$spiller = $_SESSION['user'];
  $spiller = 'spiller1';

  $result = mysql_query("SELECT id, navn, klub, plads FROM ddd_player WHERE spiller = '$spiller' ORDER BY plads")or die(mysql_error());
  echo "<table>";
  echo "<form action='' method='POST'>";
  echo "<tr><td>check</td><td>navn</td><td>club</td><td>plads</td></tr>";
  while($row = mysql_fetch_array($result))
  {
    $id = $row['id'];
    $navn = $row['navn'];
    $klub = $row['klub'];
    $plads = $row['plads'];
    $pladsarray[$id] = $plads;
    echo "<tr><td><input type='checkbox' name='spillercheck[]' value=$id></td><td>$navn</td><td>$club</td><td>$plads</td>";
  }
  echo "<tr><td colspan='4'>";
  $p = implode(",",$pladsarray);
  echo "<input type='hidden' name='p' value='$p'>";
  echo "<input type='submit' name='submitPlayers' value='Gem spillere'>";
  echo "</td></tr>";
  echo "</form>";
  echo "</table>";
}
//print_r($pladsarray);

if($_POST['submitPlayers'])
{
  $inDatabase = "FALSE";
  $spillerchecks = $_POST['spillercheck'];
  //count gk
  $gk = 0;
  foreach($spillerchecks as $value) if($pladsarray[$value] == 'GK') $gk++;
  if($gk == 1)
  {
    //count a
    $a = 0;
    foreach($spillerchecks as $value) if($pladsarray[$value] == 'A') $a++;
    if($a == 1)
    {
      //count t
      $t = 0;
      foreach($spillerchecks as $value) if($pladsarray[$value] == 'T') $t++;
      if($t == 1)
      {
        //count f
        $f = 0;
        foreach($spillerchecks as $value) if($pladsarray[$value] == 'F') $f++;
        //count m
        $m = 0;
        foreach($spillerchecks as $value) if($pladsarray[$value] == 'M') $m++;
        if($f == 2 && $m == 4 || $f == 3 && $m == 3 || $f == 4 && $m == 2) $inDatabase = "TRUE";
      }
    }   
  }
  echo "IN DATABASE = $inDatabase <br>";
}

mysql_close($link); 
?>
</body>
</html>
05. januar 2011 - 21:12 #24
Jeg glemte at sige at der paa min testside for et korrekt sammensat hold, et der skulle placeres i databasen, skrives "IN DATABASE = TRUE" og ellers "IN DATABASE = FALSE."
Avatar billede Slettet bruger
05. januar 2011 - 21:24 #25
Vi har jo alle forskellige måder at lære på.
Jeg lære bedst ved at have tingene i hånden og undersøge det.

Men det du prøver at få mig til at lave, er at der kun må være en GK?

Der må gerne være 2.
Men der må kun være en GK hvor radio input = i
Den anden skal også sendes bare med radio input = 0

Kan se at jeg havde glemt den del før. i #14
Det skulle nok have set sådan ud:

$query = mysql_query("insert into valg (navn,klub,plads,spiller,runde,io) values ('$navn','$klub','$plads','$spiller','$runde',$io)");
}


Bare du ikke misforstår min ringe måde at få forklaret tingene.
Avatar billede Slettet bruger
05. januar 2011 - 21:45 #26
Christian --> lige med det første ser det rigtigt godt ud.
Skal nok lige lege lidt med det for at forstå det helt.

Men jeg tænkte på om det var en fordel med check boksen.
For det skal være sådan at dem man ikke tjekker af også bliver sendt til databsen som beskrevet i #25

Altså så alle bliver sendt i til databasen "valg" hvor alle oplysningerne (navn,klub,spiller,plads,io)
Hvor io skal se om de har været markeret.
Så hvis de er markeret skal der sendes et (i) og hvis de ikke er skal der sendes et (o)
05. januar 2011 - 22:15 #27
Jamen hvis alle skal i databasen saa har jeg grundigt misforstaaet opgaven.  Jeg maa tilstaa at jeg ikke har studeret alle 25 indlaeg i detaljer men har koncentreret mig om dit oprindelige spoergsmaal hvor du skriver:

"Alle spillerne skal sendes til en database der hedder "runde" under følgende felter: .... Men kun hvis visse krav fra radio knapperne er godkendt. ... Hvis disse krav ikke er overholdt skal der komme en besked om fejl.
."

Det er nok mig der er tumpet, men jeg har svaert ved at fatte hvordan det kan forstaas anderledes end at spillere skal sendes til databasen men kun hvis et antal krav er opfyldt, ellers skal der komme en besked om fejl!

Du slutter dit oprindelige spoergsmaal med at oenske at "Nu håber jeg det er lidt overskueligt og nemt at forstå."  Det var det aabenbart ikke for en dummerik som mig, saa jeg beklager hvis jeg har spildt din (og min) tid ved ikke at kunne laese indenad.

Men under alle omstaendigheder, ha' fortsat en god aften.
Avatar billede Slettet bruger
05. januar 2011 - 22:27 #28
Christian Det er skam ikke spildt.
Er meget glad for det og jeg lære også af det.
Er da ked af at jeg har svært ved at forklare mig.
:(

Det er rigtigt at kravene skal overholdes.


Der skal være 1, og kun 1 spiller af typen GK der har er mærket "i"


Er ked af hvis der kan misforståes.
Men derfor havde jeg 2 radio knapper hvor den anden var mærket "o"

Det er bare vigtigt at det er X antal der skal bruges af hver.
Som du har ramt helt rigtigt.

Jeg skal også bruge dem der ikke er valgt = "o"'erne
De skal bare sendes til databasen med et "o" istedet for et "i" i feltet "io" i databasen.
05. januar 2011 - 22:42 #29
Det synes jeg f.... er svaert at forstaa ud fra det du skrev i dit oprindelige indlaeg.

Men saa giv mig (og de andre medlemmer) en beslutnings-opskrift saasom:

Hvis bruger vaelger et hold bestaaende af en GT, en A, ....o.s.v saa placer alle spillere i databasen, medlemmer af det valgte hold med i og de andre med o.

Ellers (det vil sige hvis det hold brugeren vaelger ikke er sammensat korrekt, for eksempel enten indeholder to GT'er eller ingen) .... [hvad skal der saa ske? Skal alle spillere indsaettes i databasen som i eller som o eller skal ingen spillere indsaettes i databasen eller hvad?]

Hvis du kan skaere det ud i pap saa selv jeg kan forstaa det saa skal jeg proeve i morgen at kode det.
Avatar billede Slettet bruger
05. januar 2011 - 23:29 #30
Jamen synes faktisk jeg har forklaret det ok.
Men prøver da igen..

Jeg har fået lavet denne kode til at indtaste data med:

echo "<form name='form1' method='post' action='send.php'>";
echo "<center><table border='1' class='sample'>";


$result = mysql_query("SELECT * from player WHERE SPILLER = '".$_SESSION['user']."' ORDER BY find_in_set(PLADS, 'GK,F,M,A,T'), NAVN");
while($row=mysql_fetch_array($result))
{
echo "<tr><td><input type='radio' name='" .$row['ID']. "' value='o' checked='checked'></td><td><input type='radio' name='" .$row['ID']. "' value='i'></td><td>" .$row['NAVN']. "</td><td>" .$row['KLUB']. "</td><td>" .$row['PLADS']. "</td></tr>";
}


echo "</table>";
echo "<center><input type='submit' name='submit' value='Send dit hold'></center></form>";


Jeg ville så lave send.php som den side der sendte til databasen.
Det er bare den jeg manglede at få lavet.

Hver bruger får med det overstående sine 16 spiller frem:
2 stk GK
5 stk F
5 stk M
2 stk A
2 stk T


Ud for alle spillerne er der 2 radio input.
En med value='i' og en med value='o'
(står for "ind" og "out")

Hver bruger skal vælge 9 spiller der skal være "inde". Resten skal være "out"

De 9 spiller skal være:

Enten:
1 GK
1 A
1 T
2 F og 4 M

Eller:
1 GK
1 A
1 T
3 F og 3 M

Altså til sammen skal der være 6 spiller af typen F og M
Men det skal være enten [2 F og 4 M] eller [3 F og 3 M]


Der skal komme fejl og intet skal sendes til databasen hvis følgende er valgt:
Hvis der er valgt 2 eller 0 GK'er
Hvis der er valgt 2 eller 0 A'er
Hvis der er valgt 2 eller 0 T'er
Hvis der ikke er valgt kombinationen af [2 F'er og 4 M'er] eller [3 F'er og 3 M'er].


Fejl beskeden kan bare være:
"Du skal vælge 1 GK, 1 A, 1 T og enten 2 F'er og 4 M'er eller 3 F'er og 3 M'er"


Hvis kravene er godkendt skal følgende sendes til databasen "runde" i disse felter:

"navn", "klub", "plads", "user" og "io"

Hvor "navn" er Spillernes navne
Hvor "klub" er spillernes klub
Hvor "plads" er spillernes plads (GK, F, M, A og T)
Hvor "user" er brugerens brugernavn $_SESSION['user']
Og hvor "io"  er et i eller et o alt efter hvilke radio input der er valgt. (value='o' eller value='i').


På den måde komme alle spillerne i databasen.
Og det er kun det antal spiller der må være inde der er inde resten er ude.


Håber at det var bedre. Du/i er meget velkommen til at spørger.
Avatar billede Slettet bruger
10. januar 2011 - 12:06 #31
Lukker.
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