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å dit thumbnail billed.<br>Husk at der ikke skal stnå .jpg efter navnet!"); document.form.billed.focus(); return false; } if (document.form.billedstor.value == "") { alert("Du mangler at skrive navnet pnå det store billed.<br>Husk at der ikke skal stnå .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'> </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'"); ?> <? } ?>
Annonceindlæg fra Cognizant
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'"); } ?>
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'"); } ?>
24. august 2004 - 14:14
#3
det er heller ikke nødvendigt at sætte id til at starte med
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.
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'"); } ?>
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();'>
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
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.
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'> </td> <td width='325' height="25" align="left" valign="middle" class='tabeltekst'><input type='submit' value='Ret' class='knap'> </td> </tr> </table> </form>
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.
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
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.
25. august 2004 - 14:22
#13
for mig virker det ikke i Firefox men virker ok i Internet Explorer
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'> </td> † † † <td width='325' height="25" align="left" valign="middle" class='tabeltekst'><input type='submit' value='Ret' class='knap'> † † † </td> † † </tr> † </table> </form>
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'> </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>"; } ?>
26. august 2004 - 08:49
#16
Tak for hjælpen shodan. Det sidste eksempel du kommer med virker helt perfekt. :-)
Vi tilbyder markedets bedste kurser inden for webudvikling