Avatar billede andeershansen Nybegynder
28. januar 2009 - 18:08 Der er 12 kommentarer og
1 løsning

Redigere i databasen

Hejsa.
Jeg er for kort tid siden begyndt at rode med php.
Og jeg har nu besluttet mig at jeg vil prøve at lave et nyheds system (tilføj, læs, rediger, slet). Det er indtil videre lykkedes mig at få lavet tilføj, læs og slet funktion, men jeg har bare ikke den mindste anelse om hvordan jeg gør det muligt at redigere nyheden.
Er der nogen der gider hjælpe mig lidt igang så jeg har en ide om hvordan det skal gøres? :)

Nedenunder er mit script:

<form action="index.php?page=10" method="post">
<input name="overskrift" type="text" value="Indtast Overskrift"/><br /><br />
<input name="navn" type="text" value="Indtast Navn" /><br /><br />
<textarea name="nyhed" cols="60" rows="10">
</textarea><br /><br />
<input name="addnyhed" type="submit" value="Tilføj Artikel" />
</form>
<?php
$conn = mysqli_connect ("localhost","root","1234","blabla");
if (isset($_POST['addnyhed'])){
$overskrift = addslashes ($_POST['overskrift']);
$navn = addslashes ($_POST['navn']);
$artikel = addslashes ($_POST['nyhed']);
$dato = date('y-m-d');
mysqli_query($conn,"insert into nyheddb (overskrift, navn, nyhed, dato) values ('$overskrift','$navn','$nyhed','$dato')");
};
?>
<?php
$conn = mysqli_connect ("localhost","root","1234","blabla");
$query = mysqli_query($conn, "select * from nyheddb");
while($result = mysqli_fetch_array($query)){
echo "<table border='0' style='border: #000 solid 1px'; width='750px' cellspacing='0px' bgcolor='#ffffff'>";
echo "<tr><td style='border-right: #000 solid 1px';><strong>".$result['overskrift'] ."</strong></td><td> ".$result['dato']."</td></tr>";
echo "<tr><td style='border-right: #000 solid 1px; border-bottom: #000 none 1px;'>".$result['navn'] ."</td><td style='border-bottom: #000 solid 1px;'></td></tr>";
echo "<tr><td colspan='2'><br>".$result['nyhed']."</td></tr>";
echo "</table><br><br>";
};
?>
Avatar billede cronaldo Nybegynder
28. januar 2009 - 18:34 #1
Slet-delen:
-----------------
Nu skal du så tænke om du vil SLETTE posterne HELT.. eller om du bare vil have et felt der hedder "show" og så sætte den til "yes" hvis den skal vises eller "nej" hvis den skal skjules (hvis I fx er mange admins, kan det blive en fordel, HVIS der nu er et broddent kar, så kan du altid genskabe data!)


Rediger:
----------------------

<?php

IF(!empty($_GET['id'])){
// skal der være "i" i din "mysql_query?
    $getData = mysqli_query("SELECT * FROM tabel WHERE id = '".$_GET['id']."' LIMIT 1");
    while($row = mysqli_fetch_array($getData)){
   
        // check if there is any "overskrift"-text in the database
        IF(empty($row['overskrift'])){
            $overskrift = "Indtast Overskrift";
        } ELSE {
            $overskrift = $row['overskrift'];
        }
       
        // check if there is any "navn"-text in the database
        IF(empty($row['navn'])){
            $navn = "Indtast Navn";
        } ELSE {
            $navn = $row['navn'];
        }
       
        // check if there is any "nyhed"-text in the database
        IF(empty($row['nyhed'])){
            $nyhed = "Indtast Nyhed";
        } ELSE {
            $nyhed = $row['nyhed'],
        }
       
        IF($_POST['editNews'] == "yes"){
            $newoverskrift = $_POST['overskrift'];
            $newnavn = $_POST['overskrift'];
            $newnyhed = $_POST['nyhed']    ;
           
            mysql_query("UPDATE nyheder SET overskrift = '$newoverskrift', navn = '$newnavn', nyhed = '$newnyhed' WHERE id = '".$_GET['id']."' LIMIT 1")
            or die(mysql_error());
           
           
        }
       
       
        echo '
        <form action="index.php?page=10" method="post">
        <input type="hidden" name="editNews" value="yes">
        <input name="overskrift" type="text" value="'.$overskrift.'"/><br /><br />
        <input name="navn" type="text" value="'.$navn.'" /><br /><br />
        <textarea name="nyhed" cols="60" rows="10">'.$nyhed.'
        </textarea><br /><br />
        <input name="addnyhed" type="submit" value="Tilføj Artikel" />
        </form>
        ';
   
    } // end of while loop

    echo "<hr>";
   
} // end of $_GET['id']-loop


$conn = mysqli_connect ("localhost","root","1234","blabla");
$query = mysqli_query($conn, "select * from nyheddb");
while($result = mysqli_fetch_array($query)){
    echo "<table border='0' style='border: #000 solid 1px'; width='750px' cellspacing='0px' bgcolor='#ffffff'>";
    echo "<tr><td style='border-right: #000 solid 1px';><strong>".$result['overskrift'] ."</strong></td><td> ".$result['dato']."</td></tr>";
    echo "<tr><td style='border-right: #000 solid 1px; border-bottom: #000 none 1px;'>".$result['navn'] ."</td><td style='border-bottom: #000 solid 1px;'></td></tr>";
    echo "<tr><td colspan='2'><br>".$result['nyhed']."</td></tr>";
    echo "</table><br><br>";
}

mysql_free_result($query);
mysql_free_result($getData);
?>
Avatar billede cronaldo Nybegynder
28. januar 2009 - 18:42 #2
hov .. den var ikke helt rigtig .. 2 sek :)
hvad hedder den side, du opdaterer på - altså hvilken URL fanger du den på?
tænker for eksempel:
/editnews.php

eller:

/index.php?page=admin&show=news
Avatar billede cronaldo Nybegynder
28. januar 2009 - 19:20 #3
REgner med du selv kan indsætte link til rette-delen (bare skriv samme som til filen og så ?id=".$row['id'].") og til slet delen (den må du selv kunne :D)

--------------------------------------------

<?php

IF(!empty($_GET['id'])){
// skal der være "i" i din "mysql_query?
    $getData = mysqli_query("SELECT * FROM tabel WHERE id = '".$_GET['id']."' LIMIT 1");
    while($row = mysqli_fetch_array($getData)){
 
        // check if there is any "overskrift"-text in the database
        IF(empty($row['overskrift'])){
            $overskrift = "Indtast Overskrift";
        } ELSE {
            $overskrift = $row['overskrift'];
        }
     
        // check if there is any "navn"-text in the database
        IF(empty($row['navn'])){
            $navn = "Indtast Navn";
        } ELSE {
            $navn = $row['navn'];
        }
     
        // check if there is any "nyhed"-text in the database
        IF(empty($row['nyhed'])){
            $nyhed = "Indtast Nyhed";
        } ELSE {
            $nyhed = $row['nyhed'];
        }
     
        IF($_POST['editNews'] == "yes"){
            $newoverskrift = addslashes($_POST['overskrift']);
            $newnavn = addslashes($_POST['overskrift']);
            $newnyhed = addslashes($_POST['nyhed']);
         
            mysql_query("UPDATE nyheder SET overskrift = '$newoverskrift', navn = '$newnavn', nyhed = '$newnyhed' WHERE id = '".$_GET['id']."' LIMIT 1")
            or die(mysql_error());
         
         
        }
     
     
        echo '
        <form action="index.php?page=10" method="post">
        <input type="hidden" name="editNews" value="yes">
        <input name="overskrift" type="text" value="'.$overskrift.'"/><br /><br />
        <input name="navn" type="text" value="'.$navn.'" /><br /><br />
        <textarea name="nyhed" cols="60" rows="10">'.$nyhed.'
        </textarea><br /><br />
        <input name="addnyhed" type="submit" value="Tilføj Artikel" />
        </form>
        ';
 
    } // end of while loop

    echo "<hr>";
 
} // end of $_GET['id']-loop


echo "<table border='0' style='border: #000 solid 1px'; width='750px' cellspacing='0px' bgcolor='#ffffff'>";

    $conn = mysqli_connect ("localhost","root","1234","blabla");
    $query = mysqli_query($conn, "select * from nyheddb");
    while($result = mysqli_fetch_array($query)){
        echo "<tr>";
            echo "<td style='background-color: #808080; width: 50%; border-right: #000 solid 1px';><strong>".$result['overskrift'] ."</strong> (".$result['dato'].")</td>";
            echo "<td style='background-color: #808080; width: 20%; border-bottom: #000 none 1px;'>".$result['navn'] ."</td>";
        echo "</tr>";
        echo "<tr>";
            echo "<td colspan='2'>".$result['nyhed']."<br>";
            echo "<span style='float:right;'>";
            echo "<a href='{indsaet link}'>Ret</a>";
            echo "&nbsp;&nbsp;";
            echo "<a href='{indsaet link}'>Slet</a>";
            echo "</td>";
        echo "<tr>";
        echo "<tr>";
    }
   
echo "</table>";

mysql_free_result($query);
mysql_free_result($getData);
?>
Avatar billede fant0mas Nybegynder
28. januar 2009 - 20:48 #4
Bedst ville det vaere at saette et timestamp for hvornaar der er slettet, og saa kigge paa det istedet for en bit eller yes/no.
Avatar billede cronaldo Nybegynder
28. januar 2009 - 23:04 #5
ja det kunne man selvfølgelig også gøre :)
Avatar billede andeershansen Nybegynder
28. januar 2009 - 23:20 #6
får følgende error når jeg kører scriptet:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\Nyhed\index.php on line 72 

Nogen ide om hvad det kan være? :)
Avatar billede andeershansen Nybegynder
28. januar 2009 - 23:29 #7
Har selv fundet ud af det :) Mange tak :)
Avatar billede andeershansen Nybegynder
29. januar 2009 - 00:17 #8
Det kan godt være at det er mig der er komplet idiot men jeg kan ikke helt lige regne ud hvordan jeg skal få det til at virke?

Har fået fjernet et par errors den viste i starten, og så har jeg i "Ret" linket sat
echo "<a href='index.php?id=".$row['id']."'>Ret</a>";

Når jeg nu trykker på ret opdaterer den bare siden og det er det....
Hvad gør jeg galt?? :D
Avatar billede cronaldo Nybegynder
29. januar 2009 - 00:24 #9
skriv url'en du fanger filen med :)
Avatar billede andeershansen Nybegynder
29. januar 2009 - 00:33 #10
Nu er jeg helt væk :)
Jeg har lavet en helt ny php fil som jeg har scriptet i den hedder index.php.
Kan du definere hvad du mener lidt bedre? :)
Avatar billede cronaldo Nybegynder
29. januar 2009 - 00:35 #11
hmm, okay .. jamen så burde det virke ..
men prøv lige at tilføj mig på msn:

d e n l a u [at] e - m a i l . d k

uden mellemrum !
Avatar billede andeershansen Nybegynder
29. januar 2009 - 14:44 #12
Så virker scriptet næsten! :D
når jeg trykker ret kommer input frem og den henter også de rigtigt ting i databasen,
problemet er bare at når jeg retter i input og trykker "ret artikel" så opdaterer den det ikke i databasen...

Er der nogen der kan se problemet?


    IF(!empty($_GET['id'])){
    $conn = mysqli_connect ("localhost","root","1234","webdes");
    $getid = $_GET['id'];
    $getData = mysqli_query($conn, "SELECT * FROM artikeldb WHERE id = '$getid' ORDER BY id DESC LIMIT 1");
    while($row = mysqli_fetch_array($getData)){
 
     
        IF(empty($row['overskrift'])){
            $overskrift = "Indtast Overskrift";
        } ELSE {
            $overskrift = $row['overskrift'];
        }
     
     
        IF(empty($row['navn'])){
            $navn = "Indtast Navn";
        } ELSE {
            $navn = $row['navn'];
        }
     
       
        IF(empty($row['artikel'])){
            $artikel = "Indtast artikel";
        } ELSE {
            $artikel = $row['artikel'];
        }
     
        IF($_POST['editNews'] == "yes"){
            $newoverskrift = addslashes($_POST['overskrift']);
            $newnavn = addslashes($_POST['overskrift']);
            $newartikel = addslashes($_POST['artikel']);
              $conn = mysqli_connect ("localhost","root","1234","webdes");
           
            mysqli_query($conn, "UPDATE artikeldb SET overskrift = '$newoverskrift', navn = '$newnavn', artikel = 'newartikel' WHERE id = '".$_GET['id']."' LIMIT 1");
           
         
         
        }
     
   
        echo '
        <form action="index.php" method="post">
        <input type="hidden" name="editNews" value="yes">
        <input name="overskrift" type="text" value="'.$overskrift.'"/><br /><br />
        <input name="navn" type="text" value="'.$navn.'" /><br /><br />
        <textarea name="artikel" cols="60" rows="10">'.$artikel.'
        </textarea><br /><br />
        <input name="addartikel" type="submit" value="Ret Artikel" />
        </form>
        ';
 
    }

            echo "<hr>";
 
}
    $conn = mysqli_connect ("localhost","root","1234","webdes");
    $query = mysqli_query($conn,"select * from artikeldb");
    while($result = mysqli_fetch_array($query)){
            echo "<table border='0' style='border: #000 solid 1px'; width='750px' cellspacing='0px' bgcolor='#ffffff'>";
            echo "<tr>";
            echo "<td style='background-color: #808080; width: 50%; border-right: #000 solid 1px';><strong>".$result['overskrift'] ."</strong> (".$result['dato'].")</td>";
            echo "<td style='background-color: #808080; width: 20%; border-bottom: #000 none 1px;'>".$result['navn'] ."</td>";
            echo "</tr>";
            echo "<tr>";
            echo "<td colspan='2'>".$result['artikel']."<br>";
            echo "<span style='float:right;'>";
            echo '<a href="index.php?id='.$result['id'].'">Ret</a>';
            echo "&nbsp;&nbsp;";
            echo '<a href="{indsaet link}">Slet</a>';
            echo "</td>";
            echo "</tr><br>"; 
              }
   
echo "</table>";
?>
Avatar billede andeershansen Nybegynder
05. november 2009 - 17:52 #13
lukket
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