02. januar 2007 - 21:35Der 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 :)
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());
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.
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.
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.
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...
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']
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.
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.
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.