Avatar billede tjensen Nybegynder
25. juli 2005 - 18:38 Der er 9 kommentarer og
1 løsning

Update og insert

Hey!

Nogen der kan se en fejl heri?
Det er sendt fra en form, og post'ne kommer frem
men den ændre ikke i min db.

<?php
switch($_POST['script']){
case "opret";
    include "../funktion/db.php";
    mysql_query("INSERT INTO depot_kurser (dato, indre_direct, salgs_direct, indre_high, salgs_high, indre_fjern, salgs_fjern, indre_it, salgs_it) VALUES ('{$_POST['dato']}', '{$_POST['indre_direct']}', '{$_POST['salgs_direct']}', '{$_POST['indre_high']}', '{$_POST['salgs_high']}', '{$_POST['indre_fjern']}', '{$_POST['salgs_fjern']}', '{$_POST['indre_it']}', '{$_POST['salgs_it']}')");
    include "../funktion/luk_db.php";
    die ("<META HTTP-EQUIV=Refresh CONTENT='5; URL=depot.php'>Opret");
break;
case "opdater";
    include "../funktion/db.php";
    mysql_query("UPDATE depot_kurser SET indre_direct='{$_POST['indre_direct']}', salgs_direct='{$_POST['salgs_direct']}', indre_high='{$_POST['indre_high']}', salgs_high='{$_POST['salgs_high']}', indre_fjern='{$_POST['indre_fjern']}', salgs_fjern='{$_POST['salgs_fjern']}', indre_it='{$_POST['indre_it']}', salgs_it='{$_POST['salgs_it']} WHERE dato='{$_POST['dato']}'");
    include "../funktion/luk_db.php";
    die ("<META HTTP-EQUIV=Refresh CONTENT='5; URL=depot.php'>Opdater");
break;
default;
}
die ("<META HTTP-EQUIV=Refresh CONTENT='0; URL=depot.php'>");
?>
Avatar billede nielle Nybegynder
25. juli 2005 - 18:42 #1
Kolon, ikke semikolon, efter dine case'es:

<?php
switch ($_POST['script'])
{
    case "opret" :
        include "../funktion/db.php";
        mysql_query("INSERT INTO depot_kurser (dato, indre_direct, salgs_direct, indre_high, salgs_high, indre_fjern, salgs_fjern, indre_it, salgs_it) VALUES ('{$_POST['dato']}', '{$_POST['indre_direct']}', '{$_POST['salgs_direct']}', '{$_POST['indre_high']}', '{$_POST['salgs_high']}', '{$_POST['indre_fjern']}', '{$_POST['salgs_fjern']}', '{$_POST['indre_it']}', '{$_POST['salgs_it']}')");
        include "../funktion/luk_db.php";
        break;
    case "opdater":
        include "../funktion/db.php";
        mysql_query("UPDATE depot_kurser SET indre_direct='{$_POST['indre_direct']}', salgs_direct='{$_POST['salgs_direct']}', indre_high='{$_POST['indre_high']}', salgs_high='{$_POST['salgs_high']}', indre_fjern='{$_POST['indre_fjern']}', salgs_fjern='{$_POST['salgs_fjern']}', indre_it='{$_POST['indre_it']}', salgs_it='{$_POST['salgs_it']} WHERE dato='{$_POST['dato']}'");
        include "../funktion/luk_db.php";
        break;
    default:
}
die ("<META HTTP-EQUIV=Refresh CONTENT='0; URL=depot.php'>");
?>
Avatar billede tjensen Nybegynder
25. juli 2005 - 20:09 #2
Øhh.. nej det er ikke korrekt.. Plejer jeg i hvert fald ikke at gøre, og det virker normalt.

Men prøvede lige at rette på det, og det hjælp ikke.
Avatar billede nielle Nybegynder
25. juli 2005 - 20:24 #3
Jo, sådan er syntaksen faktisk:

http://dk2.php.net/switch
Avatar billede nielle Nybegynder
25. juli 2005 - 20:29 #4
I 9 ud af 10 tilfælde skyldes database-fejl at SQL-kommandoerne indeholder noget andet end hvad man forventede. Det er derfor altid en god ide - som debug - at prøve at udskrive SQL'erne før at man prøver at udføre dem:

<?php
echo "DEBUG (POST) : " . $_POST['script'] . "<br>";

switch ($_POST['script'])
{
    case "opret" :
        include "../funktion/db.php";
        $SQL = "INSERT INTO depot_kurser (dato, indre_direct, salgs_direct, indre_high, salgs_high, indre_fjern, salgs_fjern, indre_it, salgs_it) VALUES ('{$_POST['dato']}', '{$_POST['indre_direct']}', '{$_POST['salgs_direct']}', '{$_POST['indre_high']}', '{$_POST['salgs_high']}', '{$_POST['indre_fjern']}', '{$_POST['salgs_fjern']}', '{$_POST['indre_it']}', '{$_POST['salgs_it']}')";

        echo "DEBUG (INSERT) : " . $SQL . "<br>";

        mysql_query($SQL);
        include "../funktion/luk_db.php";
        break;
    case "opdater":
        include "../funktion/db.php";
        $SQL = "UPDATE depot_kurser SET indre_direct='{$_POST['indre_direct']}', salgs_direct='{$_POST['salgs_direct']}', indre_high='{$_POST['indre_high']}', salgs_high='{$_POST['salgs_high']}', indre_fjern='{$_POST['indre_fjern']}', salgs_fjern='{$_POST['salgs_fjern']}', indre_it='{$_POST['indre_it']}', salgs_it='{$_POST['salgs_it']} WHERE dato='{$_POST['dato']}'":

        echo "DEBUG (UPDATE) : " . $SQL . "<br>";

        mysql_query();
        include "../funktion/luk_db.php";
        break;
    default:
}

// die ("<META HTTP-EQUIV=Refresh CONTENT='0; URL=depot.php'>");
?>
Avatar billede tjensen Nybegynder
25. juli 2005 - 20:44 #5
yes! Den måde at debug på har jeg aldrig set før!

Kanon!
Og til switch'en kan jeg jo kun give dig ret, har bare lært det anderledes i tidernes morgen.
Avatar billede nielle Nybegynder
25. juli 2005 - 20:49 #6
Det lyder som om at du fandt fejlen... Hvad var der galt? (jeg har en mistanke om $_POST['script'] - men er langt fra sikker).
Avatar billede tjensen Nybegynder
25. juli 2005 - 20:51 #7
hmm, jeg fandt fejlen i update. Havde simpelthen glemt et ' inden WHERE.

I insert fandt jeg aldrig fejlen, men det virker nu i hvert fald.

Men helt sikkert mange tak!
Avatar billede nielle Nybegynder
25. juli 2005 - 21:04 #8
Er der stadig en fejl i INSERT? Så prøv lige at pose et eksempel her så jeg kan kigge på det.
Avatar billede tjensen Nybegynder
25. juli 2005 - 21:29 #9
nej nej misforstået, skrev:

I insert fandt jeg aldrig fejlen, men det virker nu i hvert fald. :)

:)

Så bare smid et svar!
Avatar billede nielle Nybegynder
25. juli 2005 - 21:33 #10
Svar :^)
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
Computerworld tilbyder specialiserede kurser i database-management

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