30. juli 2008 - 11:11
Der er
22 kommentarer og 1 løsning
MySql update post
Hej Eksperter Jeg har et problem med at opdatere en post. Mit udtræk fra DB: echo "<th width=\"20\" ALIGN=\"center\">{$row['id']}</th>" . "<th width=\300\" ALIGN=\"center\">{$row['oenske']}</th>" . "<th width=\"400\" ALIGN=\"center\">{$row['sted']}</th>" . "<th width=\"80\" ALIGN=\"right\">{$row['pris']}.-</th>" . "<th width=\"180\" ALIGN=\"center\"><font color=\"#990000\"><form name=\"form\" id=\"form\"> <select name=\"jumpMenu\" id=\"jumpMenu\"> <option>Valgmuligheder...</option> <option value=\"update.php\">Reserver</option> <option value=\"side2.htm\">Er købt</option> </select> <input type=\"button\" name=\"go_button\" id=\"go_button\" value=\"Go\" onclick=\"MM_jumpMenuGo('jumpMenu','parent',0)\" /> </form>{$row['status']}<font></th>" . "<br><br>"; echo "</tr></table>"; når jeg så skal lave koden til at opdatere feltet status, udfra id. {$row['id']} I min database "oenskeliste". Når der bliver trykket på "Reserver" eller "Er købt". Jeg ville sådan set også gerne have den blev på samme side og bare opdaterede DB og viste det indtastede.
Annonceindlæg fra Barco
OBS. Der vil jo være flere oensker "på samme side" derfor skal den kun opdatere i dens egen række altså ud fra id nr. pt. kan jeg kun få den til at opdatere: $query = "UPDATE `oensker` SET `status` = 'Er købt'"; Men det gør den på alle rækker i DB
Ja, du skal jo fortælle den, hvilken post, der skal opdateres. F.eks. med "WHERE id = 10" eller noget i den stil.
Den lister jo selv alle ønskerne op, derfor ved jeg vist ikke hvilket id nr der kommer hvor. Der kan jo godt være fx 10 ønsker med forskellige id nr. Men den laver selv rækkerne med en jumpmenu udfor hver, så ved jeg ikke om jeg kan forud sige hvilke id nr. Hvad nu hvis der var rigtigt mange ønsker? Forstår du hvad jeg mener?
Nej, jeg forstår det ikke helt. :) Kan jeg evt. se et link? Du bliver nødt til på en eller anden måde at overføre den givne posts id, så update-siden ved, hvilken en post, der skal opdateres. Det kan også gøres ret let. F.eks. hvis du retter: <option value=\"update.php\">Reserver</option> til: <option value=\"update.php?id=".$row['id']."\">Reserver</option> tror jeg.. Så kan du på update-siden skrive: $query = "UPDATE `oensker` SET `status` = 'Er købt' WHERE id = " . $_GET['id'];
Ja. Min sidste kommentar skulle kunne gøre det. Vi skriver bare id'et ind som en querystring i option, og så henter vi den igen på update.php.
Den virkede første gang jeg ændrede status, men da jeg ville prøve at ændre status på id nr. 2 virker det ikke? Men det er klart lige ved at funge.
Det er som om at den kun kan gøre det ved det første ønske på listen. Kan det være noget med at jump menuen har samme navn/id kaldenavn ved alle poster?
Jeg kan nok ikke hjælpe meget mere uden at se problemet selv. Koderne burde i hvert fald fungere.
30. juli 2008 - 12:07
#10
Okay har du en mail, så vil jeg gerne sende dig et link, med da jeg samtidigt bruger .htaccess så kan du bare få en gangskode med der.
30. juli 2008 - 12:14
#11
Jep. w13 (at) ofir (dot) dk
30. juli 2008 - 13:00
#12
Ok. Nu er jeg derinde. Hvad er det så, der ikke virker?
30. juli 2008 - 13:15
#13
Den kan ikke finde ud af id hvis man fx tager række 4, viser den stadigvæk id=1.
30. juli 2008 - 13:28
#14
Kan det være i databasen, at feltet "id" og "status" skal kodes sammen med en key af en eller anden slags?
30. juli 2008 - 13:36
#15
Fejlen opstår, fordi du udskriver: <form name="form" id="form"> <select name="jumpMenu" id="jumpMenu"> <option>Valgmuligheder...</option> <option value="update.php?id=1">Reserver</option> <option value="update.php?id=1">Er købt</option> </select> <input type="button" name="go_button" id="go_button" value="Go" onclick="MM_jumpMenuGo('jumpMenu','parent',0)" /> </form> for hver af posterne. Bemærk at du rigtig mange gange sætter name og id, og når din side bliver genereret har du de samme name og id for hver post! Derfor kan den ikke finde ud af, hvad den skal gøre, fordi den forveksler alle id'erne. Et id (og name) skal jo være unikt for at fungere. Derfor kan du i stedet bruge: echo "<th style=\"width:20px;text-align:center\">{$row['id']}</th>" . "<th style=\"width:300px;text-align:center\">{$row['oenske']}</th>" . "<th style=\"width:400px;text-align:center\">{$row['sted']}</th>" . "<th style=\"width:80px;text-align:center\">{$row['pris']}.-</th>" . "<th style=\"width:180px;text-align:center;color:#900\">" . "<form id=\"form".$row['id']."\"> <select name=\"jumpMenu".$row['id']."\" id=\"jumpMenu".$row['id']."\"> <option>Valgmuligheder...</option> <option value=\"update.php\">Reserver</option> <option value=\"side2.htm\">Er købt</option> </select> <input type=\"button\" value=\"Go\" onclick=\"MM_jumpMenuGo('jumpMenu".$row['id']."','parent',0)\" /> </form>{$row['status']}<font></th>" . "<br><br>"; echo "</tr></table>"; Så indsættes id'erne også i name-attributter og id-attributterne. Sig endelig til, hvis jeg tabte dig der. =)
30. juli 2008 - 13:36
#16
Dvs. fejlen opstår i koden på hovedsiden.
30. juli 2008 - 15:40
#17
Jo, jeg kan godt se hvad du mener, men vidste ikke hvordan jeg kunne gøre det. Jeg får 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 Når jeg bruger denne linie: $query = "UPDATE `oensker` SET `status` = 'Er købt' WHERE id = " . $_GET['id'];
30. juli 2008 - 15:42
#18
Undskyld.. Den rigtige kode er: echo "<th style=\"width:20px;text-align:center\">{$row['id']}</th>" . "<th style=\"width:300px;text-align:center\">{$row['oenske']}</th>" . "<th style=\"width:400px;text-align:center\">{$row['sted']}</th>" . "<th style=\"width:80px;text-align:center\">{$row['pris']}.-</th>" . "<th style=\"width:180px;text-align:center;color:#900\">" . "<form id=\"form".$row['id']."\"> <select name=\"jumpMenu".$row['id']."\" id=\"jumpMenu".$row['id']."\"> <option>Valgmuligheder...</option> <option value=\"update.php".$row['id']."\">Reserver</option> <option value=\"side2.htm".$row['id']."\">Er købt</option> </select> <input type=\"button\" value=\"Go\" onclick=\"MM_jumpMenuGo('jumpMenu".$row['id']."','parent',0)\" /> </form>{$row['status']}<font></th>" . "<br><br>"; echo "</tr></table>"; :) Jeg kom til at bruge den gamle, som ikke overførte id'et som querystring.
30. juli 2008 - 15:55
#19
Så spiller det vist...
30. juli 2008 - 16:03
#20
Cool. :)
30. juli 2008 - 16:14
#21
w13: brude det ikke være: echo "<th style=\"width:20px;text-align:center\">{$row['id']}</th>" . "<th style=\"width:300px;text-align:center\">{$row['oenske']}</th>" . "<th style=\"width:400px;text-align:center\">{$row['sted']}</th>" . "<th style=\"width:80px;text-align:center\">{$row['pris']}.-</th>" . "<th style=\"width:180px;text-align:center;color:#900\">" . "<form id=\"form".$row['id']."\"> <select name=\"jumpMenu".$row['id']."\" id=\"jumpMenu".$row['id']."\"> <option>Valgmuligheder...</option> <option value=\"update.php?id=".$row['id']."\">Reserver</option> <option value=\"side2.htm?id=".$row['id']."\">Er købt</option> </select> <input type=\"button\" value=\"Go\" onclick=\"MM_jumpMenuGo('jumpMenu".$row['id']."','parent',0)\" /> </form>{$row['status']}<font></th>" . "<br><br>"; echo "</tr></table>"; Læg mærke til de 2 ?.
30. juli 2008 - 16:17
#22
jo, jeg rettede dem selv lige til, tak.
30. juli 2008 - 20:43
#23
Hehe. Jo :P
Vi tilbyder markedets bedste kurser inden for webudvikling