Avatar billede tomb3 Nybegynder
14. januar 2006 - 17:21 Der er 134 kommentarer og
1 løsning

Skift fra Tiny Mce til FCKeditor - hjælp

Hej,

Har fået lavet et mini CMS, hvor det er muligt at rette sider i Tiny Mce, hvorefter den gemmer i MySQL. Tiny Mce opfylder dog ikke mine krav og vil derfor gerne have integreret FCKeditor i stedet, men er i tvivl om hvordan jeg skal gøre.

forside.php
-----------------------------------------------------------------
<html>
<head>
<script language="javascript" type="text/javascript" src="/admin/javascripts/tiny_mce.js"></script>
<link href="styles.css" type="text/css" rel="stylesheet" />
</head>
<body>
<a id="tilbage" href="/admin/">&lt;&lt; TILBAGE</a>
<div id="box">
<?php

include "db.php";

$content = $_POST[content];

$forbindelse = mysql_query("SELECT * FROM min_database WHERE id LIKE 'forside' LIMIT 0 , 30");
$row = mysql_fetch_array($forbindelse);
 
if (strlen($content) == 0) {
  echo "<form name=\"opret\" method=\"post\" action=\"/admin/forside.php\">\n<textarea style=\"width:600px;height:450px\" name=\"content\">$row[content]</textarea>\n<br />\n<input type=\"submit\" name=\"submit\" value=\"OK\">\n</form>";
}

else {
  mysql_query("TRUNCATE TABLE `min_database`");
  mysql_query("INSERT INTO min_database (id,content) VALUES('forside','$content') ");
  echo "Forsiden er nu blevet opdateret.";
}

?>
</div>
</body>
</html>

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


Jeg har læst: http://wiki.fckeditor.net/Developer%27s_Guide/Integration/PHP

Men kan ikke helt hitte ud af det, så den gemmer det redigerede.

Nogen der vil hjælpe?
Avatar billede nielle Nybegynder
14. januar 2006 - 21:08 #1
Prøv at kigge på denne her:

http://www.eksperten.dk/spm/664498
Avatar billede tomb3 Nybegynder
14. januar 2006 - 23:33 #2
Tak - har læst og prøvet de ting du skriver, men synes jeg er blevet mere forvirret heh. Har du lyst til at guide mig?

Tror det er nemmest hvis jeg starter helt forfra, ellers forvirre jeg bare mig selv. :S

Har oprettet:

/admin
/FCKeditor
/side1.php
/side2.php
/side3.php

Har via PHPmyadmin oprettet databasen "side" med følgende tabeller
side1 (id, text)
side2 (id, text)
side3 (id, text)




min /admin/db.php ser således ud:
---------------------------------------------------------------------------------
<?php
mysql_connect("localhost","side","pass") or die("Kunne ikke forbinde til databasen.\n");
mysql_select_db("side");
?>
---------------------------------------------------------------------------------


Skal via /admin/index.php
Kunne redigere /side1.php /side2.php /side3.php med FCKeditor
Avatar billede tomb3 Nybegynder
14. januar 2006 - 23:37 #3
Indholdet af side1,2 & 3 ser således ud:


<?php
  include "/admin/db.php";

$forbindelse = mysql_query("SELECT * FROM side1 WHERE id LIKE 'forside' LIMIT 0 , 30");

if (mysql_num_rows($forbindelse) == 0)  die("Fejl... :(");

$row = mysql_fetch_array($forbindelse);

echo $row[content];

?>
Avatar billede tomb3 Nybegynder
15. januar 2006 - 01:08 #4
Har nu lavet rediger.php hvor jeg har samlet det hele i fra dit svar i den anden tråd.
Når jeg prøver at gå ind på rediger.php?id=side1
får jeg fejlen: Unknown column 'side1' in 'where clause'


rediger.php
------------------------------------------------------------------------------
<?
require_once("db.php");
include("FCKeditor/fckeditor.php");

if (isset($_GET["id"]))
{
    $id = $_GET["id"];

    $sql = "SELECT tekst FROM side1 WHERE id=" . $id;
    $query = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($query);

    $tekst = $row["tekst"];
?>
    <form action="rediger.php" method="post">
    <input type="hidden" name="id" value = "<?=$id?>">
<?
    $oFCKeditor = new FCKeditor('FCKeditor1');
    $oFCKeditor->BasePath = '/FCKeditor/';
    $oFCKeditor->Value = $tekst;
    $oFCKeditor->Create();
?>
    <br>
    <input type="submit" value="Submit">
    </form>
<?
}
?>


<?
// Store data in sql

require_once("db.php");

if (isset($_POST["FCKeditor1"]))
{
    $id = $_POST["id"];
    $tekst = $_POST["FCKeditor1"];

    $sql = "UPDATE side SET tekst='" . $tekst . "' WHERE id=" . $id;
    mysql_query($sql) or die(mysql_error());

    echo "Siden er opdateret.";
}
else
{
    echo "Der blev ikke opdateret noget.";
}
?>
Avatar billede nielle Nybegynder
15. januar 2006 - 09:30 #5
Hej, jeg skal gerne hjælpe dig med at gøre den færdig. Men det bliver desværre først i morgen aften. Imens kan du jo arbejde vidre med den. :^)
Avatar billede steen-h Mester
15. januar 2006 - 10:37 #6
Prøv at rette
$sql = "SELECT tekst FROM side1 WHERE id=" . $id;
til
$sql = "SELECT tekst FROM side1 WHERE id='$id'";
Avatar billede steen-h Mester
15. januar 2006 - 10:39 #7
Du kan også skrive
$sql = "SELECT tekst FROM side1 WHERE id='".$_GET['id']."'";

så kan du spare
$id = $_GET["id"];
Avatar billede steen-h Mester
15. januar 2006 - 10:47 #8
Du skal tænke på at beskytte din database når du indsætter noget, her er hvad jeg bruger.

function str2db($str)
{
    if (function_exists('mysql_real_escape_string'))
        return mysql_real_escape_string($str);
    else return mysql_escape_string($str);
}

  $sql = "UPDATE side SET tekst='".str2db($_POST['FCKeditor1'])."' WHERE id='".$_GET['id']."";

Når du så skal bruge det igen er du nød til at gøre følgende.

$oFCKeditor->Value = stripslashes(html_entity_decode($tekst));
Avatar billede steen-h Mester
15. januar 2006 - 10:50 #9
Og når du udskriver det på siden hvor det skal vises.

<?php echo  stripslashes(html_entity_decode($tekst)); ?>

Det var vidst det hele.
Avatar billede tomb3 Nybegynder
15. januar 2006 - 15:45 #10
Hej steen-h, det hjalp :)

Den gemmer dog ikke hvad jeg har skrevet, og uddskriver "Der blev ikke opdateret noget." fra starten.
Avatar billede steen-h Mester
15. januar 2006 - 15:57 #11
Prøv at bytte følgende
if (isset($_POST["FCKeditor1"]))

med
if(isset($_POST['id']))
Avatar billede tomb3 Nybegynder
15. januar 2006 - 16:06 #12
Skete der ikke noget ved :(
Btw, databasen er MyISAM - blev anbefalet denne da det ikke virkede med InnoDB. Ved ikke om det har noget at sige?
Avatar billede steen-h Mester
15. januar 2006 - 16:20 #13
Nu er jeg ikke en ørn til php men har selv fået det det til at virke.

Grunden til at der udkrives "Der blev ikke opdateret noget."  er at if sætningen ikke er opfyldt.

Ret
<input type="hidden" name="id" value = "<?=$id?>">
til
<input type="tekst" name="id" value = "<?=$id?>">
så du kan se hvad feltet indeholder hvis det er tomt er det derfor.

Det med databaserne ved jeg ikke noget om bruger selv mysql.
Avatar billede tomb3 Nybegynder
15. januar 2006 - 16:28 #14
Det gjorde blot tekstboksen synlig og udskrev $id.

Har du fået det til at virke med min kode?
Eller har du en anden kode jeg må se?
Avatar billede steen-h Mester
15. januar 2006 - 16:40 #15
Dit indput felt skal indeholde din id fra url.
Har du ikke din id skrevet i adressefeltet ?

Prøv at rette følgende
<input type="tekst" name="id" value = ="<?php echo $_GET['id']?>">
Avatar billede tomb3 Nybegynder
15. januar 2006 - 17:54 #16
jo,

rediger.php?id=side1
Avatar billede nielle Nybegynder
15. januar 2006 - 18:10 #17
Hvordan ser din kode ud lige nu?
Avatar billede tomb3 Nybegynder
15. januar 2006 - 18:13 #18
<?
require_once("db.php");
include("FCKeditor/fckeditor.php");

if (isset($_GET["id"]))
{
    $id = $_GET["id"];

    $sql = "SELECT tekst FROM side1 WHERE id='".$_GET['id']."'";
    $query = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($query);

    $tekst = $row["tekst"];
?>
    <form action="rediger.php" method="post">
    <input type="hidden" name="id" value = "<?=$id?>">
<?
    $oFCKeditor = new FCKeditor('FCKeditor1');
    $oFCKeditor->BasePath = '/admin/FCKeditor/';
    $oFCKeditor->Value = $tekst;
    $oFCKeditor->Create();
?>
    <br>
    <input type="submit" value="Submit">
    </form>
<?
}
?>


<?
// Store data in sql

require_once("db.php");

if(isset($_POST['id']))
{
    $id = $_POST["id"];
    $tekst = $_POST["FCKeditor1"];

    $sql = "SELECT tekst FROM side1 WHERE id='".$_GET['id']."'";
    mysql_query($sql) or die(mysql_error());

    echo "Siden er opdateret.";
}
else
{
    echo "Der blev ikke opdateret noget.";
}
?>
Avatar billede steen-h Mester
15. januar 2006 - 18:15 #19
Så skal der i tekstboxen stå side1, gør der ikke det ?

Når jeg fejlfinder udskriver jeg en tekst inden en if sætning og en efter, så jeg kan se hvorlang jeg kommer.

Du må have fundet ud af hvorfor
if(isset($_POST['id']))
ikke er sandt, det kan vel kun være hvis id ikke indeholder noget.

Jeg har et & foran id, ved ikke hvorfor, f.eks  rediger.php&id=side1
Avatar billede tomb3 Nybegynder
15. januar 2006 - 18:17 #20
Jo, den udskriver side1 i tekstboksen.
rediger.php&id=side1 virker ikke.
Avatar billede steen-h Mester
15. januar 2006 - 18:36 #21
Prøv at vise hele koden igen
Avatar billede nielle Nybegynder
15. januar 2006 - 18:39 #22
Det skal nu være:

rediger.php?id=side1

- i stedet for:

rediger.php&id=side1
Avatar billede steen-h Mester
15. januar 2006 - 18:43 #23
Du har ret nille, det var fordi jeg har flere variabler.
Avatar billede nielle Nybegynder
15. januar 2006 - 18:59 #24
Der er nogle småfejl hist og her i koden 15/01-2006 18:13:27. Prøv med dette her i stedet:

<?
require_once("db.php");
include("FCKeditor/fckeditor.php");

if (isset($_GET["id"]))
{
    $sql = "SELECT tekst FROM side1 WHERE id='" . $_GET['id'] . "'";
    $query = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($query);

    $tekst = $row["tekst"];
?>
<form action="rediger.php" method="post">
<input type="hidden" name="id" value = "<? echo $_GET["id"]; ?>">
<?
    $oFCKeditor = new FCKeditor('FCKeditor1');
    $oFCKeditor->BasePath = '/admin/FCKeditor/';
    $oFCKeditor->Value = $tekst;
    $oFCKeditor->Create();
?>
<br>
<input type="submit" value="Submit">
</form>
<?
}

// Store data in sql
require_once("db.php");

if (isset($_POST['id']))
{
    $tekst = $_POST["FCKeditor1"];

    $sql = "UPDATE side1 SET tekst='$tekst' WHERE id='" . $_POST["id"] . "'";
    mysql_query($sql) or die(mysql_error());

    echo "Siden er opdateret.";
}
else
{
    echo "Der blev ikke opdateret noget.";
}
?>
Avatar billede tomb3 Nybegynder
15. januar 2006 - 19:09 #25
nielle> Den gemmer stadig ikke :/
Avatar billede nielle Nybegynder
15. januar 2006 - 19:13 #26
Hvad får du udskrevet? "Siden er opdateret." eller "Der blev ikke opdateret noget."?
Avatar billede tomb3 Nybegynder
15. januar 2006 - 19:18 #27
"Siden er opdateret."
Avatar billede tomb3 Nybegynder
15. januar 2006 - 19:21 #28
Avatar billede nielle Nybegynder
15. januar 2006 - 19:22 #29
Prøv med noget debug-udskrivning:

$sql = "UPDATE side1 SET tekst='$tekst' WHERE id='" . $_POST["id"] . "'";
echo "DEBUG: [" . $sql . "]<br>";
mysql_query($sql) or die(mysql_error());
Avatar billede nielle Nybegynder
15. januar 2006 - 19:29 #30
Hvordan kan det egentlig være at både tabellen og id'et skal hedde "side1"? Det virker som om at der er nogle begreber som er blandet lidt sammen?
Avatar billede tomb3 Nybegynder
15. januar 2006 - 19:30 #31
Udskriver: "DEBUG: [UPDATE side1 SET tekst='' WHERE id='']"
Avatar billede tomb3 Nybegynder
15. januar 2006 - 19:32 #32
Hm ja, har vist blandet det hele lidt sammen.

Min database hedder "side". I databasen har jeg oprettet tabellerne "side1, side2 & side3".

---------------
$sql = "SELECT tekst FROM side1 WHERE id='" . $_GET['id'] . "'";

Er vel fra tabellen "side1"?
Avatar billede nielle Nybegynder
15. januar 2006 - 19:33 #33
Ja, men den skriver det sammen med "Der blev ikke opdateret noget." - den skulle da helst hav udskrevet sen sammen med "Siden er opdateret." efter som at det er i den del af if-sætningen at den er placeret...
Avatar billede nielle Nybegynder
15. januar 2006 - 19:34 #34
Hvorfor har du tre tabeller? Hvorfor ikke bare én tabel til alle siderne?
Avatar billede tomb3 Nybegynder
15. januar 2006 - 19:49 #35
Troede bare det var nemmere hvis jeg havde en tabel til hver side,
men kan da godt nøjes med en.

Ja, kan heller ikke forstå den udskriver det.
Burde jo ikke have noget at sige jeg har samlet siderne i én, modsat dit eksempel i den anden tråd, hvor du har en side til fckeditor og en anden side der gemmer.
Avatar billede nielle Nybegynder
15. januar 2006 - 19:52 #36
Nej! Langt det nemmeste er at have alle siderne i en og samme tabel. Skal vi ikke bare gå i gang med sådan en løsning i stedet? Det er også sådan at mit eksempel fra den anden tråd virker. ^)

Og, jo vi kan sagtens samle al koden på en side hvis du heller vil have det?
Avatar billede tomb3 Nybegynder
15. januar 2006 - 19:56 #37
Jo, lad os nøjes med én tabel. :)

Så opretter jeg tabellen "side" i min database.
Skal det være InnoDB?

Fortrækker at have det i én fil. :)
Avatar billede nielle Nybegynder
15. januar 2006 - 19:58 #38
Typen er vist ligegyldig. Det er op til dig.

Tabellen skal have et felt, id, som er af typen tal plus at det er auto_increment.

Desuden skal det have et felt til selve side-teksten.
Avatar billede tomb3 Nybegynder
15. januar 2006 - 20:07 #39
Sådan: http://sv1.randomcrap.net/uploads/files/0/sql.jpg

Hvad er "datatypen" for tal?
Avatar billede tomb3 Nybegynder
15. januar 2006 - 20:08 #40
Eller rettere, hvilken skal jeg bruge?
http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
Avatar billede nielle Nybegynder
15. januar 2006 - 20:15 #41
SMALLINT burde være stor nok ... men du skal bare bælge en som tillader at du kan vælge auto_increment.
Avatar billede tomb3 Nybegynder
15. januar 2006 - 20:21 #42
1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
----

Skal jeg sætte Standardværdi**?
Avatar billede nielle Nybegynder
15. januar 2006 - 20:24 #43
Feltet skal også sættes til at være primærnøgle for tabellen.
Avatar billede nielle Nybegynder
15. januar 2006 - 20:27 #44
Standardværdi er lige meget - feltet vil selv tælle op til noget nyt hele tiden (det er det auto_increment betyder).
Avatar billede tomb3 Nybegynder
15. januar 2006 - 20:30 #45
Så tabellen "side" oprettet med felterne

id [SMALLINT] (auto_increment) *Primær
tekst [TEXT]
Avatar billede nielle Nybegynder
15. januar 2006 - 20:34 #46
Cool. Så skal vi først have noget kode som viser en liste over de sider der er i tabellen. Vil du komme med et bud (jeg kan godt skrive den, men så lære du jo ikke selv noget i processen ;^)?
Avatar billede tomb3 Nybegynder
15. januar 2006 - 20:40 #47
Kan du vente 20-30min? Så er jeg her igen og prøver at komme med et forslag. :)
Avatar billede nielle Nybegynder
15. januar 2006 - 20:43 #48
Jep :^)
Avatar billede tomb3 Nybegynder
15. januar 2006 - 21:44 #49
Synes det blev lidt forvirrende at både database og tabel hed side, så har lavet en database der hedder "cms" med tabellen "side"

Mht at liste, har prøvet med:
---------------------------------------------------------------
<?
require_once("db.php");

$sql = "SELECT id FROM side ORDER BY id ASC";
$query = mysql_query($sql) or die(mysql_error());

while ($row = mysql_fetch_assoc($query))
{
    echo "<a href='list2.php?id=" . $row["id"] . "'>Rediger side " . $row["id"] . "</a><br>";
}
?>
---------------------------------------------------------------

Men udskriver ikke noget
Avatar billede nielle Nybegynder
15. januar 2006 - 21:49 #50
God ide at kalde databasen for cms.

Det ser umiddelbart rigtigt ud. :^)

Når den nu ikke udskriver noget, så er det vel fordi at tabellen er tomlige nu?
Avatar billede tomb3 Nybegynder
15. januar 2006 - 21:54 #51
Kan der være noget om ;)
Avatar billede nielle Nybegynder
15. januar 2006 - 21:56 #52
Ok. :^)

Men så må det første vel være at udvide koden sådan at det bliver muligt at oprette nye sider.

Der skal altså være et link, "Ny side" eller sådan noget, som når du klikker på det så får du en formular hvor at du kan indtaste en ny side. Eller vil du have det på en anden måde?
Avatar billede tomb3 Nybegynder
15. januar 2006 - 22:00 #53
Kunne nok være smart.. lad os prøve som du forslår :)
Avatar billede nielle Nybegynder
15. januar 2006 - 22:01 #54
Ok, så.

Et link på siden:

<a href="add_page.php">Ny side</a>

- og så går vi i gang med at skrive koden til add_page.php.
Avatar billede tomb3 Nybegynder
15. januar 2006 - 22:03 #55
Vi prøver =)
Avatar billede nielle Nybegynder
15. januar 2006 - 22:04 #56
Har du mod på at lave et første forsøg?
Avatar billede tomb3 Nybegynder
15. januar 2006 - 22:06 #57
Puh.. har vist brug for list hjælp
Avatar billede nielle Nybegynder
15. januar 2006 - 22:08 #58
Du har tidligere lavet kode med en form hvor at FCK-editoern var indlejret - det er bare sådan noget du skal gøre igen.
Avatar billede tomb3 Nybegynder
15. januar 2006 - 22:16 #59
rediger.php? Var til at rette.. Kan ikke helt gennemskue hvordan man laver så den opretter en side i sql.
Avatar billede nielle Nybegynder
15. januar 2006 - 22:17 #60
Vi er ikke helt nået til at skulle oprette siden via SQL endnu, så lad det vente lidt. Det er selve formularen vi skal have lavet først.
Avatar billede tomb3 Nybegynder
15. januar 2006 - 22:21 #61
Den her vi skal have fat i?


<?
require_once("db.php");
include("FCKeditor/fckeditor.php");

if (isset($_GET["id"]))
{
    $sql = "SELECT tekst FROM side WHERE id='" . $_GET['id'] . "'";
    $query = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($query);

    $tekst = $row["tekst"];
?>
<form action="add_page.php" method="post">
<input type="hidden" name="id" value = "<? echo $_GET["id"]; ?>">
<?
    $oFCKeditor = new FCKeditor('FCKeditor1');
    $oFCKeditor->BasePath = '/admin/FCKeditor/';
    $oFCKeditor->Value = $tekst;
    $oFCKeditor->Create();
?>
<br>
<input type="submit" value="Submit">
</form>
Avatar billede nielle Nybegynder
15. januar 2006 - 22:24 #62
Ja, men den skal lige passes til at den jo kommer via et link *uden* et id (altså noget med at droppe $_GET["id"]). Desuden skal den slet ikke hente noget ud af databasen - det er jo en helt ny side der skal oprettes - den eksistere ikke endnu.
Avatar billede tomb3 Nybegynder
15. januar 2006 - 22:29 #63
Er en skovl til det her heh
------

<?
require_once("db.php");
include("FCKeditor/fckeditor.php");

?>
<form action="add_page.php" method="post">
<input type="text" name="id" value = "skriv sidenavn">
<?
    $oFCKeditor = new FCKeditor('FCKeditor1');
    $oFCKeditor->BasePath = '/admin/FCKeditor/';
    $oFCKeditor->Value = $tekst;
    $oFCKeditor->Create();
?>
<br>
<input type="submit" value="Submit">
</form>
Avatar billede nielle Nybegynder
15. januar 2006 - 22:32 #64
Det ser nu ellers meget godt ud :^)

Efter nogle små rettelser:

<?
include("FCKeditor/fckeditor.php");
?>
<form action="tilbage_til_siden_med_listen.php" method="post">
<?
$oFCKeditor = new FCKeditor('FCKeditor1');
$oFCKeditor->BasePath = '/admin/FCKeditor/';
$oFCKeditor->Value = "Skriv her!!!";
$oFCKeditor->Create();
?>
<br>
<input type="submit" value="Submit">
</form>
Avatar billede tomb3 Nybegynder
15. januar 2006 - 22:38 #65
Heh tak for tålmodighede :)

Hvad så nu?
Avatar billede nielle Nybegynder
15. januar 2006 - 22:44 #66
Så skal vi have modificeret den eksisterende kode over på siden "tilbage_til_siden_med_listen.php" (hvad kalder du den?) til at tage imod det der submittes når man trykker på knappen.

Den SQL-sætning, som skal fyres af for at indsætte den nye side i tabellen, skal se sådan her ud:

"INSERT INTO side (tekst) VALUES ('Her skal teksten være')"

Læg mærke til at id-feltet slet ikke er med i denne - det bliver nemlig håndteret automatisk af databasen.
Avatar billede tomb3 Nybegynder
15. januar 2006 - 22:54 #67
Kalder den list.php


Noget ala
--------

<?
}
require_once("db.php");

if (isset($_POST['id']))
{
    $tekst = $_POST["FCKeditor1"];

    $sql = "INSERT INTO side (tekst) VALUES ('Her skal teksten være')";
    mysql_query($sql) or die(mysql_error());

    echo "Siden er oprettet";
}
else
{
    echo "Siden blev ikke oprettet";
}
?>
Avatar billede nielle Nybegynder
15. januar 2006 - 23:00 #68
Næsten...

<%
require_once("db.php");

if (isset($_POST['FCKeditor1']))
{
    $tekst = $_POST["FCKeditor1"];

    $sql = "INSERT INTO side (tekst) VALUES ('" . $tekst . "')";
    mysql_query($sql) or die(mysql_error());
}
?>
Avatar billede nielle Nybegynder
15. januar 2006 - 23:02 #69
Samlet noget i denne stil:

===== list.php =====

<%
require_once("db.php");

if (isset($_POST['FCKeditor1']))
{
    $tekst = $_POST["FCKeditor1"];

    $sql = "INSERT INTO side (tekst) VALUES ('" . $tekst . "')";
    mysql_query($sql) or die(mysql_error());
}

$sql = "SELECT id FROM side ORDER BY id ASC";
$query = mysql_query($sql) or die(mysql_error());

while ($row = mysql_fetch_assoc($query))
{
    echo "<a href='list2.php?id=" . $row["id"] . "'>Rediger side " . $row["id"] . "</a><br>";
}
?>

<a href="add_page.php">Ny side</a>
Avatar billede nielle Nybegynder
15. januar 2006 - 23:03 #70
Nu er jeg så på vej i seng ... skal vi fortsætte i morgen aften?
Avatar billede tomb3 Nybegynder
15. januar 2006 - 23:03 #71
Meget gerne hvis du gider :)
Avatar billede nielle Nybegynder
15. januar 2006 - 23:05 #72
Jep :^)
Avatar billede tomb3 Nybegynder
15. januar 2006 - 23:06 #73
Mange tak.. er sgu fedt du gider.

Natter :)
Avatar billede nielle Nybegynder
16. januar 2006 - 17:22 #74
Hej, skal vi fortsætte?

Jeg håber at du nu kan tilføje nye sider?
Avatar billede tomb3 Nybegynder
16. januar 2006 - 19:47 #75
Sorry var ikke hjemme.
Lad os fortsætte nu hvis du har tid.

Kan både tilføje og redigere sider nu :)
Dog printer den stadig "Der blev ikke opdateret noget." ved redigering.
Avatar billede nielle Nybegynder
16. januar 2006 - 19:55 #76
Hvordan ser din kode ud nu? Alt sammen.
Avatar billede tomb3 Nybegynder
16. januar 2006 - 20:08 #77
========== add_page.php ==========

<?
include("FCKeditor/fckeditor.php");
?>
<form action="list.php" method="post">
<?
$oFCKeditor = new FCKeditor('FCKeditor1');
$oFCKeditor->BasePath = '/admin/FCKeditor/';
$oFCKeditor->Value = "Skriv her!!!";
$oFCKeditor->Create();
?>
<br>
<input type="submit" value="Submit">
</form>
-------------------------------------------------------------------------------

========== db.php ==========

<?php
mysql_connect("localhost","user","pass") or die("Kunne ikke forbinde til databasen.\n");
mysql_select_db("database");
?>
-------------------------------------------------------------------------------

========== list.php ==========

<?
require_once("db.php");

if (isset($_POST['FCKeditor1']))
{
    $tekst = $_POST["FCKeditor1"];

    $sql = "INSERT INTO side (tekst) VALUES ('" . $tekst . "')";
    mysql_query($sql) or die(mysql_error());
}

$sql = "SELECT id FROM side ORDER BY id ASC";
$query = mysql_query($sql) or die(mysql_error());

while ($row = mysql_fetch_assoc($query))
{
    echo "<a href='rediger.php?id=" . $row["id"] . "'>Rediger side " . $row["id"] . "</a><br>";
}
?>

<a href="add_page.php">Ny side</a>
-------------------------------------------------------------------------------

========== rediger.php ==========

<?
require_once("db.php");
include("FCKeditor/fckeditor.php");

if (isset($_GET["id"]))
{
    $sql = "SELECT tekst FROM side WHERE id='" . $_GET['id'] . "'";
    $query = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($query);

    $tekst = $row["tekst"];
?>
<form action="rediger.php" method="post">
<input type="hidden" name="id" value = "<? echo $_GET["id"]; ?>">
<?
    $oFCKeditor = new FCKeditor('FCKeditor1');
    $oFCKeditor->BasePath = '/admin/FCKeditor/';
    $oFCKeditor->Value = $tekst;
    $oFCKeditor->Create();
?>
<br>
<input type="submit" value="Submit">
</form>

<?
}

// Store data in sql
require_once("db.php");

if (isset($_POST['id']))
{
    $tekst = $_POST["FCKeditor1"];

    $sql = "UPDATE side SET tekst='$tekst' WHERE id='" . $_POST["id"] . "'";
    mysql_query($sql) or die(mysql_error());

    echo "Siden er opdateret.";
}
else
{
    echo "Der blev ikke opdateret noget.";
}
?>
-------------------------------------------------------------------------------






Ved ikke helt hvordan vi kommer videre.

Har designet i én fil, og ville så include indholdet. Har lavet en menu med nogle punkter. Under et af punkterne skal det dog være muligt at oprette nye sider via cms'et.

Eks. hvis vi har et menupunkt der hedder "Netparty"
Her vil jeg via mit cms kunne oprette "netparty 1", "netparty 2", etc.
Når man klikker på linket skal man komme ind på en ny side omhandlende det valgte netparty - siden skal selvfølgelig includes.
Avatar billede tomb3 Nybegynder
16. januar 2006 - 20:44 #78
Det var måske lidt for stort spring?
Avatar billede nielle Nybegynder
16. januar 2006 - 20:50 #79
Nej, men jeg ville nu nok have lavet det på en lidt anden måde.

Nå, men prøv med:

========== rediger.php ==========

<?
require_once("db.php");
include("FCKeditor/fckeditor.php");

if (isset($_GET["id"]))
{
    $sql = "SELECT tekst FROM side WHERE id='" . $_GET['id'] . "'";
    $query = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($query);

    $tekst = $row["tekst"];
?>
<form action="rediger.php" method="post">
<input type="hidden" name="id" value = "<? echo $_GET["id"]; ?>">
<?
    $oFCKeditor = new FCKeditor('FCKeditor1');
    $oFCKeditor->BasePath = '/admin/FCKeditor/';
    $oFCKeditor->Value = $tekst;
    $oFCKeditor->Create();
?>
<br>
<input type="submit" value="Submit">
</form>

<?
}

// Store data in sql
if (isset($_POST['id']))
{
    $tekst = $_POST["FCKeditor1"];

    $sql = "UPDATE side SET tekst='$tekst' WHERE id='" . $_POST["id"] . "'";
    mysql_query($sql) or die(mysql_error());

    header("Location: list.php");
}
?>
Avatar billede tomb3 Nybegynder
16. januar 2006 - 20:54 #80
Jep, så dropper vi bare errormsg og redirecter til list.php igen :)
Avatar billede nielle Nybegynder
16. januar 2006 - 20:55 #81
Ja, men bliver rækken svarende til tabellen ikke også opdateret?
Avatar billede tomb3 Nybegynder
16. januar 2006 - 21:06 #82
Jo siderne bliver tilføjet på list.php

Rediger side 1
Rediger side 2

etc :)
Avatar billede nielle Nybegynder
16. januar 2006 - 21:09 #83
Godt ... så er den jo som den skal være.

Grunden til at du fik udskrevet "Der blev ikke opdateret noget." før er egentlig ganske simpel; Når du trykkede på et Rediger-link på list-php siden så bar $_GET["id"] sat til noget, men det var $_POST["id"] jo derimod ikke. Og derfor blev den anden halv del af den sidste if-sætning udført:

if (isset($_POST['id']))
{
    ...
}
else
{
    echo "Der blev ikke opdateret noget.";
}
Avatar billede tomb3 Nybegynder
16. januar 2006 - 21:12 #84
Ah ja ok.. så er jeg med :)
Avatar billede nielle Nybegynder
16. januar 2006 - 21:13 #85
Hvad mangler vi så? At kunne slette sider igen?
Avatar billede tomb3 Nybegynder
16. januar 2006 - 21:27 #86
Må være der vi er nået til :)

Kunne være smart hvis vi på list.php har 3 muligheder for hver side.

[rediger] [slet] [vis]
Avatar billede nielle Nybegynder
16. januar 2006 - 21:31 #87
Det kræver blot en lille modifikation fra:

while ($row = mysql_fetch_assoc($query))
{
    echo "<a href='rediger.php?id=" . $row["id"] . "'>Rediger side " . $row["id"] . "</a><br>";
}

- til noget i stil med:

while ($row = mysql_fetch_assoc($query))
{
    echo "Side " . $row["id"] . ":";
    echo "<a href='rediger.php?id=" . $row["id"] . "'>[Rediger]</a>";
    echo "<a href='delete_page.php?id=" . $row["id"] . "'>[Slet]</a>";
    echo "<a href='show_page.php?id=" . $row["id"] . "'>[Vis]</a>";
    echo "<br>";
}

- samt at vi så laver delete_page.php og show_page.php.
Avatar billede tomb3 Nybegynder
16. januar 2006 - 21:33 #88
Skal vi prøve med delete_page?
Avatar billede nielle Nybegynder
16. januar 2006 - 21:34 #89
Ja, er du frisk på selv at gøre et forsøg?
Avatar billede tomb3 Nybegynder
16. januar 2006 - 21:44 #90
Vil tro det er noget lignende:

<?
if (isset($_GET["id"]))

$sql = DELETE from side WHERE id='" . $_GET['id'] . "'";
$query = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($query);
?>
Avatar billede nielle Nybegynder
16. januar 2006 - 21:49 #91
Ja, næsten:

<?
if (isset($_GET["id"]))
{
    $sql = DELETE from side WHERE id=" . $_GET['id'];
    $query = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($query);

    header("Location: list.php");
}
?>

Læg forresten mærke at der ikke er nogen grund til at have '-tegn rundt om id-værdien i din SQL. Det behøver du i øvrigt heller ikke i rediger.php koden:

Dvs. at:

$sql = "SELECT tekst FROM side WHERE id='" . $_GET['id'] . "'";
$sql = "UPDATE side SET tekst='$tekst' WHERE id='" . $_POST["id"] . "'";

- kan rettes til:

$sql = "SELECT tekst FROM side WHERE id=" . $_GET['id'];
$sql = "UPDATE side SET tekst='$tekst' WHERE id=" . $_POST["id"];

- hvilket faktisk er den korrekte SQL-syntaks.
Avatar billede nielle Nybegynder
16. januar 2006 - 21:50 #92
Ups, sådan her:

<?
if (isset($_GET["id"]))
{
    $sql = DELETE from side WHERE id=" . $_GET['id'];
    $query = mysql_query($sql) or die(mysql_error());

    header("Location: list.php");
}
?>

Der er ingen grund til at have en mysql_fetch_assoc() i dette tilfælde.
Avatar billede tomb3 Nybegynder
16. januar 2006 - 21:59 #93
Ser også lidt mere overskueligt ud, uden ' '.
Når jeg prøver at slette får jeg fejlen:
"Parse error: syntax error, unexpected T_STRING in delete_page.php on line 4"

Har rette line 4 til:

    $sql = DELETE from side WHERE id=" . $_GET["id"]";

Men hjælper ikke.
Avatar billede nielle Nybegynder
16. januar 2006 - 22:01 #94
$sql = "DELETE from side WHERE id=" . $_GET["id"];
Avatar billede tomb3 Nybegynder
16. januar 2006 - 22:02 #95
Samme fejl :(

Men skal vel også afsluttes med "

sådan:
  $sql = DELETE from side WHERE id=" . $_GET['id']";

Men samme fejl...
Avatar billede nielle Nybegynder
16. januar 2006 - 22:03 #96
Nej, nej. "-tegnet manglede i starten af SQL-strengen:

$sql = "DELETE from side WHERE id=" . $_GET['id'];
-------^
Avatar billede tomb3 Nybegynder
16. januar 2006 - 22:03 #97
Selvfølgelig heh.. Så virker det :)
Avatar billede nielle Nybegynder
16. januar 2006 - 22:04 #98
show_page.php ?
Avatar billede tomb3 Nybegynder
16. januar 2006 - 22:08 #99
2min.. Prøver lige
Avatar billede tomb3 Nybegynder
16. januar 2006 - 22:15 #100
Vi skal vel have fat i SELECT...

    $sql = "SELECT from side WHERE id=" . $_GET["id"];
    $query = mysql_query($sql) or die(mysql_error());

Men giver fejl
Avatar billede nielle Nybegynder
16. januar 2006 - 22:16 #101
$sql = "SELECT tekst FROM side WHERE id=" . $_GET["id"];
Avatar billede tomb3 Nybegynder
16. januar 2006 - 22:23 #102
Ah ja.. Vi skal jo vise "tekst"

Den åbner dog bare en side uden indhold
Avatar billede nielle Nybegynder
16. januar 2006 - 22:24 #103
Hvordan ser din kode ud?
Avatar billede tomb3 Nybegynder
16. januar 2006 - 22:26 #104
<?
require_once("db.php");

if (isset($_GET["id"]))
{
    $sql = "SELECT tekst FROM side WHERE id=" . $_GET["id"];
    $query = mysql_query($sql) or die(mysql_error());
}
?>
Avatar billede nielle Nybegynder
16. januar 2006 - 22:28 #105
Du udskriver jo heller ikke det du henter ud fra databasen:

<?
require_once("db.php");

if (isset($_GET["id"]))
{
    $sql = "SELECT tekst FROM side WHERE id=" . $_GET["id"];
    $query = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($query);

    echo $row["tekst"];
}
?>
Avatar billede tomb3 Nybegynder
16. januar 2006 - 22:30 #106
Doh.. Ja det hjalp jo lidt på det
Avatar billede nielle Nybegynder
16. januar 2006 - 22:32 #107
Hvad så mere?
Avatar billede tomb3 Nybegynder
16. januar 2006 - 22:38 #108
Jo, hvordan includer vi nu siderne i designet?

Vil jeg på side 2 eks. lave et link til en ny side, hvordan skal det så gøres?
Avatar billede nielle Nybegynder
16. januar 2006 - 22:40 #109
Når du skal linke mellem de forskellige sider, så ser linket sådan her ud:

Set billederne fra <a href="show_page.pgp?id=42>ferien</a> her.
Avatar billede tomb3 Nybegynder
16. januar 2006 - 22:45 #110
Jep, men når show_page.php=id=42 nu skal indcludes...

Bruger index.php?page=forside
til at include forsiden nu.
Avatar billede tomb3 Nybegynder
16. januar 2006 - 22:45 #111
show_page.php?id=42*
Avatar billede nielle Nybegynder
16. januar 2006 - 22:50 #112
Tja:

include "show_page.php?id=42";

- virker vist ikke. Det gør:

include "http://www.ditdomæne.dk/show_page.php?id=42";

- imidlertid.
Avatar billede nielle Nybegynder
16. januar 2006 - 22:52 #113
Men i stedet for at include på den måde, kan du jo også bare lave en funktion til formålet:

function include_page($id)
{
    $sql = "SELECT tekst FROM side WHERE id=" . $_GET["id"];
    $query = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($query);

    echo $row["tekst"];
}

Denne kalder du så på de steder hvor at du vil have siderne includet:
Avatar billede nielle Nybegynder
16. januar 2006 - 23:02 #114
Vi fortsætter i morgen :^)

Ind til da har du hermed lidt lektier:
http://dk2.php.net/manual/da/function.mysql-real-escape-string.php
Avatar billede tomb3 Nybegynder
16. januar 2006 - 23:07 #115
Så burde jeg vel kalde den med:
http://www.pornst4r.dk/admin/index.php?id=2

Får bare ikke includet noget
Avatar billede tomb3 Nybegynder
16. januar 2006 - 23:08 #116
Vil læse på det :)

Sov godt
Avatar billede nielle Nybegynder
17. januar 2006 - 08:10 #117
Hvordan kalder du via din side:

http://www.pornst4r.dk/admin/index.php?id=2

Sådan:

include_page($_GET["id"]);

- eller hvad?
Avatar billede tomb3 Nybegynder
17. januar 2006 - 13:36 #118
Bare mig der sov... Nu virker det - tak :)
Avatar billede nielle Nybegynder
17. januar 2006 - 17:31 #119
Har du læst på linket?
Avatar billede tomb3 Nybegynder
17. januar 2006 - 18:46 #120
Har læst det en del gange ja..

Forstår det som vi skal sikre vores variabler mod "Indsættelses angreb".
Avatar billede nielle Nybegynder
17. januar 2006 - 18:58 #121
Ja ... og nej.

Hvis dine sider for at indtaste html-kode skal være offentligt tilgængeligt, så bør du bruge funktioner som mysql_real_escape_string() til at beskytte dig. Hvis det derimod kun er dig selv som skal have muligheden, så er det ikke så nødvendigt. Len så skal du til gengæld have t login-system op at stå!

På den anden side så kunne det være at du selv havde lyst til at oprette en tekst hvor tegnet ' indgår - uden mysql_real_escape_string() vil det give dig problemer.

Måden den bruges på er at omkranse alle dine input:

Altså fra sådan noget som:

$sql = "INSERT INTO side (tekst) VALUES ('" . $tekst . "')";

- til:

$sql = "INSERT INTO side (tekst) VALUES ('" . mysql_real_escape_string($tekst) . "')";

Og fra:

$sql = "SELECT tekst FROM side WHERE id='" . $_GET['id'] . "'";

- til:

$sql = "SELECT tekst FROM side WHERE id='" . mysql_real_escape_string($_GET['id']) . "'";
Avatar billede tomb3 Nybegynder
17. januar 2006 - 19:08 #122
Okay, så bare ' indgår i koden vil det kunne give problemer, hvis ikke vi beskytter vores input med real_escape_string.
Avatar billede tomb3 Nybegynder
17. januar 2006 - 19:21 #123
$sql = "UPDATE side SET tekst='$tekst' WHERE id=" . $_POST["id"];

- til:

$sql = "UPDATE side SET tekst='$tekst' WHERE id='" . mysql_escape_sring($_POST['id']) . "'";


Er korrekt ik'? Vi skal ikke have mysql_real... med før $tekst?
Avatar billede tomb3 Nybegynder
17. januar 2006 - 19:33 #124
Nå, det virker fint, har opdateteret alle inputs.

Vil gå i gang med noget password-protection.
Avatar billede nielle Nybegynder
17. januar 2006 - 19:42 #125
Ja, det er korrekt forstået:

$sql = "UPDATE side SET tekst='" . mysql_real_escape_string($tekst) . "' WHERE id='" . mysql_real_escape_string($_POST['id']) . "'";
Avatar billede tomb3 Nybegynder
17. januar 2006 - 20:03 #126
Jep :)

Hvis nu den automatisk skal include ?id=1 når man går ind på www.pornst4r.dk hvordan gør man så?
Avatar billede tomb3 Nybegynder
17. januar 2006 - 20:46 #127
if(!isset($_GET[id])){$_GET[id] = 1;}

Så... Må hellere få læst lidt bøger og øvet :)

Nielle> Mange tak for hjælpen. Smid et svar...
Må jeg sende dig en mail, eller kan du sende mig en? Evt. msn...
Avatar billede nielle Nybegynder
17. januar 2006 - 23:57 #128
Nej, di kan ikke sætte $_GET["id"] til noget på den måde. Så bør du hellere indføre en variabel, $id, som du så sætter på denne her måde:

$id = (isset($_GET["id"])) ? $_GET["id"] : 1;
Avatar billede nielle Nybegynder
17. januar 2006 - 23:58 #129
Jeg smider gerne et svar, men steen-h har da vist også fortjent nogle points for sin hjælp undervejs.

Jeg er nu ikke så vild med at offentliggøre min email adresse. :^|
Avatar billede steen-h Mester
18. januar 2006 - 06:53 #130
nielle, jeg syntes du har fortjent alle points.
Avatar billede tomb3 Nybegynder
18. januar 2006 - 19:39 #131
Ok, ville bare sige mange tak for hjælpen.
Var virkelig fedt du gad give dig tid og havde tålmodighed. :)

Også tak til steen-h for hjælp. :)
Avatar billede nielle Nybegynder
18. januar 2006 - 19:45 #132
.. og jeg takker for point :^)

Det er nu rart at hjælpe en som ikke er bleg for selv at kode. Alt for mange vil bare have løsningen mere eller mindre serveret. Men så lære de jo bare heller ikke noget i processen. :^|
Avatar billede tomb3 Nybegynder
27. januar 2006 - 20:40 #133
nielle> Gider du kigge her:
http://www.eksperten.dk/spm/683328 :)
Avatar billede nielle Nybegynder
27. januar 2006 - 21:35 #134
Jeg opdagede faktisk det der spørgsmål før at jeg så at du havde skreevet her ;^)
Avatar billede tomb3 Nybegynder
28. januar 2006 - 00:16 #135
Hehe :)

Var ikke klar over om du sad her.
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