Avatar billede da9el Nybegynder
24. april 2004 - 13:04 Der er 18 kommentarer og
2 løsninger

Rediger funktion i arikel system

Hej jeg har et artikel system udfra webcafe.dk gæstebog men jeg vil gerne kunne redigere i artiklerne. Jeg kan vist godt lave linket selv men har lidt problemer med selv koden. Her er noget jeg har forsøgt og lave men det virker ikke.

<?php
require("./gbog-ting/mysql-funktioner.php");
require("./gbog-ting/design-funktioner.php");
require("./gbog-ting/indstillinger.php");

$id = addslashes($_GET['id']);
$sql = "select id, navn, epost, overskrift, date_format(tid, '%e/%c %Y') as tiden, besked from gaestebog where id = '$id' order by tid desc limit 1";

aabn_forbindelse_og_vaelgdb();
$resultat = sql_spoerg_og_faa_svar($sql);
luk_forbindelse();

extract($resultat[0]);

?>


<form action="gem.php" method="post">
<table border="0" cellpadding="5" cellspacing="0">
<tr><td align="right"><strong>Navn:</strong></td><td><input type="text" name="navn" value=<?php echo $navn; ?> size="30" maxsize="100"></td></tr>
<tr><td align="right"><strong>Overskrift:</strong></td><td><input type="text" name="overskrift" value=<?php echo $overskrift; ?> size="30" maxsize="100"></td></tr>
<tr><td align="right" valign="top"><strong>Artikel:</strong></td><td><textarea cols="30" rows="8" name="besked" value=<?php echo $besked; ?></textarea></td></tr>
<tr><td></td><td><input type="submit" value="Skriv!"></td></tr>
</table>
</form>


<?php

echo bund();

?>

Et af problemer er bla. at den kun kan vise et ord "Navn" og "Overskrift" og i "besked" viser den slet ikke nogle bogstaver. Nogle der kan hjælpe???
Avatar billede da9el Nybegynder
24. april 2004 - 18:15 #1
Hvis det kan få folk til at hjælpe så ligger jeg 50 point oveni!!
Avatar billede thedeathart Nybegynder
24. april 2004 - 18:17 #2
her er problemet

textarea cols="30" rows="8" name="besked" value=<?php echo $besked; ?></textarea></td></tr>

det skal være

textarea cols="30" rows="8" name="besked" <?php echo $besked; ?></textarea></td></tr>
Avatar billede thedeathart Nybegynder
24. april 2004 - 18:18 #3
ups..

altså:

textarea cols="30" rows="8" name="besked"><?php echo $besked; ?></textarea></td></tr>

man bruger nemlig ikke value= i et textarea
Avatar billede da9el Nybegynder
24. april 2004 - 18:29 #4
Det virker men den laver det samme med navn og overskrift?? Og hvordan laver jeg så den gemmer direkte oven på den gamle så den ikke laver en ny id hver gang???
Avatar billede da9el Nybegynder
24. april 2004 - 18:46 #5
???
Avatar billede da9el Nybegynder
24. april 2004 - 19:34 #6
Er du her??
Avatar billede thedeathart Nybegynder
24. april 2004 - 20:33 #7
- skulle lige spise..

hvis du vil have at den ikke laver nyt id, hver gang, så kan du bruge UPDATE..

har lavet noget lignende også ud fra webcafe's gæstebog..

Her er noget kode:

//rettenyhed.php (Formen til at rette)

<html>
<head>
<title>Ret en nyhed</title>
<link rel="stylesheet" type="text/css" href="../style.css">

</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">

<?php
include ('../config.php');

if( isset( $_GET['id'] ) )
  $id = $_GET['id'];
else
  $id = null;


if( $id !== null ) {
  // Hent først data ud
  $resultat = mysql_query("select * FROM nyhedsys WHERE id = '$id'");

  // Kør så igennem for hver række
  $raekke = mysql_fetch_array($resultat);
  if( $raekke == null )
    die("Fandt ikke rækken");

  extract($raekke);
?>


<form ACTION="retnyhed.php" method="get">
<input type="hidden" value="<? echo $id ?>" name="id">
<p><h2><b>.: Ret en nyhed :.</b></h2><b><br>
Overskrift:<br> <input type="text" value="<? echo"$headline" ?>" name="headline"><br>
<br>
Navn:<br> <input type="text" value="<? echo"$name" ?>" name="name"><br>
<br>
Email:<br>
<input type="text" value="<? echo"$email" ?>" name="email"><br>
<br>
Nyhed:<br> <textarea name="news" rows="10" cols="35"><? echo"$news" ?></textarea></b></p>
<br>
<input type=submit value=Updater name="submit" >
</form>
<?php
}
else {
  $sql = "SELECT id, headline FROM nyhedsys ORDER BY headline";
  $res = mysql_query($sql) or die(mysql_error());
  // Lav liste
  while($row = mysql_fetch_array($res)) {
    print '<a href="' . $_SERVER['PHP_SELF'] . '?id=' . $row[0] . '">'.
      stripslashes($row[1]). '</a><br />';
  }
}
?>
</body>

</html>


/ retnyhed.php (SQL-delen)

<?
include "../config.php";

$id = $_GET['id'];

mysql_query("UPDATE nyhedsys SET headline='$headline',name='$name',email='$email',news='$news',date=now() WHERE id='$id'") or die(mysql_error());

header("Location: ../nyheder.php");
?>


Prøv at kigge lidt på den :)
Avatar billede thedeathart Nybegynder
24. april 2004 - 20:35 #8
config.php indeholder en connect til databasen:

<?php
$conn = mysql_connect("localhost", "brugernavn", "password");
mysql_select_db("database");
?>
Avatar billede da9el Nybegynder
24. april 2004 - 20:36 #9
Fint fint kikker lige på den
Avatar billede da9el Nybegynder
24. april 2004 - 20:40 #10
Den siger: Fandt ikke rækken
Avatar billede thedeathart Nybegynder
24. april 2004 - 20:50 #11
nåå ja.. du skal jo huske at oprette en tabel i din database, og så skrive noget i den.
Avatar billede thedeathart Nybegynder
24. april 2004 - 20:52 #12
her er et mySQL dump

#
# Struktur dump for tabellen `nyhedsys`
#

CREATE TABLE nyhedsys (
  headline text NOT NULL,
  news text NOT NULL,
  name text NOT NULL,
  email text NOT NULL,
  date datetime NOT NULL default '0000-00-00 00:00:00',
  id int(3) NOT NULL default '0',
  UNIQUE KEY date (date),
  KEY date_2 (date)
) TYPE=MyISAM;

#
# Data dump for tabellen `nyhedsys`
#

INSERT INTO nyhedsys VALUES ('Overskrift', 'HEj HEj', 'Brugernavnet', 'email', '2004-04-23 20:31:41', 1082703885);
Avatar billede da9el Nybegynder
24. april 2004 - 20:54 #13
Jeg har allerede en tabel men jeg tror bare lige at jeg skal rette det til min database.
Avatar billede thedeathart Nybegynder
24. april 2004 - 20:55 #14
ok..ellers så spørg :)
Avatar billede da9el Nybegynder
24. april 2004 - 20:57 #15
Jeg er ikke spiecelt god til php. Så kan ikke lige finde ud af det:( vil du ikke sætte det ind i mit script??
Avatar billede da9el Nybegynder
24. april 2004 - 21:16 #16
Måske kan det med at den ikke gemmer oven på have noget med gem filen at gøre kan du se hvad jeg skal lave om???  <?php

require("./gbog-ting/mysql-funktioner.php");
require("./gbog-ting/design-funktioner.php");
require("./gbog-ting/indstillinger.php");

/*
* Foerst napper vi variablerne fra miljoet.
*/

if(is_array($HTTP_POST_VARS)) {
  $navn = $HTTP_POST_VARS['navn'];
  $epost = $HTTP_POST_VARS['epost'];
  $overskrift = $HTTP_POST_VARS['overskrift'];
  $besked = $HTTP_POST_VARS['besked'];
} elseif (is_array($_POST)) {
  $navn = $_POST['navn'];
  $epost = $_POST['epost'];
  $overskrift = $_POST['overskrift'];
  $besked = $_POST['epost'];
}


/*
* Her er en simpel funktion der spytter en fejlmelding ud.
* Den bruger vi senere, når vi checker, at folk har skrevet noget i formularen.
*/

function gbog_fejl($fejl) {

    $generel_tekst = "<p>V&aelig;r venlig at g&aring; tilbage og ret til.</p>";

    $fejlmelding = "<ul>";

    for($i=0;$i<count($fejl);$i++) {
        $fejlmelding .= "<li>". $fejl[$i];
    }

    $fejlmelding .= "</ul>";

    echo top("Fejl") . "G&aelig;stebogen brokkede sig lidt over dit input:" . $fejlmelding . $generel_tekst . bund();
    exit;

}

/*
* Denne funktion skriver i gæstebogen - altså i databasen.
* Bemærk, at vi ikke bruger PHP til at indsætte tiden, men
* bruger MySQLs indbyggede funktion now().
*/

function skriv_i_gbog($navn, $epost, $overskrift, $besked) {
   
    $ip = getenv('REMOTE_ADDR');

    $sql = "insert into gaestebog(navn,epost,overskrift,besked,ip,tid)
        values('$navn','$epost','$overskrift','$besked','$ip',now())";

    aabn_forbindelse_og_vaelgdb();
    sql_spoerg($sql);
    luk_forbindelse();

}

/*
* Vi laver lidt simpelt fejlcheckeri og ser, om der overhovedet
* er skrevet noget. Hvis ikke, bruger vi fejlfunktionen til at brokke os.
* Fejlfunktionen slutter med "exit", der sørger for, at PHP stopper.
*/

if(!ereg("[A-z0-9]+", $navn)) {

    $fejl[] = "Du har ikke skrevet dit navn";

}

if(!ereg("[A-z0-9]+", $besked)) {

    $fejl[] = "Du har ikke skrevet nogen besked";

}

if(!ereg("[A-z0-9]+", $besked)) {

    $fejl[] = "Du har ikke skrevet nogen Overskrift";

}

if(count($fejl) > 0) {
    gbog_fejl($fejl);
}

/*
* Hvis vi er nået hertil, så står der i det mindste et eller andet i felterne og vi
* knalder det i databasen med funktionen skriv_i_gbog().
* Vi escaper alle fyfy-tegn med addslashes(). Når vi senere præsenterer indholdet
* af gBogen bruger vi stripslashes() til at "afkode".
*
* Alt dette besvær er til for at folk ikke skal snige ondsindede SQL-kommandoer
* ind i deres indlæg. Nyere versioner af PHP gør alt dette automatisk,
* men vi kan godt li' at være på den sikre side.
*/

skriv_i_gbog(addslashes($navn),addslashes($epost),addslashes($overskrift),addslashes($besked));

/*
* Så er skidtet banket i databasen og vi sender folk videre til selve gBogen
* hvor de kan se deres eget indlæg.
*/

header("Location: gbog.php");

/*
* Skal der sendes epost til administratoren?
*
* Bemærk, at vi godt kan gøre dette selv om folk er sendt videre til gBogen.
* Der er ingen grund til at gæsterne skal vente på, at der bliver sendt
* post - derfor kommer det først allersidst.
*/

if($epost_p == "t") {

  $ip = getenv('REMOTE_ADDR');
  $epostens_indhold = "$navn har skrevet denne besked fra IP-adressen $REMOTE_ADDR:\n-----------------------------------------------------\n\n$besked";

  mail($admin_epost, "Der er skrevet i din gBog!", $epostens_indhold);

}

?>
Avatar billede thedeathart Nybegynder
24. april 2004 - 23:00 #17
Det ville være alt for besværligt at begynde at ændre på gem.php scriptet
det nemmeste er at lave et nyt.

Den jeg postede skal du bare ændre "nyhedsys" til din nyhedstabel
og skrive dine egne værdier i config.php..

Men lav evt. et dump at din sql-tabel
Avatar billede da9el Nybegynder
25. april 2004 - 21:49 #18
OK men hvad er et dump??
Avatar billede da9el Nybegynder
15. maj 2004 - 13:45 #19
Kan ikke få det til at virke:(
Avatar billede da9el Nybegynder
16. maj 2004 - 13:08 #20
Nå jeg prøver at lave spg igen og se om der er nogle der vil svare mig!!

Lukker
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