Avatar billede webweaver Praktikant
02. januar 2007 - 21:35 Der er 26 kommentarer og
1 løsning

Problem med UPDATE

Godaften profs :)

Jeg sidder og er ved at smide mit nyhedssystem ind i mit CMS, og der er en af filerne til at redigere en eksisterende nyhed. Jeg benytter mig af UPDATE.. Mystisk nok så virker det bare ikke. Jeg har fundet ud af at problemet ligger i; WHERE id = '$id' ...

Hvis jeg erstatter variablen $id med et tal som passer til en af nyhederne, så bliver den korrekt opdateret. Men når jeg bruger variablen, så opdaterer den ikke nyheden af en eller mærkelig grund jeg ikke kan få øje på!

Og jeg er sikker på at $id indeholder et tal, og det er det rigtige. Hvis jeg sætter en echo på, udskriver den også det rigtige tal. Så jeg forstår det ikke.

Jeg håber en af Jer kan hjælpe mig videre, og komme med noget viden om hvorfor den gør som den gør :)

Filen kan ses her;
http://pastebin.com/849768

På forhånd tak :)

Mvh. Lasse Jensen
Avatar billede jweber Nybegynder
02. januar 2007 - 21:54 #1
Dit id nummer er formentlig af typen integer og skal derfor ikke stå i parantes.
Prøv med WHERE id = $id ...
Avatar billede webweaver Praktikant
02. januar 2007 - 22:07 #2
Hvis jeg skriver WHERE id = $id i stedet for WHERE id = '$id', så får jeg denne fejl?;

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Avatar billede zynzz Praktikant
02. januar 2007 - 22:28 #3
WHERE id = '". $id ."'
Avatar billede jweber Nybegynder
02. januar 2007 - 22:39 #4
Hvis det virkede da du erstattede $id med et tal er dit id nummer nok ikke af typen integer selvom det nok ville være smartest. Prøv at skriv dine variabler udenfor stregen:

mysql_query("UPDATE Nyheder SET user_id = '".$user_id."', ShowOnIndex = '".$showOnIndex."', dato = '".$dato."', time = '".$time."', tid = '".$tid."', billede = '".$billede."', overskrift = '".$overskrift."', tekst = '".$tekst."', ip = '".$ip."' WHERE id = '".$id."'") or die(mysql_error());
Avatar billede jweber Nybegynder
02. januar 2007 - 22:40 #5
Ja okay, det var så også det zynzz foreslog.
Avatar billede erikjacobsen Ekspert
02. januar 2007 - 22:41 #6
Det er fordi du ikke har noget i $id -  tjek selv ved fx at udskrive din SQL-sætning.
Avatar billede zynzz Praktikant
02. januar 2007 - 22:47 #7
ja hvor får du $id fra fra din url? hvis ja så brug id = '"'.$_GET["id"].'"'
Avatar billede zynzz Praktikant
02. januar 2007 - 22:56 #8
evt: id = '".$_GET['id']."' :)
Avatar billede webweaver Praktikant
03. januar 2007 - 18:03 #9
Nu har jeg prøvet alle Jeres forslag, og ingen af dem virker desværre ;( Har stadig problemet. ID er af typen integer i DB.

Til erikjacobsen:

Jo jeg går ud fra id indeholder en værdi, eftersom jeg kan udskrive den med echo, og se tallet? Så den inderholder det som den skal.

Og jeps jeg får id'et igennem en URL...

Mvh. Lasse Jensen

Håber I kan se hvor fejlen kan være! :)

På forhånd tak (:
Avatar billede erikjacobsen Ekspert
03. januar 2007 - 18:40 #10
Det er forkert tænkt. Du har ikke noget i $id - skriv SQL-sætningen ud inden du udfører den, og så vil du se det. Når du så har konstateret det, så skal jeg nok forklare hvorfor.
Avatar billede webweaver Praktikant
03. januar 2007 - 20:18 #11
Jeg er ikke helt sikker på jeg forstår hvad du mener.
Hvordan kan jeg skrive min SQL-sætning ud? Den henter jo ikke noget ud af databasen, så der er jo ikke rigtig noget at udskrive? Der er kun SELECT'en længere oppe i scriptet, som virker helt fint.
Avatar billede erikjacobsen Ekspert
03. januar 2007 - 20:24 #12
Du skal bare udskrive din SQL-sætning:  print $sql
(hvis den hedder det) - altså den der indeholder din "UPDATE...". Så vil du se at der ikke står noget i $id.
På den side hvor formularen er, der har du noget i $id, men det har du jo ikke automatisk på næste side, efter du har trykket på knappen.
Avatar billede webweaver Praktikant
03. januar 2007 - 20:58 #13
Ahh ja okay på den måde selvfølgelig. Ja altså når man gør sådan, så er det korrekt at den intet indeholder. Hvordan kan det så være?

På forhånd tak (:

Mvh. Lasse Jensen
Avatar billede zynzz Praktikant
03. januar 2007 - 21:03 #14
Altså et udgangspunkt kunne være at finde ud af hvor du får $id fra...
Avatar billede webweaver Praktikant
03. januar 2007 - 21:05 #15
Som jeg skrev det længere oppe får jeg $id fra URL'en.

Lad os sige der for eksempel er en admin side med nogle links til at tilføje en nyhed, rette en nyhed og slette en nyhed, i det link der overfører jeg id'et fra nyheden. Derfra har jeg variablen...
Avatar billede erikjacobsen Ekspert
03. januar 2007 - 21:06 #16
Så skal du føre den videre over på næste side.
Avatar billede webweaver Praktikant
03. januar 2007 - 21:09 #17
Men jeg benytter jo bare $_SERVER['PHP_SELF']; i min form, så den er der jo egentlig allerede? Eller skal jeg også tilføje $id der i?
Avatar billede webweaver Praktikant
03. januar 2007 - 21:12 #18
Mange tak for hjælpen erikjacobsen og alle Jer andre selvfølgelig :)
Det var det som var løsningen. Det skal jeg huske til en anden gang.

Mvh. Lasse Jensen

PS: Smid svar, for point.
Avatar billede erikjacobsen Ekspert
03. januar 2007 - 21:13 #19
Det skulle du jo selv kunne se i din URL efter du submitter siden. Egentlig er der ingen grund til at spørge ;)
Måske - men prøv det først - kan du bruge $_SERVER['REQUEST_URI']
Avatar billede erikjacobsen Ekspert
03. januar 2007 - 21:13 #20
Jeg samler slet ikke på point, tak.
Avatar billede webweaver Praktikant
03. januar 2007 - 21:19 #21
Det er rigtig nok, jeg burde selv kunne have set det, og hvis jeg havde tænkt over det havde jeg det nok også. Men ja tænkte jeg ikke lige over. Troede ikke det var nødvendigt, når det var samme side man forblev på. Men det er jo klart nu når man tænker over det, at det slet ikke har noget med det at gøre. Det er jo et nyt link, uden variablen.

Okay det er i orden.. Selv tak :)
Avatar billede zynzz Praktikant
03. januar 2007 - 21:21 #22
Men så burde du jo ikke kunne se noget når du ville prøve at udskrive $id... :)
Avatar billede webweaver Praktikant
03. januar 2007 - 21:23 #23
Jo det kan jeg godt. Jeg havde jo været dum nok til kun at tjekke at jeg kunne se noget før jeg submittede. Hvis jeg nu havde prøvet efter submit også, havde der ikke været noget, og så kunne jeg have set fejlen.
Avatar billede webweaver Praktikant
03. januar 2007 - 21:24 #24
Zynzz hvis du vil have point'ne i stede for så bare smid et svar.
Du har jo også hjulpet.
Avatar billede zynzz Praktikant
03. januar 2007 - 21:25 #25
argh, okay... dvs. at din action skulle sesåledes ud: action="dinside.php?id=1"
Avatar billede zynzz Praktikant
03. januar 2007 - 21:25 #26
tag du bare dem... :)
Avatar billede webweaver Praktikant
03. januar 2007 - 21:32 #27
Ja lige præcis :)

Dvs. i mit tilfælde blev det så,

<form class="formular" method="post" action="<? echo $_SERVER['PHP_SELF'] . "?id=$id"; ?>">

:)
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

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging