30. august 2010 - 15:46Der er
14 kommentarer og 1 løsning
Opdatere information i database
Hej Eksperter,
Jeg sidder og laver en lille webshop, og vil gerne have et ekstrem simpelt CMS hvor jeg kan rette og oprette produkter. Opret af produkter fungere fint, men opdateringen kan jeg ikke finde ud af.
Håber i kan/vil hjælpe...
Her er koden jeg har på admin-siden:
$result = mysql_query("SELECT * FROM products ORDER BY id DESC");
Mange virksomheder sidder fast i et forældet ERP-system, selvom det begrænser dem langt mere, end de ofte vil erkende.
Slettet bruger
30. august 2010 - 16:04#1
Uden at have undersøgt det i detaljer: Der skal ikke være noget "INTO" i UPDATE sætningen. - det bruges kun i INSERT
Synes godt om
Slettet bruger
30. august 2010 - 16:07#2
Syntaxen for UPDATE i SQL ser således ud: UPDATE table SET col1=value, col2=value, ... WHERE colX=value
Et eksempel på at opdaterer information på Produkt #1 kunne se således ud: mysql_query("UPDATE `products` SET `title` = '{$_POST["title"]}', `body` = '{$_POST["body"]}', `price` = {settype($_POST["price"], "float")}, `image` = '{$_POST["image"]}' WHERE `id` = 1");
Synes godt om
Slettet bruger
30. august 2010 - 16:07#3
Og faktisk skal hvert felt/værdi-par nævnes specifikt:
UPDATE tabel SET felt1='blabla', felt2='sniksnak', felt3='slut' WHERE id='prid'
Men jeg forstår det ikke, kan man ikke bare få det som virker til at indsætte i databasen ikke bare kan omkodes til at opdatere.
Jeg kan ganske enkelt ikke finde ud af at omsætte Jeres informationer til mit site.
Hvor skal det indsættes og hvad skal evt. væk fra koden...
Når jeg indsætter dette:
$sql="UPDATE `products` SET `title` = '{$_POST["title"]}', `body` = '{$_POST["body"]}', `price` = {settype($_POST["price"], "float")}, `image` = '{$_POST["image"]}' WHERE `id` = 1";
Istedet for dette: $sql="UPDATE INTO products (title, body, price, image) VALUES ('$_POST[title]','$_POST[body]','$_POST[price]','$_POST[image]')";
Får jeg følgende fejl: Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/user1/html/ehandel/update.php on line 11
Det er fantastisk!! Tusinde tak for hjælpen så langt...
Den virker kun når jeg ændre ID 1, når jeg prøver at ændre ID 2 sker der ingenting. Men som sagt ID 1 virker...
Ved du tilfældigvis hvordan at det automatisk tager det ID jeg ændrer :-)
Synes godt om
Slettet bruger
31. august 2010 - 00:04#7
Du skal jo på én eller anden måde have splittet dine produkter op. I dit første indlæg pumper du ALLE produkterne ud - med en <form> for hver - ingen </form> - dén går ikke.
Jeg ville lægge dem ud i en link-liste - som man kan klikke på, og "åbne" dem ét af gangen, på et rette-dokument (<form>), rette og gemme.
Altså 3 php-dokumenter (foruden det du allerede bruger til at oprette med):
2 retProdukt.php: som henter og viser det ene produkt i en form. "SELECT * FROM products WHERE id='".mysql_real_escape_string($_GET["id"])."'" <form action="gemProdukt.php" method="POST"> echo "<input type='hidden' name='id' value='".$_GET["id"]."'>"; + <input>'er for resten af felterne ( som i din oprettelsesformen) </form>
3 gemProdukt.php: som modtager rettelserne fra retProdukt.php, og UPDATE'er databasen:
Nu har jeg indsat det præcis som du har skrevet, og det får ganske vist det hele frem i felterne i <form>'en, men når jeg ændre f.eks. en title så kommer den med "Hurraaa "-besked men det bliver ikke ændret i databasen :-(
Hvad kan det skyldes?
Tak for din fantastiske tålmodighed med mig :-)
Synes godt om
Slettet bruger
31. august 2010 - 23:41#11
Det var mystisk.. Er du sikker ? - Måske er listen bare cachet (viser det samme som sidst uden at spørge serveren) For hvis den kommer ud og siger "hurraaaa" - så lykkedes det UPDATE'n (sgu)!
Du kan evt. prøve at udskrive HVAD den opdaterede - altså hvordan UPDATE-sætningen så ud. Hvis du ændrer: echo "<html><head><script>alert('Hurraaaa');window.location.href='produktliste.php'</script></head></html>"; til echo "<html><head><script>alert('Hurraaaa: $sql');window.location.href='produktliste.php'</script></head></html>";
<html><head><script>alert('Hurraaaa: UPDATE products SET title='T-shirt',body='Beskrivelse',price='45.00',image='test.png' WHERE id='' ');window.location.href='produktliste.php'</script></head></html>
Kan det passe at jeg mangler et ID?
Synes godt om
Slettet bruger
01. september 2010 - 09:36#13
Ja, det er præcis dét som er galt - det er fordi du har fjernet det skjulte id-felt
Tusinde tak for din store tålmodighed, og fantastiske hjælp!
Skriv et svar så jeg kan overføre point...
Du er et herligt menneske T4NK3R!
Synes godt om
Slettet bruger
01. september 2010 - 11:53#15
Selv tak - Sådan ER vi bare, her i branchen : )
Synes godt om
Ny brugerNybegynder
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.