Avatar billede sito Nybegynder
01. marts 2004 - 22:35 Der er 27 kommentarer og
1 løsning

Antal af resultater på et SQL statement?

Hej

Har lavet et site hvor brugerne kan tilmelde sig et arrangement, men det skal kun være muligt at få 9 tilmeldte, hvilket jeg har forsøgt via dette script:

$strSQL="SELECT spillernavn FROM Spillere WHERE brugernavn='$brugernavn' AND password='$password'";

$resultat = executeSQL($strSQL);

$spiller = mysql_result(executeSQL($strSQL),0);

$antal = mysql_num_rows($resultat);

if ($antal == 9){
echo "Der er allerede det maksimale antal tilmeldte!";
exit;
}
else{

$strSQL = "
    INSERT INTO
        abc
        (tilmeldte)
    VALUES
        ('$spiller')
    ";
   
    $resultat = executeSQL($strSQL);
   
    if (!$resultat){
        echo "Der skete en fejl ved forespørgslen!";
        echo "<a href=\"tilmeld.php?match=$match\">Prøv igen</a>\n";
        }
        else{
        header ("Location: http://www.steppeulvene.dk/abc.php");
        exit;
        }
}

Men det virker ikke. Der kan sagtens meldes flere end 8 til.
Der ligger nogle funktioner bagved (executeSQL), som eksekverer mine SQL sætninger via $strSQL, og det virker, så det er enten $antal eller løkken der er noget galt med...
Håber i kan se fejlen :)
Avatar billede sito Nybegynder
01. marts 2004 - 22:35 #1
Ups, flere end 9 til...
Avatar billede detox Nybegynder
01. marts 2004 - 22:41 #2
Prøv at skifte:

$antal = mysql_num_rows($resultat);

ud med:

$antal = mysql_result(executeSQL("select count(*) from Spillere"),0);

På den den anden måde vil du jo få $antal = 1.
Avatar billede sito Nybegynder
01. marts 2004 - 22:46 #3
Det virkede ikke. Man kan stadig melde sig til selvom der er 9 tilmeldte.
Avatar billede dd-man Nybegynder
01. marts 2004 - 22:55 #4
Er det ikke bare noget med:

include ("inc/mysql.inc.php");
$hent = mysql_query("SELECT spillernavn FROM spillere");
$tael = mysql_num_rows($hent);
if ($tael > 9) {
  // der er sgu flere end 9 tilmeldte
  header ("Location: abc.php?fleretilmeldte=ja");
  exit;
} else {
  // yay! fortsæt
  mysql_query("INSERT INTO abc (tilmeldte) VALUES ('$spiller')");
  header ("Location: abc.php");
  exit;
}
Avatar billede dd-man Nybegynder
01. marts 2004 - 22:55 #5
Jeg har aldrig oplevet fejl i SQL, som du tester for... er der mange gange noget galt med din SQL database?
Avatar billede detox Nybegynder
01. marts 2004 - 22:58 #6
Nu vil jeg nok osse vælge:

if ($antal>8){

istedet for:

if ($antal == 9){

men prøv med:

$antal = mysql_result(executeSQL("select count(*) from Spillere"),0);
echo $antal;
exit;
Avatar billede sito Nybegynder
01. marts 2004 - 23:06 #7
Prøvede lige den her:

$antal = mysql_num_rows($resultat);
echo "Antal:".$antal;
exit;

Og den skrev ganske rigtigt ud, at der kun var en tilmeldt...
Avatar billede detox Nybegynder
01. marts 2004 - 23:07 #8
Men hvad giver:

$antal = mysql_result(executeSQL("select count(*) from Spillere"),0);
echo $antal;
exit;
Avatar billede dd-man Nybegynder
01. marts 2004 - 23:08 #9
detox: kan du ikke lige linke til noget dokumentation om:
executeSQL();

jeg kan ikke finde noget om den.
Avatar billede sito Nybegynder
01. marts 2004 - 23:08 #10
dd-man: Det er vel sådan set også det jeg gør, bortset fra jeg ikke bruger header() i min if-sætning. Og nej, har ikke mange fejl, men bare for en sikkerheds skyld :)
Kan det være på grund af if-else-sætningen inden i den første if-else løkke? Eller måske at jeg kalder $resultat derinde igen?
Avatar billede sito Nybegynder
01. marts 2004 - 23:09 #11
executeSQL er en funktion jeg har lavet der eksekverer min SQl sætning, og der er ikke noget galt med funktionen.
Avatar billede detox Nybegynder
01. marts 2004 - 23:10 #12
dd-man -> Det er sito's egen funktion, der er vist her:
http://www.eksperten.dk/spm/471760
Avatar billede sito Nybegynder
01. marts 2004 - 23:12 #13
tak :)
Avatar billede detox Nybegynder
01. marts 2004 - 23:14 #14
sito -> tak :) for hvad, om jeg må spørge?
Avatar billede dd-man Nybegynder
01. marts 2004 - 23:16 #15
Nå okay, så forstår jeg bedre ;)
Avatar billede sito Nybegynder
01. marts 2004 - 23:17 #16
for henvisningen til funktionen
Avatar billede dd-man Nybegynder
01. marts 2004 - 23:18 #17
Nu jeg lige har gang i jer, kan i så lige sige om det er smartest at lukke en sql forespørgsel hver gang man har lavet en? eller lave en afslutning i bunden af alle siderne, eller hvordan? og hvor vigtigt er det? (det er ikke altid jeg selv afslutter sql queries.
Avatar billede detox Nybegynder
01. marts 2004 - 23:19 #18
Hvis vi skal videre her, må du sige mig hvad resultat du får ud af dette:

$antal = mysql_result(executeSQL("select count(*) from Spillere"),0);
echo $antal;
exit;
Avatar billede detox Nybegynder
01. marts 2004 - 23:20 #19
dd-man -> Det er ikke nødvendigt at lukke forbindelsen. Den bliver automatisk lukket ved scriptets afslutning.
Avatar billede sito Nybegynder
01. marts 2004 - 23:28 #20
2 sek
Avatar billede sito Nybegynder
01. marts 2004 - 23:30 #21
Får følgende: 26  !!!?????!!!
Avatar billede detox Nybegynder
01. marts 2004 - 23:33 #22
Sorry, det er jo de tilmeldte du skal tjekke (altså tabellen: 'abc'):

$antal = mysql_result(executeSQL("select count(*) from abc"),0);
echo $antal;
exit;
Avatar billede sito Nybegynder
01. marts 2004 - 23:34 #23
Det er antallet af spillere, den er god nok. Men hvad skal jeg bruge det til?
Avatar billede sito Nybegynder
01. marts 2004 - 23:35 #24
ahhh, så forstår jeg bedre :) Gav: 3, hvilket også passer
Avatar billede detox Nybegynder
01. marts 2004 - 23:37 #25
Et samlet billede:


$strSQL="SELECT spillernavn FROM Spillere WHERE brugernavn='$brugernavn' AND password='$password'";

$spiller = mysql_result(executeSQL($strSQL),0);
$antal = mysql_result(executeSQL("select count(*) from abc"),0);

if ($antal>8){
    echo "Der er allerede det maksimale antal tilmeldte!";
    exit;
} else {
    $strSQL = "INSERT INTO abc (tilmeldte) VALUES ('$spiller')";
    $resultat = executeSQL($strSQL);
    if (!$resultat){
        echo "Der skete en fejl ved forespørgslen!";
        echo "<a href=\"tilmeld.php?match=$match\">Prøv igen</a>\n";
    } else {
        header ("Location: http://www.steppeulvene.dk/abc.php");
        exit;
    }
}
Avatar billede sito Nybegynder
01. marts 2004 - 23:39 #26
SGU!! Så virkede det! Opretter i begge to lige svar?
Avatar billede sito Nybegynder
01. marts 2004 - 23:43 #27
Takker for hjælpen :D
Avatar billede detox Nybegynder
01. marts 2004 - 23:52 #28
Velbekommen
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