Avatar billede b3k-0ne Nybegynder
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>';
}


?>
Avatar billede jaw Nybegynder
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>';
Avatar billede b3k-0ne Nybegynder
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>';
}


?>
Avatar billede jaw Nybegynder
28. september 2006 - 22:17 #3
Beholder den id'et i adresselinien?
Avatar billede jaw Nybegynder
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());
Avatar billede b3k-0ne Nybegynder
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?
Avatar billede jaw Nybegynder
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.
Avatar billede b3k-0ne Nybegynder
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
Avatar billede jaw Nybegynder
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.
Avatar billede b3k-0ne Nybegynder
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
Avatar billede jaw Nybegynder
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?
Avatar billede b3k-0ne Nybegynder
28. september 2006 - 22:53 #11
Jo adressen er: http://hg205.hotserv.dk/test/skrivnyhed.php
Koden er password og brugernavn admin
Avatar billede jaw Nybegynder
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>';
}


?>
Avatar billede b3k-0ne Nybegynder
28. september 2006 - 23:03 #13
Okay det ser godt ud nu, det hele virker... :D Tak skal du ha'...
Avatar billede jaw Nybegynder
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 :)
Avatar billede b3k-0ne Nybegynder
28. september 2006 - 23:14 #15
Hehe ja.. Men takker..!
Avatar billede jaw Nybegynder
28. september 2006 - 23:23 #16
Tak for points :)
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