Avatar billede mstorgaard Praktikant
21. august 2007 - 20:43 Der er 48 kommentarer og
1 løsning

Sætte et maks antal på mandlige deltagere i mysql

Jeg har prøvet at lave en metode, som gør at systemet afviser flere tilmeldinger af mandlige brugere, hvis der allerede er 10 tilmeldt til et arrangement, men systemet lader stadig mere end 10 deltage.

Herunder er det jeg har sat sammen.
Først tjekker scriptet om arrangementet har en grænse på 10, hvilket gøres i variablen $checkarr.
Derefter tjekkes der, hvor mange mandlige brugere, som er tilmeldt i variablen $checkmand.
Jeg kører så en if til at tjekke om $checkarr har en begrænsning på 10, derefter om der er 10 tilmeldte og til sidst om brugeren, som forsøger at tilmelde sig er mand.

$checkarr = mysql_fetch_array(mysql_query("SELECT antal FROM arrangementer WHERE id='" . $id . "'"));
$checkmand = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS tilmeldte FROM tilmeldte WHERE dinnerid='" . $id . "' AND koen='Mand'"));
if($checkarr['antal'] == 10 && $checkmand['tilmeldte'] == 10 && $row_bruger['koen'] == 'Mand') {
KORREKT
}

Men det virker bare ikke, hvad gør jeg galt?!
Avatar billede nielle Nybegynder
21. august 2007 - 20:48 #1
Maks 10 mænd?

Eller "ikke flere mænd hvis der allerede er 10 deltagere m/k"?
Avatar billede mstorgaard Praktikant
21. august 2007 - 20:49 #2
KORREKT skal så skiftes ud med "Arrangementet er fyldt"
Avatar billede mstorgaard Praktikant
21. august 2007 - 20:49 #3
"ikke flere mænd hvis der allerede er 10 deltagere m/k", men det er nok ikke så svært at udvide en maks 10 mænd til en maks 10 kvinder (:
Avatar billede nielle Nybegynder
21. august 2007 - 20:50 #4
Men der må godt komme flere kvinder selvom der allerede er 10 tilmældte?
Avatar billede mstorgaard Praktikant
21. august 2007 - 20:51 #5
Nej, men er det vigtigt, for at få det til at fungere med mænd? (:
Avatar billede nielle Nybegynder
21. august 2007 - 20:52 #6
Prøver bare at forstå problemstillingen. Det er altså ikke en øvre grænse på 10 personer i alt - der må godt være 10 mænd og 10 kvinder tilmeldt på samme tid?
Avatar billede mstorgaard Praktikant
21. august 2007 - 20:53 #7
Det er meningen der skal være 10/10 af m/k, ja.
Avatar billede nielle Nybegynder
21. august 2007 - 20:56 #8
Hvorfor ikke en mere simpel løsning så?

$koen = "Mand";
$checkKoen = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS tilmeldte FROM tilmeldte WHERE dinnerid='$id' AND koen='$koen'"));
if ($checkKoen['tilmeldte'] >= 10)
{
    echo "Der kan ikke tilmeldes flere $koen";
}
Avatar billede mstorgaard Praktikant
21. august 2007 - 20:58 #9
Det er jo også det der er essencen i min løsning, du har bare ikke alle mine ikke-konstanter med, da det ikke er alle arrangementerne, som skal have 10/10. Ellers er metoderne jo næsten ens.
Avatar billede nielle Nybegynder
21. august 2007 - 21:02 #10
Måske skulle du prøve at beskrive hvilken type arrengement der er tale om. Hvor mange hold er der, hvad er deres inbyrdes forhold til hinanden, og hvad er det med at der maks må være 10 m/k?
Avatar billede nielle Nybegynder
21. august 2007 - 21:07 #11
Eventuelt med nogle eksempler på hvad der er lovligt og hvad der er ulovligt.
Avatar billede mstorgaard Praktikant
21. august 2007 - 21:08 #12
Pointen er at et middagsarrangement oprettes til enten 20 personer af ét køn eller 10 kvinder og 10 mænd. Det skal så være sådan at systemet tjekker hvilken af løsningerne det er, og så tjekker, hvor mange tilmeldte der er af det køn, som brugeren nu er.

Variabler:
$id er arrangementets id.
$row_bruger['koen'] er brugerens køn.

'arrangementer' er tabellen med arrangementerne og 'antal' indeholder enten tallet '10' eller er tom, hvilket indikerer om der skal være 10/10 eller 20.

'tilmeldte' er tabellen med de tilmeldte og i den tabel skrives brugerens køn også, når en person tilmeldes. Denne kolonne hedder 'koen'.
Avatar billede nielle Nybegynder
21. august 2007 - 21:28 #13
$koen = $row_bruger['koen'];

$checkArr = mysql_fetch_array(mysql_query("SELECT antal FROM arrangementer WHERE id = '$id'"));

$checkKoen    = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS tilmeldte FROM tilmeldte WHERE dinnerid = '$id' AND koen = '$koen'"));
$checkModKoen = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS tilmeldte FROM tilmeldte WHERE dinnerid = '$id' AND koen != '$koen'"));

if ($checkArr['antal'] == 10)
{
    if ($checkKoen['tilmeldte'] >= 10)
    {
        echo "Der kan ikke tilmeldes flere $koen til dette arrengement";
    }
    else
    {
        // Ok at tilmelde personen.
    }
}
else
{
    if ($checkKoen['tilmeldte'] >= 20)
    {
        echo "Der kan ikke tilmeldes flere personer til dette arrengement";
    }
    else if ($checkModKoen['tilmeldte'] >0)
    {
        echo "Der kan ikke tilmeldes $koen til dette arrengement. Det er forbeholdt det anden køm."
    }
    else
    {
        // Ok at tilmelde personen.
    }
}
Avatar billede mstorgaard Praktikant
21. august 2007 - 22:14 #14
Det ser ud til at fungere, men jeg vil lige tjekke systemet igennem.

Smid et svar, så accepterer jeg, når jeg har fået bekræftet, at det fungerer (:
Avatar billede nielle Nybegynder
21. august 2007 - 22:28 #15
Svar :^)
Avatar billede mstorgaard Praktikant
22. august 2007 - 20:14 #16
Det er stadig muligt at tilføje 11 kvinder til et arrangement.
Avatar billede nielle Nybegynder
22. august 2007 - 20:18 #17
Scriptet er fuldstændigt symetrisk mht. mænd og kvinder - hvis du kan tilføje 11 kvinder kan du derfor også tilføge 11 mænd.

Umiddelbart kan jeg dog ikke se at det skulle være muligt - du må nok forklare en smule mere så.
Avatar billede mstorgaard Praktikant
22. august 2007 - 20:21 #18
Jeg ved ikke rigtig, hvad der er at tilføje.

Scriptet tillader simpelthen at man tilmelder sig som kvinde, selvom der allerede er tilmeldt 10 kvinder og 9 mænd.
Avatar billede nielle Nybegynder
22. august 2007 - 20:54 #19
Har du afprøvet den omvendte problemstilling: 10 mænd og 9 kvinder og så at tilmelde en mand mere?
Avatar billede mstorgaard Praktikant
23. august 2007 - 20:04 #20
Det fungerer med med mænd, men stadig ikke med kvinder.
Avatar billede nielle Nybegynder
23. august 2007 - 20:09 #21
Koden gør på ingen måde forskel på mænd og kvinder - enten fungere det for begge tilfælde eller også fejler den for begge. Der må derfor være noget andet på spil.

Prøv at poste hele din kode.
Avatar billede mstorgaard Praktikant
23. august 2007 - 22:21 #22
Det er en ret lang kode, men grundlæggende er den ligesom den, du har skrevet:

$id = mysql_escape_string($_GET['id']);
$id2 = $row_bruger['id'];
$alder1 = 2008-date("Y", $row_bruger['foedselsdato']);
$alder2 = 2006-date("Y", $row_bruger['foedselsdato']);
$sex = $row_bruger['sex'];
$koen = $row_bruger['koen'];
$gratis = $row_bruger['gratis'];
$checkStatus    = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS status FROM arrangementer WHERE id = '$id' AND alder1 < '$alder1' AND alder2 > '$alder2' AND sex = '$sex'"));
$checkBruger    = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS bruger FROM tilmeldte WHERE dinnerid = '$id' AND brugerid = '$id2' AND standby = '0'"));
$checkStandby    = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS standby FROM tilmeldte WHERE dinnerid = '$id' AND brugerid = '$id2' AND standby = '1'"));
$checkArr        = mysql_fetch_array(mysql_query("SELECT antal FROM arrangementer WHERE id = '$id'"));
$checkKoen        = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS tilmeldte FROM tilmeldte WHERE dinnerid = '$id' AND koen = '$koen'"));
$checkModKoen    = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS tilmeldte FROM tilmeldte WHERE dinnerid = '$id' AND koen != '$koen'"));
if ($checkBruger['bruger'] == 0) {
  if ($checkStatus['status'] == 1) {
    if ($checkArr['antal'] == 10) {
      if ($checkKoen['tilmeldte'] >= 10) {
        if ($checkStandby['standby'] == 0) {
          mysql_query("INSERT INTO tilmeldte VALUES ('', '$id', '$id2', '$koen', 'Afventer', '1', '')");
          echo 'Tilmeldingen til det ønskede arrangement er desværre allerede lukket.<br /><br />';
          echo 'Du vil i stedet blive tilføjet på Standby Listen. <br /><br />';
          echo 'Kommer der afbud til det pågældende arrangement, vil personer på Standby Listen modtage en e-mail med information herom. <br /><br />';
          echo '<b>Bemærk:</b> Eventuelle afbud kan komme helt frem til arrangementet finder sted, så hold løbende øje med information på din e-mail.<br /><br />';
          echo '</div>';
          echo '<div class="boxcontent2">';
          echo '<input type="button" onclick="window.self.close()" value=" Ok " class="boxsubmit" />';
        } else {
          if ($checkKoen['tilmeldte'] < 20) {
            mysql_query("DELETE FROM tilmeldte WHERE dinnerid = '$id' AND brugerid = '$id2'");
            mysql_query("INSERT INTO tilmeldte VALUES ('', '$id', '$id2', '$koen', 'Afventer', '0', '$time')");
            echo '<meta http-equiv="refresh" content="10;url=https://betaling.wannafind.dk/proxy/p.php/http://www.dinnerclub.dk/new/tilmeld_betaling.php?id=' . $_GET['id'] . '">';
            echo 'Du ønsker at tilmelde dig et arrangement og viderestilles til betaling inden for 10 sekunder. <br /><br />';
            echo '<i>Finder betalingen ikke sted <b>inden for 15 minutter</b> vil din tilmelding automatisk blive annulleret og pladsen til det ønskede arrangement vil herefter blive frigivet igen.</i><br /><br />';
            echo 'Hvis du ikke er blevet videresendt, klik <a href="https://betaling.wannafind.dk/proxy/p.php/http://www.dinnerclub.dk/new/tilmeld_betaling.php?id=' . $_GET['id'] . '" class="link">her</a>.<br /><br />';
            echo '</div>';
            echo '<div class="boxcontent2">';
            echo '<input type="button" onclick="parent.location.href=\'https://betaling.wannafind.dk/proxy/p.php/http://www.dinnerclub.dk/new/tilmeld_betaling.php?id=' . $_GET['id'] . '\';" value=" Ok " class="boxsubmit" />';
          } else {
            echo 'Du er allerede tilmeldt arrangementet som standby.<br /><br />';
            echo '</div>';
            echo '<div class="boxcontent2">';
            echo '<input type="button" onclick="window.self.close()" value=" Ok " class="boxsubmit" />';
          }
        }
      } else {
        if ($vip == 'true' && $gratis == '1') {
          mysql_query("INSERT INTO tilmeldte VALUES ('', '$id', '$id2', '$koen', 'Betalt', '0', '')");
          mysql_query("UPDATE brugere SET gratis = '0' WHERE id = '$id2'");
          echo 'Du er nu tilmeldt arrangementet. Rigtig god fornøjelse.<br /><br />';
          echo '</div>';
          echo '<div class="boxcontent2">';
          echo '<input type="button" onclick="window.self.close()" value=" Ok " class="boxsubmit" />';
        } else {
          mysql_query("INSERT INTO tilmeldte VALUES ('', '$id', '$id2', '$koen', 'Afventer', '0', '$time')");
          echo '<meta http-equiv="refresh" content="10;url=https://betaling.wannafind.dk/proxy/p.php/http://www.dinnerclub.dk/new/tilmeld_betaling.php?id=' . $_GET['id'] . '">';
          echo 'Du ønsker at tilmelde dig et arrangement og viderestilles til betaling inden for 10 sekunder. <br /><br />';
          echo '<i>Finder betalingen ikke sted <b>inden for 15 minutter</b> vil din tilmelding automatisk blive annulleret og pladsen til det ønskede arrangement vil herefter blive frigivet igen.</i><br /><br />';
          echo 'Hvis du ikke er blevet videresendt, klik <a href="https://betaling.wannafind.dk/proxy/p.php/http://www.dinnerclub.dk/new/tilmeld_betaling.php?id=' . $_GET['id'] . '" class="link">her</a>.<br /><br />';
          echo '</div>';
          echo '<div class="boxcontent2">';
          echo '<input type="button" onclick="parent.location.href=\'https://betaling.wannafind.dk/proxy/p.php/http://www.dinnerclub.dk/new/tilmeld_betaling.php?id=' . $_GET['id'] . '\';" value=" Ok " class="boxsubmit" />';
        }
      }
    } else {
      if ($checkKoen['tilmeldte'] >= 20) {
        mysql_query("INSERT INTO tilmeldte VALUES ('', '$id', '$id2', '$koen', 'Afventer', '1', '')");
        echo 'Tilmeldingen til det ønskede arrangement er desværre allerede lukket.<br /><br />';
        echo 'Du vil i stedet blive tilføjet på Standby Listen. <br /><br />';
        echo 'Kommer der afbud til det pågældende arrangement, vil personer på Standby Listen modtage en e-mail med information herom. <br /><br />';
        echo '<b>Bemærk:</b> Eventuelle afbud kan komme helt frem til arrangementet finder sted, så hold løbende øje med information på din e-mail.<br /><br />';
        echo '</div>';
        echo '<div class="boxcontent2">';
        echo '<input type="button" onclick="window.self.close()" value=" Ok " class="boxsubmit" />';
      } else if ($checkModKoen['tilmeldte'] > 0) {
        echo 'Du har ikke det køn, dette arrangement henvender sig til, og har derfor ikke mulighed for at tilmeldte dig dette.<br /><br />';
        echo '</div>';
        echo '<div class="boxcontent2">';
        echo '<input type="button" onclick="window.self.close()" value=" Ok " class="boxsubmit" />';
      } else {
        mysql_query("INSERT INTO tilmeldte VALUES ('', '$id', '$id2', '$koen', 'Afventer', '0', '$time')");
        echo '<meta http-equiv="refresh" content="10;url=https://betaling.wannafind.dk/proxy/p.php/http://www.dinnerclub.dk/new/tilmeld_betaling.php?id=' . $_GET['id'] . '">';
        echo 'Du ønsker at tilmelde dig et arrangement og viderestilles til betaling inden for 10 sekunder. <br /><br />';
        echo '<i>Finder betalingen ikke sted <b>inden for 15 minutter</b> vil din tilmelding automatisk blive annulleret og pladsen til det ønskede arrangement vil herefter blive frigivet igen.</i><br /><br />';
        echo 'Hvis du ikke er blevet videresendt, klik <a href="https://betaling.wannafind.dk/proxy/p.php/http://www.dinnerclub.dk/new/tilmeld_betaling.php?id=' . $_GET['id'] . '" class="link">her</a>.<br /><br />';
        echo '</div>';
        echo '<div class="boxcontent2">';
        echo '<input type="button" onclick="parent.location.href=\'https://betaling.wannafind.dk/proxy/p.php/http://www.dinnerclub.dk/new/tilmeld_betaling.php?id=' . $_GET['id'] . '\';" value=" Ok " class="boxsubmit" />';
      }
    }
  } else {
    echo 'Du kan ikke tilmelde dig dette arrangement.<br /><br />
Dette skyldes at du:<br /><br />
- ikke er inden for den rigtige alderskategori <br /><br />
og/eller<br /><br />
- ikke har den seksualitet, dette arrangement henvender sig til.<br /><br />';
    echo '</div>';
    echo '<div class="boxcontent2">';
    echo '<input type="button" onclick="window.self.close()" value=" Ok " class="boxsubmit" />';
  }
} else {
  echo 'Du er allerede tilmeldt arrangementet.<br /><br />
Fremgår arrangementet ikke under "Dine tilmeldte arrangementer" skal du opdatere "Din side", hvorefter arrangementet vil fremgå.<br /><br />';
  echo '</div>';
  echo '<div class="boxcontent2">';
  echo '<input type="button" onclick="window.self.close()" value=" Ok " class="boxsubmit" />';
}
Avatar billede nielle Nybegynder
23. august 2007 - 22:28 #23
Jeg skal lige høre: Når du skriver kønnet på en deltager i tabellen skrover du så 'Mand' og 'Kvinde'?
Avatar billede nielle Nybegynder
23. august 2007 - 22:59 #24
Jeg kan se at du også har en slags venteliste når der er for mange. Dem du sætter på ventelisten bliver jo også talt med i totalen, og så kan der gå ged i tallene...
Avatar billede nielle Nybegynder
24. august 2007 - 07:07 #25
Jeg har ikke haft tid til at studere koden i alle detaljer, men jeg kan allerede nu se - ved at studere hvordan tingene er indrykket i forhold til hinanden - at det ikke er helt den samme kode. Det er glippet et eller andet et sted.

Mit råd er at i stedet for ar forsøge at lave det hele i een stor blot kode, at du så istedet definere nogle funktioner som du kan kalde. Hver af disse funktionskald tager sig så at noget specifik funktionalitet:

$koen = $row_bruger['koen'];

$checkArr = mysql_fetch_array(mysql_query("SELECT antal FROM arrangementer WHERE id = '$id'"));

$checkKoen    = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS tilmeldte FROM tilmeldte WHERE dinnerid = '$id' AND koen = '$koen'"));
$checkModKoen = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS tilmeldte FROM tilmeldte WHERE dinnerid = '$id' AND koen != '$koen'"));

if ($checkArr['antal'] == 10)
{
    if ($checkKoen['tilmeldte'] >= 10)
    {
    SaetPersonPaaVenteliste($id, $navn, $koen);
    }
    else
    {
        TilmeldPerson($id, $navn, $koen);
    }
}
else
{
    if ($checkKoen['tilmeldte'] >= 20)
    {
        SaetPersonPaaVenteliste($id, $navn, $koen);
    }
    else if ($checkModKoen['tilmeldte'] >0)
    {
        echo "Der kan ikke tilmeldes $koen til dette arrengement. Det er forbeholdt det anden køm."
    }
    else
    {
        TilmeldPerson($id, $navn, $koen);
    }
}
Avatar billede mstorgaard Praktikant
24. august 2007 - 07:20 #26
Kan jeg få dig til at sætte din kode sammen med min kode, hvis jeg spørger meget pænt? (:

Mest så jeg ikke 'ødelægger' din kode igen.
Avatar billede mstorgaard Praktikant
24. august 2007 - 14:43 #27
Jeg har ændret koderne til funktioner, men jeg kan stadig ikke lige se fejlen:

$checkStatus    = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS status FROM arrangementer WHERE id = '$id' AND alder1 < '$alder1' AND alder2 > '$alder2' AND sex = '$sex'"));
$checkBruger    = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS bruger FROM tilmeldte WHERE dinnerid = '$id' AND brugerid = '$id2' AND standby = '0'"));
$checkStandby    = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS standby FROM tilmeldte WHERE dinnerid = '$id' AND brugerid = '$id2' AND standby = '1'"));
$checkArr        = mysql_fetch_array(mysql_query("SELECT antal FROM arrangementer WHERE id = '$id'"));
$checkKoen        = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS tilmeldte FROM tilmeldte WHERE dinnerid = '$id' AND koen = '$koen'"));
$checkModKoen    = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS tilmeldte FROM tilmeldte WHERE dinnerid = '$id' AND koen != '$koen'"));
if ($checkBruger['bruger'] == 0) {
  if ($checkStatus['status'] == 1) {
    if ($checkArr['antal'] == 10) {
      if ($checkKoen['tilmeldte'] >= 10) {
        if ($checkStandby['standby'] == 0) {
         
        if ($checkStandby['standby'] == 0) {
          // Tilmeld til Standby-listen
          TilmeldStandby($id, $id2, $koen);
        } else {
          if ($checkKoen['tilmeldte'] < 20) {
            // Slet fra Standby-listen
            // Tilmeld til arrangement
            // Videresend til betaling
            TilmeldFraStandby($id, $id2, $koen);
          } else {
            // Allerede tilmeldt Standby-listen
            // Vis advarsel
            TilmeldtStandby();
          }
        }
      } else {
        if ($vip == 'true' && $gratis == '1') {
          // Tilmeld til arrangement
          // Ingen betaling
          BetaltTilmeld($id, $id2, $koen);
        } else {
          // Tilmeld til arrangement
          // Videresend til betaling
          AfventTilmeld($id, $id2, $koen);
        }
      }
    } else {
      if ($checkKoen['tilmeldte'] >= 20) {
        // Allerede tilmeldt Standby-listen
        // Vis advarsel
        TilmeldtStandby();
      } else if ($checkModKoen['tilmeldte'] > 0) {
        // Forkert køn til arrangement
        // Vis advarsel
        ForkertKoen();
      } else {
        // Tilmeld til arrangement
        // Videresend til betaling
        AfventTilmeld($id, $id2, $koen);
      }
    }
  } else {
    // Forkert alder eller seksualitet til arrangement
    // Vis advarsel
    ForkertAlderSex();
  }
} else {
  // Allerede tilmeldt arrangement
  // Vis advarsel
  Tilmeldt()
}
Avatar billede mstorgaard Praktikant
24. august 2007 - 14:44 #28
Der skal selvfølgelig kun være en af "if ($checkStandby['standby'] == 0) {", men det er ikke det, der er fejlen (:
Avatar billede nielle Nybegynder
25. august 2007 - 16:14 #29
Det er svlært at gennemskue din kode - men jeg kan se at du ikke har indsat min kode på den måde jeg skrev den. Dét kan du f.eks. se ved at sammenligne hvordan de enkelte led er indrykket i forhold til hinanden.

$checkStatus  = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS status FROM arrangementer WHERE id = '$id' AND alder1 < '$alder1' AND alder2 > '$alder2' AND sex = '$sex'"));

$checkBruger  = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS bruger FROM tilmeldte WHERE dinnerid = '$id' AND brugerid = '$id2' AND standby = '0'"));
$checkStandby = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS standby FROM tilmeldte WHERE dinnerid = '$id' AND brugerid = '$id2' AND standby = '1'"));
$checkArr    = mysql_fetch_array(mysql_query("SELECT antal FROM arrangementer WHERE id = '$id'"));
$checkKoen    = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS tilmeldte FROM tilmeldte WHERE dinnerid = '$id' AND koen = '$koen'"));
$checkModKoen = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS tilmeldte FROM tilmeldte WHERE dinnerid = '$id' AND koen != '$koen'"));

if ($checkBruger['bruger'] == 0) {
    if ($checkStatus['status'] == 1) {

        // MIN KODE - START
        if ($checkArr['antal'] == 10) {
            if ($checkKoen['tilmeldte'] >= 10) {
                SaetPersonPaaVenteliste($id, $navn, $koen);
            } else {
                TilmeldPerson($id, $navn, $koen);
            }
        } else {
            if ($checkKoen['tilmeldte'] >= 20) {  // DENNE ER INDRYKKET 3 GANGE
                SaetPersonPaaVenteliste($id, $navn, $koen);
            } else if ($checkModKoen['tilmeldte'] > 0) {
                echo "Der kan ikke tilmeldes $koen til dette arrengement. Det er forbeholdt det anden køn.";
            } else {
                TilmeldPerson($id, $navn, $koen);
            }
        }
        // MIN KODE - SLUT

        // DIN KODE - START
        if ($checkArr['antal'] == 10) {
            if ($checkKoen['tilmeldte'] >= 10) {
                if ($checkStandby['standby'] == 0) {
                    // Tilmeld til Standby-listen
                    TilmeldStandby($id, $id2, $koen);
                } else {
                    if ($checkKoen['tilmeldte'] < 20) {
                        // Slet fra Standby-listen. Tilmeld til arrangement. Videresend til betaling.
                        TilmeldFraStandby($id, $id2, $koen);
                    } else {
                        // Allerede tilmeldt Standby-listen. Vis advarsel.
                        TilmeldtStandby();
                    }
                }
            } else {
                if ($vip == 'true' && $gratis == '1') {
                    // Tilmeld til arrangement. Ingen betaling.
                    BetaltTilmeld($id, $id2, $koen);
            } else {
                // Tilmeld til arrangement. Videresend til betaling.
                AfventTilmeld($id, $id2, $koen);
            }
        }
    } else {
        if ($checkKoen['tilmeldte'] >= 20) {  // I DIN KODE ER DEN KUN INDRYKKET 2 GANGE.
            // Allerede tilmeldt Standby-listen. Vis advarsel.
            TilmeldtStandby();
        } else if ($checkModKoen['tilmeldte'] > 0) {
            // Forkert køn til arrangement. Vis advarsel.
            ForkertKoen();
        } else {
            // Tilmeld til arrangement. Videresend til betaling.
            AfventTilmeld($id, $id2, $koen);
        }
    }
} else {
    // Forkert alder eller seksualitet til arrangement. Vis advarsel.
    ForkertAlderSex();
} else {
    // Allerede tilmeldt arrangement. Vis advarsel.
    Tilmeldt()
}
Avatar billede mstorgaard Praktikant
25. august 2007 - 18:23 #30
Burde det her så fungere?

if ($checkBruger['bruger'] == 0) {
    if ($checkStatus['status'] == 1) {
        if ($checkArr['antal'] == 10) {
            if ($checkKoen['tilmeldte'] >= 10) {
                TilmeldStandby($id, $navn, $koen);
            } else {
                if($vip == 'true' && $gratis == 1) {
                    BetaltTilmeld($id, $navn, $koen);
                } else {
                    AfventTilmeld($id, $navn, $koen);
                }
            }
        } else {
            if ($checkKoen['tilmeldte'] >= 20) {
                TilmeldStandby($id, $navn, $koen);
            } else if ($checkModKoen['tilmeldte'] > 0) {
                ForkertKoen();
            } else {
                AfventTilmeld($id, $navn, $koen);
            }
        }
    }
}
Avatar billede mstorgaard Praktikant
25. august 2007 - 18:23 #31
Jeg har kun tilføjet den VIP-"if", ellers er strukturen som din.
Avatar billede nielle Nybegynder
25. august 2007 - 18:37 #32
Der er glippet et eller andet da du indsatte det - for ellers ville noveauet af indryjninger være ens og det er de ikke.

Kig på de to linjer der er markeret som:

// DENNE ER INDRYKKET 3 GANGE

hhv.:

// I DIN KODE ER DEN KUN INDRYKKET 2 GANGE
Avatar billede mstorgaard Praktikant
25. august 2007 - 18:43 #33
Det eneste i min kode, som er glippet er at følgende stykke mangler at blive rykket én gang til højre, men det har ikke nogen betydning for kodens funktion:

            } else {
                // Tilmeld til arrangement. Videresend til betaling.
                AfventTilmeld($id, $id2, $koen);
            }
        }
    } else {
        if ($checkKoen['tilmeldte'] >= 20) {  // I DIN KODE ER DEN KUN INDRYKKET 2 GANGE.
            // Allerede tilmeldt Standby-listen. Vis advarsel.
            TilmeldtStandby();
        } else if ($checkModKoen['tilmeldte'] > 0) {
            // Forkert køn til arrangement. Vis advarsel.
            ForkertKoen();
        } else {
            // Tilmeld til arrangement. Videresend til betaling.
            AfventTilmeld($id, $id2, $koen);
        }
    }
} else {
Avatar billede nielle Nybegynder
25. august 2007 - 18:46 #34
Du kan ikke ændre på hvordan din kode bliver udført ved at indrykke eller ej. Indrykning har kun nøget at gøre med at gøre koden læselig eller ej.

For at ændre på det logiske flow skal der plaseres {}-par på de rigtige steder.
Avatar billede mstorgaard Praktikant
25. august 2007 - 18:51 #35
Men kan du se om den her vil fungere?

if ($checkBruger['bruger'] == 0) {
    if ($checkStatus['status'] == 1) {
        if ($checkArr['antal'] == 10) {
            if ($checkKoen['tilmeldte'] >= 10) {
                TilmeldStandby($id, $navn, $koen);
            } else {
                if($vip == 'true' && $gratis == 1) {
                    BetaltTilmeld($id, $navn, $koen);
                } else {
                    AfventTilmeld($id, $navn, $koen);
                }
            }
        } else {
            if ($checkKoen['tilmeldte'] >= 20) {
                TilmeldStandby($id, $navn, $koen);
            } else if ($checkModKoen['tilmeldte'] > 0) {
                ForkertKoen();
            } else {
                AfventTilmeld($id, $navn, $koen);
            }
        }
    }
}
Avatar billede nielle Nybegynder
25. august 2007 - 19:04 #36
Ja, det ser ikke helt tosset ud.

Man hvad er forskellen på TilmeldStandby() og AfventTilmeld()? Umiddelbaret ville jeg mene at sidse kald til AfventTilmeld() skulle være et kald til TilmeldStandby().
Avatar billede mstorgaard Praktikant
25. august 2007 - 19:10 #37
AfventTilmeld er at tilmelde sig, og blive videresendt til betaling.
Avatar billede nielle Nybegynder
29. august 2007 - 21:57 #38
Har du afprøvet din kode fra 25/08-2007 18:51:09 endnu?
Avatar billede mstorgaard Praktikant
01. september 2007 - 15:16 #39
Det er den kode, jeg kører med i øjeblikket.
Avatar billede nielle Nybegynder
01. september 2007 - 18:52 #40
Well, virjer den så. For det er nemlig ikke den samme kode som du postede tilbage i 24/08-2007 14:43:50.
Avatar billede mstorgaard Praktikant
03. september 2007 - 16:54 #41
Den vil ikke tilmelde mere end 10 mænd, men den vil stadig tilmelde 11 kvinder.

Koden:
if ($checkBruger['bruger'] == 0) {
    if ($checkStatus['status'] == 1) {
        if ($checkArr['antal'] == 5) {
            if ($row_bruger['par'] == 'par') {
                if ($checkTilmeldte['tilmeldte'] >= 5) {
                    TilmeldStandby($id, $id2, $koen);
                } else {
                    if($vip == 'true' && $gratis == 1) {
                        BetaltTilmeld($id, $id2, $koen);
                    } else {
                        AfventTilmeld($id, $id2, $koen);
                    }
                }
            } else {
                ForkertStatus();
            }
        } else {
            if ($checkKoen['tilmeldte'] >= 20) {
                TilmeldStandby($id, $id2, $koen);
            } else if ($checkModKoen['tilmeldte'] > 0) {
                ForkertKoen();
            } else {
                AfventTilmeld($id, $id2, $koen);
            }
        }
    } else {
        ForkertAlderSex();
    }
} else {
    Tilmeldt();
}
Avatar billede nielle Nybegynder
03. september 2007 - 18:30 #42
Se. det er jo ret meget mystisk. Der er jo absolut *intet* i den viste kode som behandler mænd og kvinder forskelligt.

Koden kan faktisk slet ikke se forskel på om det er en mand eller en kvinde man forsøger at tilføje. Det må være et helt andet sted at det går galt...
Avatar billede mstorgaard Praktikant
03. september 2007 - 19:15 #43
Du kan også lige se sql-queriesne:
$checkStatus    = mysql_fetch_assoc(mysql_query("
  SELECT COUNT(*)
    AS status
  FROM arrangementer
  WHERE id = '$id'
    AND alder1 < '$alder1'
    AND alder2 > '$alder2'
    AND sex = '$sex'
"));
$checkBruger    = mysql_fetch_assoc(mysql_query("
  SELECT COUNT(*)
    AS bruger
  FROM tilmeldte
  WHERE dinnerid = '$id'
    AND brugerid = '$id2'
    AND standby = '0'
"));
$checkStandby    = mysql_fetch_assoc(mysql_query("
  SELECT COUNT(*)
    AS standby
  FROM tilmeldte
  WHERE dinnerid = '$id'
    AND brugerid = '$id2'
    AND standby = '1'
"));
$checkArr        = mysql_fetch_array(mysql_query("
  SELECT antal
  FROM arrangementer
  WHERE id = '$id'
"));
$checkTilmeldte    = mysql_fetch_assoc(mysql_query("
  SELECT COUNT(*)
    AS tilmeldte
  FROM tilmeldte
  WHERE dinnerid = '$id'
    AND standby = '0'
"));
$checkKoen        = mysql_fetch_assoc(mysql_query("
  SELECT COUNT(*)
    AS tilmeldte
  FROM tilmeldte
  WHERE dinnerid = '$id'
    AND koen = '$koen'
    AND standby = '0'
"));
$checkModKoen    = mysql_fetch_assoc(mysql_query("
  SELECT COUNT(*)
    AS tilmeldte
  FROM tilmeldte
  WHERE dinnerid = '$id'
    AND koen != '$koen'
    AND standby = '0'
"));
Avatar billede nielle Nybegynder
03. september 2007 - 19:18 #44
Der er heller ikke noget i dem som afhænger på nogen måde af om det er en mand eler kvinde du forsøger.

Iøvrigt - talværdier som f.eks. dine alder-fleter er, skal ikke omsættes med '-tegn. Dem skal du kun bruge når der er tale om tekst (f.eks. navn og køn).
Avatar billede mstorgaard Praktikant
03. september 2007 - 19:27 #45
Har du nogen anelse om, hvad det er, der kan foresage fejlen?
Avatar billede nielle Nybegynder
03. september 2007 - 23:03 #46
Nej, desværre ikke. Jeg kan bare se at det ikke er i den viste kode at det går galt. Derfor må det være et andet sted den halter.
Avatar billede mstorgaard Praktikant
08. september 2007 - 16:27 #47
Det er virkelig underligt. Jeg har ingen anelse om hvor det går galt.
Avatar billede mstorgaard Praktikant
09. september 2007 - 12:06 #48
Det fungerer nu, jeg ved ikke, hvad der fik den til det (:
Avatar billede nielle Nybegynder
09. september 2007 - 18:21 #49
Somme tider er det sgi' IT i en nøddeskal.
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