Avatar billede jokerper Nybegynder
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.
Avatar billede jokerper Nybegynder
30. juli 2008 - 11:15 #1
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
Avatar billede w13 Novice
30. juli 2008 - 11:22 #2
Ja, du skal jo fortælle den, hvilken post, der skal opdateres. F.eks. med "WHERE id = 10" eller noget i den stil.
Avatar billede jokerper Nybegynder
30. juli 2008 - 11:27 #3
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?
Avatar billede w13 Novice
30. juli 2008 - 11:34 #4
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'];
Avatar billede jokerper Nybegynder
30. juli 2008 - 11:44 #5
Avatar billede w13 Novice
30. juli 2008 - 11:55 #6
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.
Avatar billede jokerper Nybegynder
30. juli 2008 - 11:57 #7
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.
Avatar billede jokerper Nybegynder
30. juli 2008 - 12:04 #8
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?
Avatar billede w13 Novice
30. juli 2008 - 12:05 #9
Jeg kan nok ikke hjælpe meget mere uden at se problemet selv. Koderne burde i hvert fald fungere.
Avatar billede jokerper Nybegynder
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.
Avatar billede w13 Novice
30. juli 2008 - 12:14 #11
Jep. w13 (at) ofir (dot) dk
Avatar billede w13 Novice
30. juli 2008 - 13:00 #12
Ok. Nu er jeg derinde. Hvad er det så, der ikke virker?
Avatar billede jokerper Nybegynder
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.
Avatar billede jokerper Nybegynder
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?
Avatar billede w13 Novice
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. =)
Avatar billede w13 Novice
30. juli 2008 - 13:36 #16
Dvs. fejlen opstår i koden på hovedsiden.
Avatar billede jokerper Nybegynder
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'];
Avatar billede w13 Novice
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.
Avatar billede jokerper Nybegynder
30. juli 2008 - 15:55 #19
Så spiller det vist...
Avatar billede w13 Novice
30. juli 2008 - 16:03 #20
Cool. :)
Avatar billede dkfire Nybegynder
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 ?.
Avatar billede jokerper Nybegynder
30. juli 2008 - 16:17 #22
jo, jeg rettede dem selv lige til, tak.
Avatar billede w13 Novice
30. juli 2008 - 20:43 #23
Hehe. Jo :P
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