Avatar billede anielsen Nybegynder
24. august 2004 - 13:14 Der er 13 kommentarer og
3 løsninger

Ret funktion med update form virker ikke

Jeg har lavet en ret side til et admin modul, men når jeg poster den, så ændres indholdet ikke i min MySQL database. Connectionen er sat ind foroven på siden og den virker godt nok. Den trækker tingene ud fra databasen som den skal, men den kan ikke "update", når jeg trykker på "Ret" - knappen.

Kan i se hvad der er i vejen med koden,, som gør at jeg ikke kan update.

Jeg er newbie, så jeg vil gerne have at i sætte jeres forslag ind i koden for mig.

Her er koden:

ret.php
-------------------------------------
<script language="JavaScript" type="text/javascript">
                                function checkform(){
                                    if (document.form.overskrift.value == "") {
                                        alert("Du mangler at skrive et navn!");
                                        document.form.overskrift.focus();
                                        return false;
                                    }
                                    if (document.form.billed.value == "") {
                                        alert("Du mangler at skrive navnet pn&aring; dit thumbnail billed.<br>Husk at der ikke skal stn&aring; .jpg efter navnet!");
                                        document.form.billed.focus();
                                        return false;
                                    }
                                    if (document.form.billedstor.value == "") {
                                        alert("Du mangler at skrive navnet pn&aring; det store billed.<br>Husk at der ikke skal stn&aring; .jpg efter navnet!");
                                        document.form.billedstor.focus();
                                        return false;
                                    }
                                    if (document.form.tekst.value == "") {
                                        alert("Du mangler at skrive noget tekst!");
                                        document.form.tekst.focus();
                                        return false;
                                    }
                                    return true;
                                }
                                </script>

<? $id = $_GET[id];
$query = mysql_query("SELECT * FROM forsiden WHERE id='$id'");
while($r = mysql_fetch_array($query)) {
$id = $r["id"];
$overskrift = $r["overskrift"];
$billed = $r["billed"];
$billedstor = $r["billedstor"];
$tekst = $r["tekst"]; ?>
<form method='post' action='<? echo $PHP_SELF?>' name='form' onsubmit='java script:return checkform();'>
<input type='hidden' name='action' value='ret'>
<input type='hidden' name='id' value='<? echo $id ?>'>
    <table width='400' height="175" border="0" cellpadding='0' cellspacing='0'>
    <tr>
      <td width="75" height="20" valign='top' class='login'>Overskrift:</td>
      <td width='325' height="20" align='left' valign="top" class='tabeltekst'><input type='text' name='navn' value='<? echo $overskrift ?>' class='felt1'></td>
    </tr>
    <tr>
      <td width="75" height="20" valign='top' class='login'>Billed:</td>
      <td width='325' height="20" align='left' valign="top" class='tabeltekst'><input type='text' name='sted' value='<? echo $billed ?>' class='felt1'></td>
    </tr>
    <tr>
      <td width="75" height="20" valign='top' class='login'>Billedstor:</td>
      <td width='325' height="20" align='left' valign="top" class='tabeltekst'><input type='text' name='fra' value='<? echo $billedstor ?>' class='felt1'></td>
    </tr>
    <tr>
      <td width="75" height="90" valign='top' class='login'>Tekst:</td>
      <td width='325' height="90" align='left' valign="top" class='tabeltekst'><input type='text' name='til' value='<? echo $tekst ?>' class='felt2multiline'></td>
    </tr>
    <tr>
      <td width="75" height="25" align="left" valign='top' class='tabeltekst'>&nbsp;</td>
      <td width='325' height="25" align="left" valign="middle" class='tabeltekst'><input type='submit' value='Ret' class='knap'>
      </td>
    </tr>
  </table>
</form>
<? } ?>
<? if($_POST[action] == "ret") { ?>
<? $update = mysql_query("UPDATE forsiden SET $id = $_POST[id];, $billed = $_POST[billed];, $billedstor = $_POST[billedstor];, $tekst = $_POST[tekst]; WHERE id='$id'"); ?>
<? } ?>
Avatar billede shodan Nybegynder
24. august 2004 - 14:13 #1
prøv at erstatte:
<? if($_POST[action] == "ret") { ?>
<? $update = mysql_query("UPDATE forsiden SET $id = $_POST[id];, $billed = $_POST[billed];, $billedstor = $_POST[billedstor];, $tekst = $_POST[tekst]; WHERE id='$id'"); ?>
<? } ?>

med:
<? if($_POST[action] == "ret") {
    $id = $_POST[id];
    $billed = $_POST[billed];
    $billedstor = $_POST[billedstor];
    $tekst = $_POST[tekst];
  mysql_query("UPDATE forsiden SET id='$id', billed='$billed', $billedstor='$billedstor', $tekst='$tekst'; WHERE id='$id'");
    }
?>
Avatar billede shodan Nybegynder
24. august 2004 - 14:14 #2
rettelse:
<? if($_POST[action] == "ret") {
    $id = $_POST[id];
    $billed = $_POST[billed];
    $billedstor = $_POST[billedstor];
    $tekst = $_POST[tekst];
  mysql_query("UPDATE forsiden SET id='$id', billed='$billed', billedstor='$billedstor', tekst='$tekst'; WHERE id='$id'");
    }
?>
Avatar billede shodan Nybegynder
24. august 2004 - 14:14 #3
det er heller ikke nødvendigt at sætte id til at starte med
Avatar billede anielsen Nybegynder
24. august 2004 - 15:12 #4
Satte dette ind:
<? if($_POST[action] == "ret") {
    $id = $_POST[id];
    $billed = $_POST[billed];
    $billedstor = $_POST[billedstor];
    $tekst = $_POST[tekst];
  mysql_query("UPDATE forsiden SET id='$id', billed='$billed', billedstor='$billedstor', tekst='$tekst'; WHERE id='$id'");
    }
?>

Får denne fejl ved at sætte dette ind

Parse error: parse error, unexpected T_STRING in /customers/hi-tower.dk/hi-tower.dk/httpd.www/admin/forsiden/ret.php on line 109

Og det er den lineje, hvor der står id= post id. Hvis jeg fjerner denne linje så tager den bare billed=post  billed og skriver samme fejl.
Avatar billede shodan Nybegynder
24. august 2004 - 15:31 #5
prøv at fjerne det ; der er lige før WHERE på linie 109.

ellers prøv med:
<? if($_REQUEST[action] == "ret") {
    $id = $_REQUEST[id];
    $billed = $_REQUEST[billed];
    $billedstor = $_REQUEST[billedstor];
    $tekst = $_REQUEST[tekst];
  mysql_query("UPDATE forsiden SET billed='$billed', billedstor='$billedstor', tekst='$tekst' WHERE id='$id'");
    }
?>
Avatar billede anielsen Nybegynder
24. august 2004 - 15:44 #6
Den ryder alle felterne i stedet for at opdatere det der stod der. Når jeg skriver noget i felterne, og trykker ret, så sker der ikke nogen opdatering. Det eneste felt der bliver stående er "overskrift".

Er det fordi at  formen linker til sig selv og ikke en anden side?
<form method='post' action='<? echo $PHP_SELF?>' name='form' onsubmit='java script:return checkform();'>
Avatar billede shodan Nybegynder
25. august 2004 - 09:08 #7
nej jeg har selv flere sider der linker til sig selv igen.

prøv at indsætte linien:
echo $id, $billed, $billedstor, $tekst;

mellem $tekst = $_REQ.... og mysql_query(".... linierne for at se om den overhovedet har fået værdierne fra formularen med over
Avatar billede anielsen Nybegynder
25. august 2004 - 10:24 #8
Den udskriver godt nok id-nummeret, men den fjerner indholdet i alle felterne så de er tomme.
Indholdet i db`en er også forsvundet nu.

Håber du har en ide til hvad jer nu skal gøre. Men den skriver ihvertfald  $id ud.
Avatar billede shodan Nybegynder
25. august 2004 - 11:35 #9
jeg fik det til at virke med denne kode:

<? $id = $_GET[id];
$query = mysql_query("SELECT * FROM forsiden WHERE id='$id'");
$r = mysql_fetch_array($query);
$id = $r["id"];
$overskrift = $r["overskrift"];
$billed = $r["billed"];
$billedstor = $r["billedstor"];
$tekst = $r["tekst"]; ?>
<? if($_REQUEST['action'] == "ret") {
    $id2 = $_REQUEST['id'];
    $overskrift2 = $_REQUEST['overskrift'];
    $billed2 = $_REQUEST['billed'];
    $billedstor2 = $_REQUEST['billedstor'];
    $tekst2 = $_REQUEST['tekst'];
  mysql_query("update forsiden set overskrift=$overskrift2, billed=$billed2, billedstor=$billedstor2, tekst=$tekst2 where id=$id2");
    }
?><form method='post' action='ret.php?id=<? echo $id; ?>&action=ret' name='form' onsubmit='java script:return checkform();'>
<input type='hidden' name='action' value='ret'>
<input type='hidden' name='id' value='<? echo $id ?>'>
    <table width='400' height="175" border="0" cellpadding='0' cellspacing='0'>
    <tr>
      <td width="75" height="20" valign='top' class='login'>Overskrift:</td>
      <td width='325' height="20" align='left' valign="top" class='tabeltekst'><input type='text' name='overskrift' value='<? echo $overskrift ?>' class='felt1'></td>
    </tr>
    <tr>
      <td width="75" height="20" valign='top' class='login'>Billed:</td>
      <td width='325' height="20" align='left' valign="top" class='tabeltekst'><input type='text' name='billed' value='<? echo $billed ?>' class='felt1'></td>
    </tr>
    <tr>
      <td width="75" height="20" valign='top' class='login'>Billedstor:</td>
      <td width='325' height="20" align='left' valign="top" class='tabeltekst'><input type='text' name='billedstor' value='<? echo $billedstor ?>' class='felt1'></td>
    </tr>
    <tr>
      <td width="75" height="90" valign='top' class='login'>Tekst:</td>
      <td width='325' height="90" align='left' valign="top" class='tabeltekst'><input type='text' name='tekst' value='<? echo $tekst ?>' class='felt2multiline'></td>
    </tr>
    <tr>
      <td width="75" height="25" align="left" valign='top' class='tabeltekst'>&nbsp;</td>
      <td width='325' height="25" align="left" valign="middle" class='tabeltekst'><input type='submit' value='Ret' class='knap'>
      </td>
    </tr>
  </table>
</form>
Avatar billede anielsen Nybegynder
25. august 2004 - 12:04 #10
Jeg har nu kopieret hele koden ind for at se om det virker, men den opdatere ikke databasen. Den skriver det samme i felterne, selv om jeg skriver noget andet.

Tror du der skal være en connection inde i php-taget efter id=get id?
Det er bare mystisk, for jeg kunne godt udskrive id fra databasen, da jeg testede det.
Avatar billede shodan Nybegynder
25. august 2004 - 12:22 #11
når du har rettet i den og den loader siden igen og der står det samme prøv så at fjerne &action=ret fra adr. linie og se om den ikke har opdateret
Avatar billede anielsen Nybegynder
25. august 2004 - 12:52 #12
har prøvet at tilføje noget i felterne og trykket på ret knappen. Så fjernede jeg &action=ret fra adr. linjen, men der sker stadig ikke nogen opdatering.
Avatar billede shodan Nybegynder
25. august 2004 - 14:22 #13
for mig virker det ikke i Firefox men virker ok i Internet Explorer
Avatar billede anielsen Nybegynder
25. august 2004 - 14:34 #14
Jeg har fjernet 2-tallet efter overskrift, billed, billedstor og tekst. Så retter den godt nok teksten i felterne MEN ikke i db`en. Jeg browser det i internet explorer.

Her er koden som nu gemmer rettelserne i felterne, men ikke opdatere i db`en:

<? $id = $_GET[id];
$query = mysql_query("SELECT * FROM forsiden WHERE id='$id'");
$r = mysql_fetch_array($query);
$id = $r["id"];
$overskrift = $r["overskrift"];
$billed = $r["billed"];
$billedstor = $r["billedstor"];
$tekst = $r["tekst"]; ?>
<? if($_REQUEST['action'] == "ret") {
$id = $_REQUEST['id'];
$overskrift = $_REQUEST['overskrift'];
$billed = $_REQUEST['billed'];
$billedstor = $_REQUEST['billedstor'];
$tekst = $_REQUEST['tekst'];
mysql_query("UPDATE forsiden SET overskrift=$overskrift, billed=$billed, billedstor=$billedstor, tekst=$tekst where id=$id");
}
?>
<form method='post' action='ret.php?id=<? echo $id; ?>&action=ret' name='form' onsubmit='java script:return checkform();'>
<input type='hidden' name='action' value='ret'>
<input type='hidden' name='id' value='<? echo $id ?>'>
† † <table width='400' height="175" border="0" cellpadding='0' cellspacing='0'>
† † <tr>
† † † <td width="75" height="20" valign='top' class='login'>Overskrift:</td>
† † † <td width='325' height="20" align='left' valign="top" class='tabeltekst'><input type='text' name='overskrift' value='<? echo $overskrift ?>' class='felt1'></td>
† † </tr>
† † <tr>
† † † <td width="75" height="20" valign='top' class='login'>Billed:</td>
† † † <td width='325' height="20" align='left' valign="top" class='tabeltekst'><input type='text' name='billed' value='<? echo $billed ?>' class='felt1'></td>
† † </tr>
† † <tr>
† † † <td width="75" height="20" valign='top' class='login'>Billedstor:</td>
† † † <td width='325' height="20" align='left' valign="top" class='tabeltekst'><input type='text' name='billedstor' value='<? echo $billedstor ?>' class='felt1'></td>
† † </tr>
† † <tr>
† † † <td width="75" height="90" valign='top' class='login'>Tekst:</td>
† † † <td width='325' height="90" align='left' valign="top" class='tabeltekst'><input type='text' name='tekst' value='<? echo $tekst ?>' class='felt2multiline'></td>
† † </tr>
† † <tr>
† † † <td width="75" height="25" align="left" valign='top' class='tabeltekst'>&nbsp;</td>
† † † <td width='325' height="25" align="left" valign="middle" class='tabeltekst'><input type='submit' value='Ret' class='knap'>
† † † </td>
† † </tr>
† </table>
</form>
Avatar billede shodan Nybegynder
25. august 2004 - 14:54 #15
prøv denne kode i IE:
<? $id = $_REQUEST['id'];
include("conn.php");
$query = mysql_query("SELECT * FROM forsiden WHERE id='$id'");
$r = mysql_fetch_array($query);
$overskrift = $r["overskrift"];
$billed = $r["billed"];
$billedstor = $r["billedstor"];
$tekst = $r["tekst"]; ?>
<form method='post' action='ret.php?id=<? echo $id; ?>&action=ret' name='form' onsubmit='java script:return checkform();'>
    <table width='400' height="175" border="0" cellpadding='0' cellspacing='0'>
    <tr>
      <td width="75" height="20" valign='top' class='login'>Overskrift:</td>
      <td width='325' height="20" align='left' valign="top" class='tabeltekst'><input type='text' name='overskrift' value='<? echo $overskrift ?>' class='felt1'></td>
    </tr>
    <tr>
      <td width="75" height="20" valign='top' class='login'>Billed:</td>
      <td width='325' height="20" align='left' valign="top" class='tabeltekst'><input type='text' name='billed' value='<? echo $billed ?>' class='felt1'></td>
    </tr>
    <tr>
      <td width="75" height="20" valign='top' class='login'>Billedstor:</td>
      <td width='325' height="20" align='left' valign="top" class='tabeltekst'><input type='text' name='billedstor' value='<? echo $billedstor ?>' class='felt1'></td>
    </tr>
    <tr>
      <td width="75" height="90" valign='top' class='login'>Tekst:</td>
      <td width='325' height="90" align='left' valign="top" class='tabeltekst'><input type='text' name='tekst' value='<? echo $tekst ?>' class='felt2multiline'></td>
    </tr>
    <tr>
      <td width="75" height="25" align="left" valign='top' class='tabeltekst'>&nbsp;</td>
      <td width='325' height="25" align="left" valign="middle" class='tabeltekst'><input type='submit' value='Ret' class='knap'>
      </td>
    </tr>
  </table>
</form>
<?    @$action = $_REQUEST['action'];
    if($action == 'ret') {
        $id2 = $_REQUEST['id'];$overskrift2 = $_REQUEST['overskrift'];$billed2 = $_REQUEST['billed'];$billedstor2 = $_REQUEST['billedstor'];$tekst2 = $_REQUEST['tekst'];
        include("conn.php");
        mysql_query("update forsiden set overskrift='$overskrift2', billed='$billed2', billedstor='$billedstor2', tekst='$tekst2' where id=$id2");
        echo "rettet!";
        echo "<meta http-equiv=refresh content=2;URL=ret.php?id=$id>";
    }
?>
Avatar billede anielsen Nybegynder
26. august 2004 - 08:49 #16
Tak for hjælpen shodan. Det sidste eksempel du kommer med virker helt perfekt. :-)
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