Avatar billede sito Nybegynder
01. marts 2004 - 17:26 Der er 4 kommentarer og
2 løsninger

Hvorfor indsættes der ikke i DB?

Hej

Har lavet en database bagved en hjemmeside for det fodboldhold jeg spiller på, og nu forsøger jeg at lave en tilmeldingsmulighed, så spillerne kan melde sig til kampe. For at melde sig til kamp skal man indtaste et brugernavn og et password, som så siden bliver valideret med en tabel i databasen der indeholder felterne 'spillernavn', 'brugernavn' og 'password'. Valideringen virker fint, men når jeg forsøger at hente spillernavnet for at indsætte det i databasen under en anden tabel med kampnavnet og felterne 'tilmeldte' og 'frameldte' indsætter den en tom værdi (det vil sige der bliver indsat noget(tomme felter), men ikke spillernavnet!)

Jeg håber i kan hjælpe, er kørt lidt fast...

scriptet:

<?

    include ("functions_db.inc.php");
    include ("functions.inc.php");
   
if ($brugernavn =="" or $password =="") {
    echo "Du har glemt at indtaste brugernavn eller password!<br>";
    echo "<a href=\"tilmeld.php?match=$match\">Prøv igen</a>";
    exit;
}

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

$resultat=executeSQL($strSQL);

if (mysql_num_rows($resultat) == 0){
echo "Du har indtastet et forkert brugernavn eller password<br>";
echo "<a href=\"tilmeld.php?match=$match\">Prøv igen</a>";
exit;
}
else {
}


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

$resultat = executeSQL($strSQL);

$spiller = $querydata[0];

$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;
        }
?>

Der må altså ligge en fejl fra SELECT spillernavn... og fremefter?

Bagved scriptet ligger en formular, hvor jeg får brugernavn og password fra, og en funktion der eksekverer mit SQL statement, som ser således ud:

<?
    function executeSQL($strSQL)
    {
   
    $database = "db navn";
    $host = "hostnavn";
    $username = "brugernavn til db";
    $password = "password";

    $connect = mysql_connect ($host, $username, $password) or die (mysql_error());
   

    $select = mysql_select_db($database, $connect) or die (mysql_error());
       
    $resultat = mysql_query($strSQL, $connect) or die (mysql_error());

   
    $luk = mysql_close($connect) or die (mysql_error());
   
    return $resultat; 
   
    }

?>
Avatar billede jps2mt Nybegynder
01. marts 2004 - 17:46 #1
>$spiller = $querydata[0];

Hvor får du querydata fra??

>$strSQL = "
>    INSERT INTO
>        abc
>        (tilmeldte)
>    VALUES
>        ('$spiller')
>    ";

ville jeg nok rette til

$strSQL = "INSERT INTO abc (tilmeldte) VALUES('".$spiller."')";

Ved ikke om det retter din fejl...

/BlackChart
Avatar billede detox Nybegynder
01. marts 2004 - 17:54 #2
Prøv:

<?
    include ("functions_db.inc.php");
    include ("functions.inc.php");
 
if ($brugernavn =="" or $password =="") {
    echo "Du har glemt at indtaste brugernavn eller password!<br>";
    echo "<a href=\"tilmeld.php?match=$match\">Prøv igen</a>";
    exit;
}

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

$resultat=executeSQL($strSQL);

if (mysql_num_rows($resultat) == 0){
echo "Du har indtastet et forkert brugernavn eller password<br>";
echo "<a href=\"tilmeld.php?match=$match\">Prøv igen</a>";
exit;
}
else {
$strSQL="SELECT spillernavn FROM Spillere WHERE brugernavn='$brugernavn' AND password='$password'";

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

$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 - 18:03 #3
Fandt selv ud af det ved at smide følgende ind:

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

$resultat = executeSQL($strSQL);

while ($querydata = mysql_fetch_row($resultat)){
    $spiller = $querydata[0];
}

$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;
        }

Lidt mærkeligt det ikke virkede før...

Tak for hjælpen, opretter i lidt svar, så kan i dele pointene?
Avatar billede jps2mt Nybegynder
01. marts 2004 - 18:07 #4
Kan ikke se noget mærkeligt i at det ikke virkede, eftersom du jo ikke havde while ($querydata = mysql_fetch_row($resultat)){ i dit åbnigst indlæg ;)
Avatar billede detox Nybegynder
01. marts 2004 - 18:08 #5
Det er unødvendigt at bruge en while løkke, når der kun er et resultat. Brug:

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

eller:

$resultat = executeSQL($strSQL);
$querydata = mysql_fetch_row($resultat);
$spiller = $querydata[0];
Avatar billede sito Nybegynder
01. marts 2004 - 18:46 #6
cool, tak!
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