06. november 2008 - 12:26
Der er
11 kommentarer og 1 løsning
Edit/rediger i mit simple nyhedssystem?
Goddag...
Jeg er ny til php, men har vha. af diverse tutorials/bøger fået lavet et simpelt nyhedssystem... Her kan man oprette nyheder og slette dem igen..
Nu er spørgsmålet så hvordan jeg tager skridtet videre og gør således at man kan redigere i dem?
Siden kan ses her:
http://www.valuable.dk/nyhedssystem/nyheder.php Jeg har lidt en ide om at det er på samme måde som sletningen foregår, blot med lidt få justeringer.. Er dog langt fra sikker, så vil meget gerne have hjælp :)
Hvis i skal have nogle af kildekoderne for bedre at kunne hjælpe mig skriver i bare!
Annonceindlæg fra Kommando
06. november 2008 - 12:48
#1
Jeg ville tilføje funktionaliteten i opret.nyhed.php, hvor du kan medsende et nyheds-ID, hvis der er tale om redigering (modsat oprettelse). Hvis nyheds-ID'et er medsendt, skal formularens værdier udfyldes med værdier fra DB og selve handlingen at gemme skal håndteres med et UPDATE isf. INSERT. Giver det mening?
06. november 2008 - 13:32
#2
Hej jensgram..
Ja skulle nok mene det giver mening, hvis jeg har forstået dig ret ;) Men er det ikke allerede det nr/id jeg har som jeg bl.a. også bruger når jeg sletter en nyhed, hvor den sletter nyheden ud fra hvilket nr. det er ?
Eksempel på link til sletning af nyhed:
http://www.valuable.dk/nyhedssystem/sletning_nyhed.php?nr=4
06. november 2008 - 13:44
#3
Jo, præcis. Så kan du - hvis "nr" er sat (i.e. du er i "edit mode") hente nyhedens data til formularen via "nr".
06. november 2008 - 14:04
#4
Jeps, okay.. Så er det samme tankegang som jeg også selv havde... Problemet er så bare jeg ikke ved hvordan jeg skal få det til at lykkedes :/ Smider lige hoveddelen koderne til siderne her - i håbet om at du kan hjælpe med hvordan redigeringssiden skal se ud.. --------------------------- nyheder.php --------------------------- <? mysql_connect("localhost", "root", "") or die(mysql_error()); mysql_select_db("test") or die(mysql_error()); $foresp = mysql_query("SELECT dato, overskrift, besked, billede, nr FROM nyheder ORDER BY nr DESC"); if(!$foresp){ //noget gik galt. die("Fejl ved SQL udførsel: ".mysql_error()); } while($data = mysql_fetch_row($foresp)){ echo "<table border='1' bordercolor='#808080' style='border-collapse: collapse' width='395'><tr><td bgcolor='#1f2029'><font face='Verdana' color='#ffffff' size='1'><b>$data[1]</b></td></tr>"; echo "<tr><td><table><tr><td valign='top'><img border='0' src='nyheder_billeder/$data[3]' width='70' height='70'></td><td valign='top'><font face='Verdana'><font face='Verdana' color='#ffffff' size='1'>$data[2]<br><br></font></td></tr></table></td></tr>"; echo "<tr><td bgcolor='#1f2029'><font face='Verdana' color='#ffffff' size='1'>Skrevet d. $data[0] , <a href='rediger_nyhed.php?nr=$data[4]'>REDIGER</a> , <a href='sletning_nyhed.php?nr=$data[4]'>SLET</a></font></td></tr></table><br>"; } ?> --------------------------- opret.nyhed.php --------------------------- <? mysql_connect("localhost", "root", "") or die(mysql_error()); mysql_select_db("test") or die(mysql_error()); if($_POST['skriv']){ $besked = $_POST['besked']; $ip = $GLOBALS['REMOTE_ADDR']; $dato = date("d/m-Y : H:i:s"); $besked = str_replace(" "," ", nl2br(htmlentities(addslashes($besked)))); $besked = str_replace("<","<", $besked); $besked = str_replace(">",">", $besked); mysql_query("INSERT INTO nyheder (dato, overskrift, besked, billede) VALUES ('$dato', '$_POST[overskrift]', '$besked', '$_POST[billede]')"); } ?> <form method=post action="opret.nyhed.php"> <input type=hidden NAME=skriv VALUE=1> <div align="left"> <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="416" height="154"> <tr> <td width="416" height="33" valign="top"> <table cellSpacing="0" cellPadding="0" align="left" border="0" height="149" width="396"> <tr> <td height="1" width="82" valign="top"> <font size="1" face="Verdana" color="#FFFFFF">Overskrift:</font></td> <td height="1" width="314" valign="top"> <input type="text" name="overskrift" size="20"> </td> </tr> <tr> <td height="22" width="118" valign="top"> <font size="1" face="Verdana" color="#FFFFFF">Billede:</font></td> <td height="22" width="305" valign="middle" colspan="2"> <SELECT name=billede class='input'> <OPTION value="0.gif" selected></OPTION> <OPTION label=1.gif value=1.gif>Valuable</OPTION> <OPTION label=2.gif value=2.gif>100hits</OPTION> </SELECT> </td> </tr> <tr> <td vAlign="top" height="54" width="82"> <font size="1" face="Verdana" color="#FFFFFF">Besked:</font></td> <td height="54" width="314" valign="top"> <font color="#FFFFFF" face="Verdana" size="1"> <textarea class="input" type="text" style="WIDTH: 300px; HEIGHT: 90px" name="besked" rows="1" cols="20"></textarea> </font></td> </tr> <tr> <td height="20" width="82"></td> <td height="20" width="314" valign="top"> <input type="submit" name="submit" value="opret" style="color: #000000; background-color: #FFFFFF; border:1px solid #9A9A9A;"></td> </tr> <tr> <td height="7" width="396" colspan="2"> <font face="Verdana" size="1" color="#FFFFFF"><a href="nyheder.php"> <font color="#FFFFFF"><u>Se nyheder</u></font></a></font> </td> </tr> </table> </td> </tr> </table> </div> </form> --------------------------- sletning_nyhed.php --------------------------- <? header("Location: nyheder.php") ?> <html> <head><title></title></head> <body> <?php mysql_connect("localhost", "root", "") or die(mysql_error()); mysql_select_db("test") or die(mysql_error()); $nr = $_REQUEST["nr"]; mysql_query("DELETE FROM nyheder WHERE nr = '$nr'")or die(mysql_error()); ?> </body> </html>
06. november 2008 - 14:54
#5
--------------------------- opret.nyhed.php --------------------------- <? mysql_connect("localhost", "root", "") or die(mysql_error()); mysql_select_db("test") or die(mysql_error()); if (isset($_GET['nr']) { // Edit mode - sæt værdier til formularen $res = mysql_query('SELECT overskrift, besked FROM nyheder WHERE nr = ' . intval($_GET['nr'])); // Her skulle man nok tjekke for, om nr faktisk findes $overskrift = mysql_result($res, 0, 0); $besked = mysql_result($res, 0, 1); } else { $overskrift = ''; $besked = ''; } if($_POST['skriv']){ $besked = $_POST['besked']; $ip = $GLOBALS['REMOTE_ADDR']; $dato = date("d/m-Y : H:i:s"); $besked = str_replace(" "," ", nl2br(htmlentities(addslashes($besked)))); $besked = str_replace("<","<", $besked); $besked = str_replace(">",">", $besked); if (isset($_GET['nr'])) { mysql_query('UPDATE ...'); } else { mysql_query("INSERT INTO nyheder (dato, overskrift, besked, billede) VALUES ('$dato', '$_POST[overskrift]', '$besked', '$_POST[billede]')"); } } ?> <form method=post action="opret.nyhed.php<?php if (isset($_GET['nr']) print '?nr=' . $_GET['nr']; ?>"> <input type=hidden NAME=skriv VALUE=1> <div align="left"> <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="416" height="154"> <tr> <td width="416" height="33" valign="top"> <table cellSpacing="0" cellPadding="0" align="left" border="0" height="149" width="396"> <tr> <td height="1" width="82" valign="top"> <font size="1" face="Verdana" color="#FFFFFF">Overskrift:</font></td> <td height="1" width="314" valign="top"> <input type="text" name="overskrift" size="20" value="<?php print $overskrift ?>"> </td> </tr> <tr> <td height="22" width="118" valign="top"> <font size="1" face="Verdana" color="#FFFFFF">Billede:</font></td> <td height="22" width="305" valign="middle" colspan="2"> (Her skal lige laves noget mere snedigt. Det gider jeg ikke.) <SELECT name=billede class='input'> <OPTION value="0.gif" selected></OPTION> <OPTION label=1.gif value=1.gif>Valuable</OPTION> <OPTION label=2.gif value=2.gif>100hits</OPTION> </SELECT> </td> </tr> <tr> <td vAlign="top" height="54" width="82"> <font size="1" face="Verdana" color="#FFFFFF">Besked:</font></td> <td height="54" width="314" valign="top"> <font color="#FFFFFF" face="Verdana" size="1"> <textarea class="input" type="text" style="WIDTH: 300px; HEIGHT: 90px" name="besked" rows="1" cols="20"><?php print $besked ?></textarea> </font></td> </tr> <tr> <td height="20" width="82"></td> <td height="20" width="314" valign="top"> <input type="submit" name="submit" value="opret" style="color: #000000; background-color: #FFFFFF; border:1px solid #9A9A9A;"></td> </tr> <tr> <td height="7" width="396" colspan="2"> <font face="Verdana" size="1" color="#FFFFFF"><a href="nyheder.php"> <font color="#FFFFFF"><u>Se nyheder</u></font></a></font> </td> </tr> </table> </td> </tr> </table> </div> </form>
06. november 2008 - 14:55
#6
Det er ikke funktionelt, men skulle gerne give dig en idé til det videre arbejde. Noget andet er så, at du måske lige skulle tage en recap på nutidig HTML :)
06. november 2008 - 22:03
#7
Kunne desværre ikke rigtig bruge det til så meget.. Har siddet og makket med det forgæves i mange timer nu og er stødt på rigtig mange problemer undervejs, hvilket har gjort mig endnu mere usikker end jeg var før jeg gik i gang.. Bl.a. forstår jeg slet ikke hvorfor du vil bruge opret.nyhed.php som redigeringsside når det slet ikke var planen.. Du skal tænke på at jeg er ny indenfor sproget php og det derfor er meget begrænset hvad jeg fatter af koderne so far :/
06. november 2008 - 22:13
#8
Men det bedste jeg kom frem til var en side, hvor det NOGENLUNDE virkede.. Jeg fandt frem til hvordan jeg hentede infoen fra nyheden i en tabel og ligeledes rettede den og postede.. Men når jeg så retter nyheden og gemmer det opretter den blot en ny i stedet for at rette den :S Og ligeledes laver den en masse bøvl med mellemrum (<br/>) hvor den tilføjer en masse hist og pist.. Her er siderne som de ser ud nu: //////////////////////////////////////////////////////////////////////////// --------------------------------- nyheder.php --------------------------------- <html> <head> <meta http-equiv="Content-Language" content="da"> <title></title> <link rel="stylesheet" type="text/css" href="nyhed_gfx.css"> </head> <body bgcolor="#333333"> <font color="#FFFFFF" face="Verdana" style="font-size: 9pt">» <span style="font-weight: 700">Nyheder</font></span></p> <font face="Verdana" size="1" color="#FFFFFF"><a href="opret.nyhed.php"><font color="#FFFFFF"><u>Opret nyhed</u></font></a></font> </p> <? mysql_connect("localhost", "root", "") or die(mysql_error()); mysql_select_db("test") or die(mysql_error()); if($_POST['skriv']){ $besked = $_POST['besked']; $ip = $GLOBALS['REMOTE_ADDR']; $dato = date("d/m-Y : H:i:s"); $besked = str_replace(" "," ", nl2br(htmlentities(addslashes($besked)))); $besked = str_replace("<","<", $besked); $besked = str_replace(">",">", $besked); mysql_query("INSERT INTO nyheder (dato, overskrift, besked, billede) VALUES ('$dato', '$_POST[overskrift]', '$besked', '$_POST[billede]')"); } ?> <? mysql_connect("localhost", "root", "") or die(mysql_error()); mysql_select_db("test") or die(mysql_error()); $foresp = mysql_query("SELECT dato, overskrift, besked, billede, nr FROM nyheder ORDER BY nr DESC"); if(!$foresp){ //noget gik galt. die("Fejl ved SQL udførsel: ".mysql_error()); } while($data = mysql_fetch_row($foresp)){ echo "<table border='1' bordercolor='#808080' style='border-collapse: collapse' width='395'><tr><td bgcolor='#1f2029'><font face='Verdana' color='#ffffff' size='1'><b>$data[1]</b></td></tr>"; echo "<tr><td><table><tr><td valign='top'><img border='0' src='nyheder_billeder/$data[3]' width='70' height='70'></td><td valign='top'><font face='Verdana'><font face='Verdana' color='#ffffff' size='1'>$data[2]<br><br></font></td></tr></table></td></tr>"; echo "<tr><td bgcolor='#1f2029'><font face='Verdana' color='#ffffff' size='1'>Skrevet d. $data[0] , <a href='rediger_nyhed.php?nr=$data[4]'>REDIGER</a> , <a href='sletning_nyhed.php?nr=$data[4]'>SLET</a></font></td></tr></table><br>"; } ?> </font> </body> </html> --------------------------------- opret.nyhed.php --------------------------------- <html> <head> <meta http-equiv="Content-Language" content="da"> <title></title> <link rel="stylesheet" type="text/css" href="nyhed_gfx.css"> </head> <body bgcolor="#333333"> <font color="#FFFFFF" face="Verdana" style="font-size: 9pt">» <span style="font-weight: 700">Opret nyhed</font></span></p> <? mysql_connect("localhost", "root", "") or die(mysql_error()); mysql_select_db("test") or die(mysql_error()); if($_POST['skriv']){ $besked = $_POST['besked']; $ip = $GLOBALS['REMOTE_ADDR']; $dato = date("d/m-Y : H:i:s"); $besked = str_replace(" "," ", nl2br(htmlentities(addslashes($besked)))); $besked = str_replace("<","<", $besked); $besked = str_replace(">",">", $besked); mysql_query("INSERT INTO nyheder (dato, overskrift, besked, billede) VALUES ('$dato', '$_POST[overskrift]', '$besked', '$_POST[billede]')"); } ?> <form method=post action="nyheder.php"> <input type=hidden NAME=skriv VALUE=1> <div align="left"> <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="416" height="154"> <tr> <td width="416" height="33" valign="top"> <table cellSpacing="0" cellPadding="0" align="left" border="0" height="149" width="396"> <tr> <td height="1" width="82" valign="top"> <font size="1" face="Verdana" color="#FFFFFF">Overskrift:</font></td> <td height="1" width="314" valign="top"> <input type="text" name="overskrift" size="20"> </td> </tr> <tr> <td height="22" width="118" valign="top"> <font size="1" face="Verdana" color="#FFFFFF">Billede:</font></td> <td height="22" width="305" valign="middle" colspan="2"> <SELECT name=billede class='input'> <OPTION value="0.gif" selected></OPTION> <OPTION label=1.gif value=1.gif>Valuable</OPTION> <OPTION label=2.gif value=2.gif>100hits</OPTION> </SELECT> </td> </tr> <tr> <td vAlign="top" height="54" width="82"> <font size="1" face="Verdana" color="#FFFFFF">Besked:</font></td> <td height="54" width="314" valign="top"> <font color="#FFFFFF" face="Verdana" size="1"> <textarea class="input" type="text" style="WIDTH: 300px; HEIGHT: 90px" name="besked" rows="1" cols="20"></textarea> </font></td> </tr> <tr> <td height="20" width="82"></td> <td height="20" width="314" valign="top"> <input type="submit" name="submit" value="opret" style="color: #000000; background-color: #FFFFFF; border:1px solid #9A9A9A;"></td> </tr> <tr> <td height="7" width="396" colspan="2"> <font face="Verdana" size="1" color="#FFFFFF"><a href="nyheder.php"> <font color="#FFFFFF"><u>Se nyheder</u></font></a></font> </td> </tr> </table> </td> </tr> </table> </div> </form> </font> </body> </html> --------------------------------- rediger_nyhed.php --------------------------------- <html> <head> <meta http-equiv="Content-Language" content="da"> <title></title> <link rel="stylesheet" type="text/css" href="nyhed_gfx.css"> </head> <body bgcolor="#333333"> <font color="#FFFFFF" face="Verdana" style="font-size: 9pt">» <span style="font-weight: 700">Rediger nyhed</font></span></p> <? mysql_connect("localhost", "root", "") or die(mysql_error()); mysql_select_db("test") or die(mysql_error()); if (isset($_GET['nr'])) { // Edit mode - sæt værdier til formularen $res = mysql_query('SELECT overskrift, besked FROM nyheder WHERE nr = ' . intval($_GET['nr'])); // Her skulle man nok tjekke for, om nr faktisk findes $overskrift = mysql_result($res, 0, 0); $besked = mysql_result($res, 0, 1); } else { $overskrift = ''; $besked = ''; } if($_POST['skriv']){ $besked = $_POST['besked']; $ip = $GLOBALS['REMOTE_ADDR']; $dato = date("d/m-Y : H:i:s"); $besked = str_replace(" "," ", nl2br(htmlentities(addslashes($besked)))); $besked = str_replace("<","<", $besked); $besked = str_replace(">",">", $besked); if (isset($_GET['nr'])) { mysql_query("UPDATE nyheder (dato, overskrift, besked, billede) VALUES ('$dato', '$_POST[overskrift]', '$besked', '$_POST[billede]')"); } else { mysql_query("INSERT INTO nyheder (dato, overskrift, besked, billede) VALUES ('$dato', '$_POST[overskrift]', '$besked', '$_POST[billede]')"); } } ?> <form method=post action="nyheder.php<?php if (isset($_GET['nr'])) print '?nr=' . $_GET['nr']; ?>"> <input type=hidden NAME=skriv VALUE=1> <div align="left"> <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="416" height="154"> <tr> <td width="416" height="33" valign="top"> <table cellSpacing="0" cellPadding="0" align="left" border="0" height="149" width="396"> <tr> <td height="1" width="82" valign="top"> <font size="1" face="Verdana" color="#FFFFFF">Overskrift:</font></td> <td height="1" width="314" valign="top"> <input type="text" name="overskrift" size="20" value="<?php print $overskrift ?>"> </td> </tr> <tr> <td height="22" width="118" valign="top"> <font size="1" face="Verdana" color="#FFFFFF">Billede:</font></td> <td height="22" width="305" valign="middle" colspan="2"> <SELECT name=billede class='input'> <OPTION value="0.gif" selected></OPTION> <OPTION label=1.gif value=1.gif>Valuable</OPTION> <OPTION label=2.gif value=2.gif>100hits</OPTION> </SELECT> </td> </tr> <tr> <td vAlign="top" height="54" width="82"> <font size="1" face="Verdana" color="#FFFFFF">Besked:</font></td> <td height="54" width="314" valign="top"> <font color="#FFFFFF" face="Verdana" size="1"> <textarea class="input" type="text" style="WIDTH: 300px; HEIGHT: 90px" name="besked" rows="1" cols="20"><?php print $besked ?></textarea> </font></td> </tr> <tr> <td height="20" width="82"></td> <td height="20" width="314" valign="top"> <input type="submit" name="submit" value="rediger" style="color: #000000; background-color: #FFFFFF; border:1px solid #9A9A9A;"></td> </tr> <tr> <td height="7" width="396" colspan="2"> <font face="Verdana" size="1" color="#FFFFFF"><a href="nyheder.php"> <font color="#FFFFFF"><u>Se nyheder</u></font></a></font> </td> </tr> </table> </td> </tr> </table> </div> </form> </font> </body> </html> //////////////////////////////////////////////////////////////////////////// Jeg ved i øvrigt godt at HTML delen er spækket med fejl, men det er bare et gammel design på en tabel jeg fandt frem så jeg er lidt ligeglad med den del af det.. Vil bare gerne ha programmeringsdelen til at fungere :)
07. november 2008 - 08:52
#9
Hej igen, Planen og planen? "Jeg ville tilføje funktionaliteten i opret.nyhed.php, hvor du kan medsende et nyheds-ID, hvis der er tale om redigering (modsat oprettelse). Hvis nyheds-ID'et er medsendt, skal formularens værdier udfyldes med værdier fra DB og selve handlingen at gemme skal håndteres med et UPDATE isf. INSERT." Det var nu hele tiden planen for mit vedkommende. Hvis du har problemer med, at redigering giver en ny nyhed, skal du kigge på, om det er dit UPDATE-statement, der bliver kørt. I princippet skulle der, hvis du insisterer på, at der skal være én fil til oprettelse og én til redigering, ikke være nogen grund til et INSERT-statement på redigeringssiden. Den vil jo ALDRIG skulle oprette noget nyt. Held og lykke - og god weekend.
07. november 2008 - 13:44
#10
Oh.. okay :D så er jeg pludselig helt med igen.. Alt der manglede var blot en lille forklaring som du kom med der ;) Smid et svar og du skal få dine velfortjente points !
07. november 2008 - 14:11
#11
Kom det til at virke?
07. november 2008 - 14:16
#12
Jepsern, eller sådan det meste af det.. Har også fået smidt en html editor med ind på siden nu hvilket pynter nyhederne lidt op ;) Nu skal jeg bare ha fundet ud af hvordan jeg får den til enten at nulstille tekstboxene, pege hen på en anden side eller få den til at udskrive "nyheden er oprettet/redigeret".. Men det må jeg så sidde og fumle med i weekenden
Vi tilbyder markedets bedste kurser inden for webudvikling