28. september 2006 - 22:02
Der er
15 kommentarer og 1 løsning
Brug af UPDATE funktion
Hej Eksperter...! Jeg har et script som jeg gerne vil fortælle, at når rediger funktionen bliver brugt, skal den ikke bruge INSERT, men UPDATE... Hvordan fortæller jeg scriptet det? <?php session_start(); require('connect.php'); if(isset($_SESSION['admin'])) { if(is_numeric($_GET['slet'])) { $query = mysql_query("DELETE FROM Nyheder WHERE id = ".$_GET['slet']." LIMIT 1"); header('Location: ' . $_SERVER['PHP_SELF']); exit(); } if(isset($_POST['opretnyhed'])) { $header = mysql_real_escape_string(strip_tags($_POST['header'])); $news = mysql_real_escape_string(strip_tags($_POST['news'])); $query = mysql_query("INSERT INTO Nyheder(id,header,news,writen) VALUES('','".$header."','".$news."',NOW())"); header('Location: ' . $_SERVER['PHP_SELF']); exit(); } //Hack til rediger... $overskrift = ""; $nyhed = ""; if(is_numeric($_GET['rediger'])) { $query = mysql_query("SELECT * FROM Nyheder WHERE id = ".$_GET['rediger']." LIMIT 1"); if(mysql_num_rows($query)==1) { $row = mysql_fetch_assoc($query); $overskrift = $row['header']; $nyhed = $row['news']; } } echo '<DIV align="right">'; echo '<a href="logud.php">Log ud</a>'; echo '</DIV>'; echo '<table>'; echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">'; echo '<tr><td>Overskrift:</td><td><input type="text" name="header" value="'.$overskrift.'"></td></tr>'; echo '<tr><td>Nyhed:</td><td><textarea name="news" cols="50" rows="10">'.$nyhed.'</textarea></td></tr>'; echo '<tr><td colspan="2"><input type="submit" value="Opret Nyhed" name="opretnyhed"></td></tr>'; echo '</form>'; echo '</table>'; echo '<hr>'; $query = mysql_query("SELECT *, DATE_FORMAT(writen, '%e. %b %Y') as tid FROM Nyheder ORDER BY writen DESC") or die (mysql_error()); if(mysql_num_rows($query)>0) { echo '<table>'; while($row = mysql_fetch_assoc($query)) { echo '<tr><td><b><font size="2">' . $row['header'] . '</font></b></td></tr>'; echo '<tr><td style="border-bottom: 2px solid black;"><font size="2">' . $row['tid'] . '</font></td></tr>'; echo '<tr><td><font size="2">' . nl2br(substr($row['news'],0,50)); echo '... [<a href="readmore.php?id=' .$row['id'] . '">læs mere</a>]</font></td></tr>'; if($_SESSION['admin']) { echo '<tr><td><a href="skrivnyhed.php?slet='.$row['id'].'">Slet artikel</a></td></tr>'; echo '<tr><td><a href="skrivnyhed.php?rediger='.$row['id'].'">Rediger artikel</a></td></tr>'; echo '<tr><td><BR></td></tr>'; echo '<tr><td><HR> </td></tr>'; echo '<tr><td><BR></td></tr>'; } } echo '</table>'; } else { echo 'Ingen nyheder endnu'; } } else { if(isset($_POST['login'])) { if($_POST['user'] == 'admin' && $_POST['pass'] == 'password') { $_SESSION['admin'] = true; header('Location: ' . $_SERVER['PHP_SELF']); exit(); }else { echo '<b>Du har angivet forkert brugernavn eller password!</b>'; print '<br>'; } } echo '<td><center><b><h2>Nyheds administration</h2></b></center></td>'; echo '<table>'; echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">'; echo '<tr><td>Brugernavn:</td><td><input type="text" name="user"></td></tr>'; echo '<tr><td>Password:</td><td><input type="password" name="pass"></td></tr>'; echo '<tr><td colspan="2"><input type="submit" value="Log Ind" name="login"></td></tr>'; echo '</form>'; echo '</table>'; } ?>
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
28. september 2006 - 22:07
#1
Det kan du jo ikke sådan lige, for lige pt. er der INGEN forskel på opret nyhed og rediger nyhed. Men du kan efter din indsæt-nyhed-del indsætte: if(isset($_POST['redigernyhed'])) { $header = mysql_real_escape_string(strip_tags($_POST['header'])); $news = mysql_real_escape_string(strip_tags($_POST['news'])); $query = mysql_query("UPDATE Nyheder set `header` = '$header', `news` = '$news' WHERE id = ".$_GET['nyhed']) or die(mysql_error()); header('Location: ' . $_SERVER['PHP_SELF']); exit(); } og ændre den her: echo '<tr><td colspan="2"><input type="submit" value="Opret Nyhed" name="opretnyhed"></td></tr>'; til: echo '<tr><td colspan="2"><input type="submit" value="Rediger Nyhed" name="redigernyhed"></td></tr>';
28. september 2006 - 22:14
#2
Syntes ikke helt det virker.. nu ser min kode sådan her ud: <?php session_start(); require('connect.php'); if(isset($_SESSION['admin'])) { if(is_numeric($_GET['slet'])) { $query = mysql_query("DELETE FROM Nyheder WHERE id = ".$_GET['slet']." LIMIT 1"); header('Location: ' . $_SERVER['PHP_SELF']); exit(); } if(isset($_POST['opretnyhed'])) { $header = mysql_real_escape_string(strip_tags($_POST['header'])); $news = mysql_real_escape_string(strip_tags($_POST['news'])); $query = mysql_query("INSERT INTO Nyheder(id,header,news,writen) VALUES('','".$header."','".$news."',NOW())"); header('Location: ' . $_SERVER['PHP_SELF']); exit(); } if(isset($_POST['redigernyhed'])) { $header = mysql_real_escape_string(strip_tags($_POST['header'])); $news = mysql_real_escape_string(strip_tags($_POST['news'])); $query = mysql_query("UPDATE Nyheder set `header` = '$header', `news` = '$news' WHERE id = ".$_GET['nyhed']) or die(mysql_error()); header('Location: ' . $_SERVER['PHP_SELF']); exit(); } //Hack til rediger... $overskrift = ""; $nyhed = ""; if(is_numeric($_GET['rediger'])) { $query = mysql_query("SELECT * FROM Nyheder WHERE id = ".$_GET['rediger']." LIMIT 1"); if(mysql_num_rows($query)==1) { $row = mysql_fetch_assoc($query); $overskrift = $row['header']; $nyhed = $row['news']; } } echo '<DIV align="right">'; echo '<a href="logud.php">Log ud</a>'; echo '</DIV>'; echo '<table>'; echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">'; echo '<tr><td>Overskrift:</td><td><input type="text" name="header" value="'.$overskrift.'"></td></tr>'; echo '<tr><td>Nyhed:</td><td><textarea name="news" cols="50" rows="10">'.$nyhed.'</textarea></td></tr>'; echo '<tr><td colspan="2"><input type="submit" value="Rediger Nyhed" name="redigernyhed"></td></tr>'; echo '</form>'; echo '</table>'; echo '<hr>'; $query = mysql_query("SELECT *, DATE_FORMAT(writen, '%e. %b %Y') as tid FROM Nyheder ORDER BY writen DESC") or die (mysql_error()); if(mysql_num_rows($query)>0) { echo '<table>'; while($row = mysql_fetch_assoc($query)) { echo '<tr><td><b><font size="2">' . $row['header'] . '</font></b></td></tr>'; echo '<tr><td style="border-bottom: 2px solid black;"><font size="2">' . $row['tid'] . '</font></td></tr>'; echo '<tr><td><font size="2">' . nl2br(substr($row['news'],0,50)); echo '... [<a href="readmore.php?id=' .$row['id'] . '">læs mere</a>]</font></td></tr>'; if($_SESSION['admin']) { echo '<tr><td><a href="skrivnyhed.php?slet='.$row['id'].'">Slet artikel</a></td></tr>'; echo '<tr><td><a href="skrivnyhed.php?rediger='.$row['id'].'">Rediger artikel</a></td></tr>'; echo '<tr><td><BR></td></tr>'; echo '<tr><td><HR> </td></tr>'; echo '<tr><td><BR></td></tr>'; } } echo '</table>'; } else { echo 'Ingen nyheder endnu'; } } else { if(isset($_POST['login'])) { if($_POST['user'] == 'admin' && $_POST['pass'] == 'password') { $_SESSION['admin'] = true; header('Location: ' . $_SERVER['PHP_SELF']); exit(); }else { echo '<b>Du har angivet forkert brugernavn eller password!</b>'; print '<br>'; } } echo '<td><center><b><h2>Nyheds administration</h2></b></center></td>'; echo '<table>'; echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">'; echo '<tr><td>Brugernavn:</td><td><input type="text" name="user"></td></tr>'; echo '<tr><td>Password:</td><td><input type="password" name="pass"></td></tr>'; echo '<tr><td colspan="2"><input type="submit" value="Log Ind" name="login"></td></tr>'; echo '</form>'; echo '</table>'; } ?>
28. september 2006 - 22:17
#3
Beholder den id'et i adresselinien?
28. september 2006 - 22:20
#4
Ellers så ret til: echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post"><input type="hidden" name="id" value="'.$_GET['nyhed'].'">'; og til: $query = mysql_query("UPDATE Nyheder set `header` = '$header', `news` = '$news' WHERE id = ".$_POST['id']) or die(mysql_error());
28. september 2006 - 22:30
#5
syntes stadig mare den laver en ny nyhed, og ikke retter den gamle... Vil du ikke prøve at skrive hele scriptet som du mener det skal se ud?
28. september 2006 - 22:37
#6
Sådan her tror jeg: <?php session_start(); require('connect.php'); if(isset($_SESSION['admin'])) { if(is_numeric($_GET['slet'])) { $query = mysql_query("DELETE FROM Nyheder WHERE id = ".$_GET['slet']." LIMIT 1"); header('Location: ' . $_SERVER['PHP_SELF']); exit(); } if(isset($_POST['opretnyhed'])) { $header = mysql_real_escape_string(strip_tags($_POST['header'])); $news = mysql_real_escape_string(strip_tags($_POST['news'])); $query = mysql_query("INSERT INTO Nyheder(id,header,news,writen) VALUES('','".$header."','".$news."',NOW())"); header('Location: ' . $_SERVER['PHP_SELF']); exit(); } if(isset($_POST['redigernyhed'])) { echo "test"; $header = mysql_real_escape_string(strip_tags($_POST['header'])); $news = mysql_real_escape_string(strip_tags($_POST['news'])); $query = mysql_query("UPDATE Nyheder set `header` = '$header', `news` = '$news' WHERE id = ".$_POST['id']) or die(mysql_error()); header('Location: ' . $_SERVER['PHP_SELF']); exit(); } //Hack til rediger... $overskrift = ""; $nyhed = ""; if(is_numeric($_GET['rediger'])) { $query = mysql_query("SELECT * FROM Nyheder WHERE id = ".$_GET['rediger']." LIMIT 1"); if(mysql_num_rows($query)==1) { $row = mysql_fetch_assoc($query); $overskrift = $row['header']; $nyhed = $row['news']; } } echo '<DIV align="right">'; echo '<a href="logud.php">Log ud</a>'; echo '</DIV>'; echo '<table>'; echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post"><input type="hidden" name="id" value="'.$_GET['rediger'].'">'; echo '<tr><td>Overskrift:</td><td><input type="text" name="header" value="'.$overskrift.'"></td></tr>'; echo '<tr><td>Nyhed:</td><td><textarea name="news" cols="50" rows="10">'.$nyhed.'</textarea></td></tr>'; echo '<tr><td colspan="2"><input type="submit" value="Rediger Nyhed" name="redigernyhed"></td></tr>'; echo '</form>'; echo '</table>'; echo '<hr>'; $query = mysql_query("SELECT *, DATE_FORMAT(writen, '%e. %b %Y') as tid FROM Nyheder ORDER BY writen DESC") or die (mysql_error()); if(mysql_num_rows($query)>0) { echo '<table>'; while($row = mysql_fetch_assoc($query)) { echo '<tr><td><b><font size="2">' . $row['header'] . '</font></b></td></tr>'; echo '<tr><td style="border-bottom: 2px solid black;"><font size="2">' . $row['tid'] . '</font></td></tr>'; echo '<tr><td><font size="2">' . nl2br(substr($row['news'],0,50)); echo '... [<a href="readmore.php?id=' .$row['id'] . '">læs mere</a>]</font></td></tr>'; if($_SESSION['admin']) { echo '<tr><td><a href="skrivnyhed.php?slet='.$row['id'].'">Slet artikel</a></td></tr>'; echo '<tr><td><a href="skrivnyhed.php?rediger='.$row['id'].'">Rediger artikel</a></td></tr>'; echo '<tr><td><BR></td></tr>'; echo '<tr><td><HR> </td></tr>'; echo '<tr><td><BR></td></tr>'; } } echo '</table>'; } else { echo 'Ingen nyheder endnu'; } } else { if(isset($_POST['login'])) { if($_POST['user'] == 'admin' && $_POST['pass'] == 'password') { $_SESSION['admin'] = true; header('Location: ' . $_SERVER['PHP_SELF']); exit(); }else { echo '<b>Du har angivet forkert brugernavn eller password!</b>'; print '<br>'; } } echo '<td><center><b><h2>Nyheds administration</h2></b></center></td>'; echo '<table>'; echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">'; echo '<tr><td>Brugernavn:</td><td><input type="text" name="user"></td></tr>'; echo '<tr><td>Password:</td><td><input type="password" name="pass"></td></tr>'; echo '<tr><td colspan="2"><input type="submit" value="Log Ind" name="login"></td></tr>'; echo '</form>'; echo '</table>'; } ?> Har indsat en echo "test";, så sig lige om du får udskrevet "test" på skærmen og evt. fejl.
28. september 2006 - 22:42
#7
Den skriver: test Warning: Cannot modify header information - headers already sent by (output started at /var/www/hotserv.dk/users/hg205/test/skrivnyhed.php:24) in /var/www/hotserv.dk/users/hg205/test/skrivnyhed.php on line 28
28. september 2006 - 22:43
#8
Jeps, det er så sådan set også meningen lige nu. Tjek så, om den har opdateret din nyhed.
28. september 2006 - 22:48
#9
Ja den retter nyhederne.. :D Men kan ikke lave en ny, så skriver den: testYou 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
28. september 2006 - 22:50
#10
Kan du ikke smide et link, så jeg kan se siden? Det er jo nok fordi, at du ingen adskillelse har imellem dem, at det hele kommer i én lang køre?
28. september 2006 - 22:58
#12
Ah, nu forstår jeg. <?php session_start(); require('connect.php'); if(isset($_SESSION['admin'])) { if(is_numeric($_GET['slet'])) { $query = mysql_query("DELETE FROM Nyheder WHERE id = ".$_GET['slet']." LIMIT 1"); header('Location: ' . $_SERVER['PHP_SELF']); exit(); } if(isset($_POST['opretnyhed'])) { $header = mysql_real_escape_string(strip_tags($_POST['header'])); $news = mysql_real_escape_string(strip_tags($_POST['news'])); $query = mysql_query("INSERT INTO Nyheder(id,header,news,writen) VALUES('','".$header."','".$news."',NOW())"); header('Location: ' . $_SERVER['PHP_SELF']); exit(); } if(isset($_POST['redigernyhed'])) { $header = mysql_real_escape_string(strip_tags($_POST['header'])); $news = mysql_real_escape_string(strip_tags($_POST['news'])); $query = mysql_query("UPDATE Nyheder set `header` = '$header', `news` = '$news' WHERE id = ".$_POST['id']) or die(mysql_error()); header('Location: ' . $_SERVER['PHP_SELF']); exit(); } //Hack til rediger... $overskrift = ""; $nyhed = ""; if(is_numeric($_GET['rediger'])) { $query = mysql_query("SELECT * FROM Nyheder WHERE id = ".$_GET['rediger']." LIMIT 1"); if(mysql_num_rows($query)==1) { $row = mysql_fetch_assoc($query); $overskrift = $row['header']; $nyhed = $row['news']; $value = "Rediger nyhed"; $name = "redigernyhed"; } } else { $value = "Opret nyhed"; $name = "opretnyhed"; } echo '<DIV align="right">'; echo '<a href="logud.php">Log ud</a>'; echo '</DIV>'; echo '<table>'; echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post"><input type="hidden" name="id" value="'.$_GET['rediger'].'">'; echo '<tr><td>Overskrift:</td><td><input type="text" name="header" value="'.$overskrift.'"></td></tr>'; echo '<tr><td>Nyhed:</td><td><textarea name="news" cols="50" rows="10">'.$nyhed.'</textarea></td></tr>'; echo '<tr><td colspan="2"><input type="submit" value="'.$value.'" name="'.$name.'"></td></tr>'; echo '</form>'; echo '</table>'; echo '<hr>'; $query = mysql_query("SELECT *, DATE_FORMAT(writen, '%e. %b %Y') as tid FROM Nyheder ORDER BY writen DESC") or die (mysql_error()); if(mysql_num_rows($query)>0) { echo '<table>'; while($row = mysql_fetch_assoc($query)) { echo '<tr><td><b><font size="2">' . $row['header'] . '</font></b></td></tr>'; echo '<tr><td style="border-bottom: 2px solid black;"><font size="2">' . $row['tid'] . '</font></td></tr>'; echo '<tr><td><font size="2">' . nl2br(substr($row['news'],0,50)); echo '... [<a href="readmore.php?id=' .$row['id'] . '">læs mere</a>]</font></td></tr>'; if($_SESSION['admin']) { echo '<tr><td><a href="skrivnyhed.php?slet='.$row['id'].'">Slet artikel</a></td></tr>'; echo '<tr><td><a href="skrivnyhed.php?rediger='.$row['id'].'">Rediger artikel</a></td></tr>'; echo '<tr><td><BR></td></tr>'; echo '<tr><td><HR> </td></tr>'; echo '<tr><td><BR></td></tr>'; } } echo '</table>'; } else { echo 'Ingen nyheder endnu'; } } else { if(isset($_POST['login'])) { if($_POST['user'] == 'admin' && $_POST['pass'] == 'password') { $_SESSION['admin'] = true; header('Location: ' . $_SERVER['PHP_SELF']); exit(); }else { echo '<b>Du har angivet forkert brugernavn eller password!</b>'; print '<br>'; } } echo '<td><center><b><h2>Nyheds administration</h2></b></center></td>'; echo '<table>'; echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">'; echo '<tr><td>Brugernavn:</td><td><input type="text" name="user"></td></tr>'; echo '<tr><td>Password:</td><td><input type="password" name="pass"></td></tr>'; echo '<tr><td colspan="2"><input type="submit" value="Log Ind" name="login"></td></tr>'; echo '</form>'; echo '</table>'; } ?>
28. september 2006 - 23:03
#13
Okay det ser godt ud nu, det hele virker... :D Tak skal du ha'...
28. september 2006 - 23:11
#14
Super duper - selv tak :) Du kan så, når du engang bliver haj til det, lave det smartere. Men det skal komme :)
28. september 2006 - 23:14
#15
Hehe ja.. Men takker..!
28. september 2006 - 23:23
#16
Tak for points :)
Vi tilbyder markedets bedste kurser inden for webudvikling