Avatar billede michaeltryl Seniormester
22. september 2006 - 13:52 Der er 26 kommentarer og
1 løsning

tabel bliver ikke opdateret hvor er fejlen

En som kan se hvor fejlen er i denne kode, tabellen kalender bliver ikke opdateret 

//Nu skal vi opfange det id som blev sendt fra liste
$id = $_GET[id];
$url = $_SERVER['REQUEST_URI'];

//skab forbindelse til databasen

if( !empty( $_POST['dato'] ) )
    {
        $dato = mysql_escape_string( $_POST['dato'] );
        mysql_query("UPDATE kalender SET date = '$_POST[dato]' WHERE kalenderID='$id'") or die(mysql_error());
    }
   
    $kalender = mysql_query("SELECT *, DATE_FORMAT(date, '%d-%m-%Y') AS dato FROM kalender WHERE kalenderID='$id'");
    while ($a = mysql_fetch_assoc($kalender))
    {
        $dato = $a['dato'];

     
          echo "<form method='POST' ACTION='$url'>";
        echo "<textarea name='dato' rows='1' cols='15'>";
        echo $dato;
        echo "</textarea><br>";
        echo "<input class='inputknap' type='submit' value='Send svar'>&nbsp;&nbsp;&nbsp;&nbsp;";
        echo "<a href='slet-spg.php?id=$spgid'>Slet dette spørgsmål</a>";

        echo "<br><br>";
        echo "</form>";

    }
Avatar billede hmm10 Nybegynder
22. september 2006 - 13:57 #1
Hvad siger $url hvis du printer den? Kommer du ind i den if(), som indeholder din UPDATE?
Avatar billede michaeltryl Seniormester
22. september 2006 - 14:20 #2
url giver dette:/admin/kalender/redigere.php?id=55

og jeg indsatte  echo "opdateret"; lige efter update linien og da jeg udfyldte formen og trykkede send kom der til at stå
opdateret
på siden
Avatar billede hmm10 Nybegynder
22. september 2006 - 14:24 #3
- og $id har også en værdi i din UPDATE?
Avatar billede michaeltryl Seniormester
22. september 2006 - 14:25 #4
ved ikke om det hjælper, men min tabel ser sådan ud
kalenderID  int(11)        auto_increment             
  date  datetime      0000-00-00 00:00:00               
  begivenhed  varchar(255
Avatar billede michaeltryl Seniormester
22. september 2006 - 14:26 #5
ja det er posten i tabellen med det id som bliver hentet med $id = $_GET[id]; der skal opdateres
Avatar billede hmm10 Nybegynder
22. september 2006 - 14:31 #6
Først har du noget GET, som du sætter ind øverst, så laver du en form, som sender til noget POST. Så henter du en værdi ind med GET, som brude være POST? Prøv lige at printe $id.
Avatar billede michaeltryl Seniormester
22. september 2006 - 14:34 #7
den printer det rigtige id

hvilken get burde være post?
Avatar billede hmm10 Nybegynder
22. september 2006 - 14:38 #8
Når du trykker submit bliver variablerne sendt via POST. Dvs. at du henter disse variabler ud med $_POST[''] (hvilket du godt ved). Når du så beder om at få sat en $id-værdi i din UPDATE, og den ikke er sat, kan det give problemer.

Jeg ville sætte en ekstra inpit-felt type="hidden" ind i din form med id, så den bliver sendt via POST. (Og hente den ind via POST)
Avatar billede michaeltryl Seniormester
22. september 2006 - 14:53 #9
jeg har nu prøvet sådan, men virker heller ikke

<?
  //Nu skal vi opfange det id som blev sendt fra brugerlisten
$id = $_GET[id];
$url = $_SERVER['REQUEST_URI'];
echo $id;

//skab forbindelse til databasen

if( !empty( $_POST['dato'] ) )
    {
        $dato = mysql_escape_string( $_POST['dato'] );
        $nyid = mysql_escape_string( $_POST['id']);
        mysql_query("UPDATE kalender SET date = '$_POST[dato]' WHERE kalenderID='$nyid'") or die(mysql_error());
        echo "opdateret$id";
    }
   
    $kalender = mysql_query("SELECT *, DATE_FORMAT(date, '%d-%m-%Y') AS dato FROM kalender WHERE kalenderID='$id'");
    while ($a = mysql_fetch_assoc($kalender))
    {
        $dato = $a['dato'];

     
          echo "<form method='POST' ACTION='$url'>";
        echo "<input type='hidden' name='id' value='$id'>";
        echo "<textarea name='dato' rows='1' cols='15'>";
        echo $dato;
        echo "</textarea><br>";
        echo "<input class='inputknap' type='submit' value='Send svar'>&nbsp;&nbsp;&nbsp;&nbsp;";
        echo "<a href='slet-spg.php?id=$spgid'>Slet dette spørgsmål</a>";

        echo "<br><br>";
        echo "</form>";

    }
   
?>
Avatar billede hmm10 Nybegynder
22. september 2006 - 15:26 #10
Når du siger at UPDATE ikke virker, går jeg udfra at du mener, at den ikke ændres i din database.

prøv at sætte print "UPDATE kalender SET date = '$_POST[dato]' WHERE kalenderID='$nyid'" ved din UPDATE. Hvad siger den?
Avatar billede sw_red_6 Nybegynder
22. september 2006 - 15:33 #11
kunne det være fordi der ikke skal være '' om $nyid ?
Avatar billede sw_red_6 Nybegynder
22. september 2006 - 15:34 #12
hov, og endnu en ting, hvorfor har du denne linie når du ikke bruger $dato?
$dato = mysql_escape_string( $_POST['dato'] );
Avatar billede michaeltryl Seniormester
22. september 2006 - 15:38 #13
jeg bruger $dato her og det hjalp ikke at fjerne '' fra nyid
echo "<textarea name='dato' rows='1' cols='15'>";
        echo $dato;
Avatar billede sw_red_6 Nybegynder
22. september 2006 - 15:41 #14
ja, men den linie jeg lavede en C/P af er lige efter if( !empty( $_POST['dato'] ) ).
Avatar billede michaeltryl Seniormester
22. september 2006 - 15:52 #15
jeg er ikke med på hvad du mener
hvorfor vil du have den linie væk, det virker heller ikke hvis den er væk
Avatar billede sw_red_6 Nybegynder
22. september 2006 - 16:01 #16
den skal heller ikke vær, men brug dog $dato i din UPDATE-query når du nu har lavet det, så har du det sikkerhedshul mindre at bekymre dig om...
Avatar billede sw_red_6 Nybegynder
22. september 2006 - 16:12 #17
Du skal ændre på din dato så der kommer til at stå YYYY-MM-DD ellers kan mysql ikke opdatere feltet
Avatar billede michaeltryl Seniormester
22. september 2006 - 16:13 #18
jeg havde ikke set den linie du havde skrevet med print
den giver dette (jeg skrev 03-03-2006) i formularen

UPDATE kalender SET date = '03-03-2006' WHERE kalenderID='55'
jeg har nu ændret til
mysql_query("UPDATE kalender SET date = '$dato' WHERE kalenderID='$nyid'") or die(mysql_error());
     
uden held
Avatar billede michaeltryl Seniormester
22. september 2006 - 16:14 #19
ja selvfølgelig er det der fejlen er jeg føler mig dum lige nu jeg kigger lige på det
Avatar billede sw_red_6 Nybegynder
22. september 2006 - 16:19 #20
Det er du ikke ene om, den havde jeg nok ikke fundet hvis jeg ikke havde haft problemer med dato/tid hele dagen ;-)
Avatar billede michaeltryl Seniormester
22. september 2006 - 16:21 #21
okay nu virker det som det skal utroligt så meget tid man kan bruge på en lille fejl.
det sjove er at jeg havde tænkt på det da jeg lavede det første, men har så glemt det igen
tror papir og blyant er en god ide for efter tiden.
smid et svar du har fortjent de point
Avatar billede sw_red_6 Nybegynder
22. september 2006 - 16:24 #22
OK, så får du et svar. forresten så kan du prøve mysql_affected_rows() hvis du støder på lignende problemer...
Avatar billede sw_red_6 Nybegynder
22. september 2006 - 16:24 #23
Og så lige det svar også ;-D
Avatar billede michaeltryl Seniormester
22. september 2006 - 16:29 #24
okay skal det bare sættes ind sådan eller hvordan bruges det
Avatar billede sw_red_6 Nybegynder
22. september 2006 - 16:33 #25
er ved at smutte hjemad, men du kan da læse lidt mere om den funktion her: http://dk.php.net/manual/da/function.mysql-affected-rows.php
Avatar billede michaeltryl Seniormester
22. september 2006 - 16:49 #26
okay tak
Avatar billede hmm10 Nybegynder
22. september 2006 - 18:08 #27
Godt at du har fået det til at virke :)
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