11. januar 2009 - 01:04Der er
18 kommentarer og 1 løsning
Mærkelig problem med function og database
Jeg har en funktion i en class, som slutter af med at opdatere et felt i databasen, men den "glemmer" at opdatere feltet, medmindre jeg sætter en die(); ind lige under så bliver det opdateret. Forstår ikke helt, hvad der går galt, kan jeg vente på at alt er færdigt før funktionen stopper, eller er der nogle typiske årsager til problemet?
Ved godt at koden kan optimeres, men det var en vi hurtigt lavede fordi den anden gav problemer og vi ikke ville bruge alle resourcer her nu, hvilket gav os en masse besvær alligevel. Men det er ved die() at det afgør om databasen gider huske det.
public function toggle($table, $column, $find, $what = 'id') { if (!$table || !$column || !is_numeric($find) || !$what) return "error_missing_information";
Jeg har en gang brugt 2 timer på at debugge noget lignende. Det viste sig at være en fantastisk dygtig grafiker der havde sat onclick event på et link, så der blev dobbelt postet, og funktionen derved blev kørt x2. Det underlige var at et dump viste den korrekte data. Er du grafiker :D?
Det har selvfølgelig intet - i sig selv - at gøre med om den "die" står der. Så det må være noget andet. Ideen fra fant0mas er faktisk ret sjov - hvis du toggler to gange, så er resulatet uændret. Ved at sætte en "die" ind, så sker det kun første gang.
Vil du lave det lille hack, så hedder det ikke if ($_SESSION['qwerty'] = 12345) men if ($_SESSION['qwerty'] == 12345)
Ja selvfølgelig, doh, man kan godt blive lidt træt i hovedet. Men ser ud til at den bliver kørt 2 gange af en eller anden mystisk grund, vender lige tilbage, for det bliver en større opgave at finde fejlen, medmindre man kan noget smart i PHP mht det.
Funktionen er kun kaldt 1 sted fra og jeg har også prøvet at omdøbe den til noget helt andet. Problemet må ligge i at det lykkes systemet at loade filen 2 gange, det er ihvertfald mit bud
Har jeg nu ikke, det er en class, men det var det at src ikke havde nogen værdi der gav problemer. Ved du om det kan tyde på et problem et andet sted, eller det være okay nu?
Jeg snakker om din HTML-kode. Står der <a href="....php?id=... ">Skift</a>, så bruger du "GET". Det kan give problemer. Med en <form method="post"...> ...osv... , og en test på serveren om den kommer fra "POST", sker det ikke.
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.