Avatar billede bosse88 Nybegynder
11. november 2002 - 21:28 Der er 38 kommentarer

Opdater tekst i database *HASTER*

Jeg sætter nu maksimum antal points på spil til den der kan hjælpe mig til at få det til at virke, hvis 2 personer giver mig noget jeg kan bruge hver især får de 200 point hver....
------------------
Jeg har noget jeg gerne vil opdatere. Jeg har lavet links til artiklerne via en list fil (det kalder jeg den) og den smider mig til rediger.php med et id nr, som bruges til at vise den tekst man skal redigere i (dette virker) og som skal bruges til at updatere i den rigtige nyhed....

Kildekode af rediger.php
---------------------------------
<HTML>
<Head>
<Title>spido.dk -redigér artikel</Title>
<link rel="stylesheet" type="text/css" href="style.css">
</Head>
<BODY>
<?PHP
$ip = getenv('REMOTE_ADDR');
$db = mysql_connect("HOST", "BRUGERNAVN", "KODEORD");
mysql_select_db("DATABASE", $db);

$insert2 = mysql_query("UPDATE artikel_spido SET titel='$titel', type='$_POST[type]', beskrivelse='$beskrivelse', indhold='$indhold' WHERE id = $id");

if($titel && $beskrivelse && $indhold) {

$titel = htmlentities($titel);
$beskrivelse = htmlentities($beskrivelse);
$indhold = ereg_Replace("\r&lt;BR/&gt;", "<br>", $indhold);
$indhold = ereg_Replace("#smil", "<img border=0 src=pics/1.gif>", $indhold);
$indhold = ereg_Replace("#grin", "<img border=0 src=pics/2.gif>", $indhold);
$indhold = ereg_Replace("#blink", "<img border=0 src=pics/3.gif>", $indhold);
$indhold = ereg_Replace("#tunge", "<img border=0 src=pics/4.gif>", $indhold);
$indhold = ereg_Replace("#sej", "<img border=0 src=pics/5.gif>", $indhold);
$indhold = ereg_Replace("#ked", "<img border=0 src=pics/6.gif>", $indhold);
$indhold = ereg_Replace("#sur", "<img border=0 src=pics/7.gif>", $indhold);
}
$foresp = mysql_query("SELECT titel, beskrivelse, indhold FROM artikler_spido WHERE id='$id' ");
while($data = mysql_fetch_row($foresp)){
echo "<center>";
echo "<table border=\"0\" width=\"405\" height=\"1\" cellspacing=\"0\" cellpadding=\"0\">";
echo "<tr>";
echo "<td width=\"152\" height=\"1\"><font size=\"1\" face=\"Verdana\">Artiklens Titel:</font></td>";
echo "<FORM METHOD=\"POST\" ACTION=\"$PHP_SELF\"";
echo "<INPUT TYPE=\"hidden\" NAME=\"skriv\" VALUE=\"1\">";
echo "<td width=\"254\" height=\"1\"><font face=\"Verdana\" size=\"1\"><input TYPE=\"text\" style=\"border:1px dashed #000000; background-color:#EEEEEE\" NAME=\"$titel\" size=\"20\" VALUE=\"$data[0]\"></font></td>";
echo "</tr>";
echo "<tr>";
echo "<td width=\"152\" height=\"10\"><font size=\"1\" face=\"Verdana\">Beskrivelse:</font></td>";
echo "<td width=\"254\" height=\"10\"><font face=\"Verdana\" size=\"1\"><textarea style=\"border:1px dashed #000000; background-color:#EEEEEE\" NAME=\"$beskrivelse\" COLS=\"30\" ROWS=\"5\">$data[1]</textarea></font></td>";
echo "</tr>";
echo "<tr>";
echo "<td width=\"152\" height=\"93\"><input TYPE=\"Submit\" VALUE=\"Gem ændringer\"></td>";
echo "<td width=\"254\" height=\"93\">";
echo "<p><font size=\"1\" face=\"Verdana\"><textarea style=\"border:1px dashed #000000; background-color:#EEEEEE\" NAME=\"$indhold\" COLS=\"30\" ROWS=\"5\">$data[2]</textarea></font></p>";
}
?>

<p align="center">
<font size="1" face="verdana"><A ALIGN="center" HREF="list.php">Gå til artikel listen</A>
<BR/></font>
</p>
      </td>
    </tr>
  </table>
  <br>
  <div align="center">
  <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-width: 0" bordercolor="#111111" width="91" height="128" id="AutoNumber1">
    <tr>
      <td width="91" height="128" style="border-style: none; border-width: medium" valign="top">
      <font face="Verdana" size="1">#smil <img border="0" src="pics/1.gif" width="15" height="15"><br>#grin
      <img border="0" src="pics/2.gif" width="15" height="15"><br>#blink
      <img border="0" src="pics/3.gif" width="15" height="15"><br>#tunge
      <img border="0" src="pics/4.gif" width="15" height="15"><br>#sej
      <img border="0" src="pics/5.gif" width="15" height="15"><br>#ked
      <img border="0" src="pics/6.gif" width="15" height="15"><br>#sur
      </font><img border="0" src="pics/7.gif" width="15" height="15"></td>
    </tr>
  </table>
    </center></div>
  </BODY>
  </HTML>

Ok jeg vil gerne vide hvad jeg skal gøre for at dette bliver brugbart og jeg kan opdatere tekst. Hvordan linker jeg submit knappen med variablen $insert2 som holder sql strengen med opdaterings koden ?? Eller skal man gøre det på en anden måde?? Dette haster!!!!!

Eksempel på hvor langt jeg er kommet kan ses på:

http://www.spido.dk/artikler/list_admin.php

klik på rediger og det kommer frem i tekst boksene....
Avatar billede sukos Juniormester
11. november 2002 - 21:51 #1
jeg vil da anbefale du laver en fil som opdaterer databasen, og derefter sender brugeren tilbage, så undgår du den der "klik på opdater for at se siden" hvis brugeren opdaterer efter submit eller går til en anden side og siden kommer tilbage igen.

altså hent indholdet, lav form action til en anden fil.
Avatar billede tipsen Nybegynder
11. november 2002 - 22:03 #2
Jeg vil anbefale dig at bruge str_replace() med to arrays i stedet for adskillige kald til (den forholdsvis tunge) ereg_replace() !

PS: Det er mod reglerne at give mere end 200 point for et spørgsmål så det vil jeg foreslå du ikke prøver på ;-)
Avatar billede bosse88 Nybegynder
11. november 2002 - 22:05 #3
ehrm jeg er ikke så meget inde i det lige nu? lidt kode ??
Avatar billede bosse88 Nybegynder
11. november 2002 - 22:06 #4
ok, skal nok holde mig på 200 points så, meeen lidt hjælp vil jeg have :D
Avatar billede sukos Juniormester
11. november 2002 - 22:38 #5
æh, du har kun et row ad gangen? udvalgt efter id?
Avatar billede sukos Juniormester
11. november 2002 - 22:41 #6
Altså ikke flere tables og form actions?
Avatar billede bosse88 Nybegynder
11. november 2002 - 22:43 #7
ja jeg tror jeg ved hvad du snakker om :o)

Jeg vælger en bestemt nyhed at redigere i på list_admin. alle nyheder har deres eget id som har auto_increment (du ved at de får en højere værdi for hver indlæg. 1, 2 ,3 4 osv) Så jeg vælger via linket den nyhed som er valgt og sorteret efter variablen $id som jeg henter først og som er refereret til som data[0]
Avatar billede sukos Juniormester
11. november 2002 - 23:02 #8
hmm, først ville jeg gøre så'n: (tjek lige om det virker) :O)


<?php
//Vælger tabel m.m. inden output
$db = mysql_connect("HOST", "BRUGERNAVN", "KODEORD")or die (mysql_error());
mysql_select_db("DATABASE", $db)or die (mysql_error());

$foresp = mysql_query("SELECT titel, beskrivelse, indhold FROM artikler_spido WHERE id='$id' ")or die (mysql_error());
$vis = mysql_fetch_object($foresp);
?>
<HTML>
<Head>
<Title>spido.dk -redigér artikel</Title>
<link rel="stylesheet" type="text/css" href="style.css">
</Head>
<body>
<FORM METHOD="POST" ACTION="update_list.php">
<INPUT TYPE="hidden" NAME="skriv" VALUE="1">
<center>
<table border="0" width="405" height="1" cellspacing="0" cellpadding="0">
<tr>
    <td width="152" height="1"><font size="1" face="Verdana">Artiklens Titel:</font></td>
    <td width="254" height="1"><font face="Verdana" size="1"><input TYPE="text" style="border:1px dashed #000000; background-color:#EEEEEE" NAME="titel" size="20" VALUE="<?php echo $vis->titel; ?>"></font></td>
</tr>
<tr>
    <td width="152" height="10"><font size="1" face="Verdana">Beskrivelse:</font></td>
    <td width="254" height="10"><font face="Verdana" size="1"><textarea style="border:1px dashed #000000; background-color:#EEEEEE" NAME="beskrivelse" COLS="30" ROWS="5"><?php echo $vis->beskrivelse; ?></textarea></font></td>
</tr>
<tr>
    <td width="152" height="93">Indhold:</td>
    <td width="254" height="93"><p><font size="1" face="Verdana"><textarea style="border:1px dashed #000000; background-color:#EEEEEE" NAME="indhold" COLS="30" ROWS="5"><?php echo $vis->indhold; ?></textarea></font></p>
<center><input TYPE="Submit" VALUE="Gem ændringer">
<p>
<font size="1" face="verdana"><A ALIGN="center" HREF="list.php">Gå til artikel listen</A>
<BR/></font></p></td>
</tr>
</table>
<br>
<div align="center">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-width: 0" bordercolor="#111111" width="91" height="128" id="AutoNumber1">
<tr>
<td width="91" height="128" style="border-style: none; border-width: medium" valign="top">
<font face="Verdana" size="1">#smil <img border="0" src="pics/1.gif" width="15" height="15"><br>#grin
<img border="0" src="pics/2.gif" width="15" height="15"><br>#blink
<img border="0" src="pics/3.gif" width="15" height="15"><br>#tunge
<img border="0" src="pics/4.gif" width="15" height="15"><br>#sej
<img border="0" src="pics/5.gif" width="15" height="15"><br>#ked
<img border="0" src="pics/6.gif" width="15" height="15"><br>#sur
</font><img border="0" src="pics/7.gif" width="15" height="15"></td>
</tr>
</table>
</center></div>
</BODY>
</HTML>

php-kode inden output, ligemeget, men så'n kan jeg bedst li' det :O)
submit flyttet ned under sidste textarea.
name ændret så der ikke er en $ foran
Avatar billede sukos Juniormester
11. november 2002 - 23:06 #9
Og hvorfor ikke lave en class til textarea og input?
I stedet for:
style="border:1px dashed #000000; background-color:#EEEEEE"

så læg dette i dit stylesheet:

.style {border:1px dashed; border-color: #000000; color: #000000; background-color:#EEEEEE;}

og så skrive:
<textarea name="beskrivelse" class="style">

og så "roder" du vist osse lidt med borderne i den anden tabel! :O)
Avatar billede sukos Juniormester
11. november 2002 - 23:14 #10
forresten, der skal være et hidden felt:

<input type="hidden" name="<?php echo $_GET['id']; ?>" value="<?php echo $_GET['id']; ?>">

erstat det eksisterende hiddenfelt med ovenstående.
Går ud fra du får din $id ved hjælp af et link?
Avatar billede bosse88 Nybegynder
11. november 2002 - 23:15 #11
kigger lige på det hele nu ;) Mange tak alle sammen !
Avatar billede sukos Juniormester
11. november 2002 - 23:16 #12
æh, type? Hvor kommer det ind henne?
Avatar billede bosse88 Nybegynder
11. november 2002 - 23:17 #13
okay jeg for $id via et link, men hvor skal det der hidden noget være og hvilket $er fjernet fra name ???
Avatar billede bosse88 Nybegynder
11. november 2002 - 23:19 #14
ahh har fundet ud af hvad du mente med name.... men hvor skal det hidden halløj være ?? i alle tre??
Avatar billede sukos Juniormester
11. november 2002 - 23:21 #15
hidden lige efter form action="......
Der er et hidden i forvejen der hedder skriv. Slet det, og brug det jeg skrev med $_GET['id']

Alle $ i name for felterne er fjernet så name bliver "titel", "indhold" og "beskrivelse"
Avatar billede sukos Juniormester
11. november 2002 - 23:21 #16
der skal kun være et hiddenfelt
Avatar billede bosse88 Nybegynder
11. november 2002 - 23:24 #17
den refererer til en update_list.php fil. Skal til køjs nu.. Kan du ikke bare skrive nogle flere forslag ? Jeg kigger igen i morgen, håber du husker dette emne for du står da tæt på at få de 200 :D
Avatar billede bosse88 Nybegynder
11. november 2002 - 23:25 #18
har gjort det med hidden
Avatar billede sukos Juniormester
11. november 2002 - 23:26 #19
vent lige et minut!
Avatar billede bosse88 Nybegynder
11. november 2002 - 23:27 #20
ok
Avatar billede sukos Juniormester
11. november 2002 - 23:30 #21
update_list.php:

<?php

    if(isset($_POST['titel'], $_POST['beskrivelse'], $_POST['indhold'])) {

$db = mysql_connect("HOST", "BRUGERNAVN", "KODEORD")or die (mysql_error());
mysql_select_db("DATABASE", $db)or die (mysql_error());

$_POST['titel'] = htmlentities($_POST['titel']);
$_POST['beskrivelse'] = htmlentities($_POST['beskrivelse']);

$_POST['indhold'] = ereg_Replace("\r&lt;BR/&gt;", "<br>", $_POST['indhold']);
$_POST['indhold'] = ereg_Replace("#smil", "<img border=0 src=pics/1.gif>", $_POST['indhold']);
$_POST['indhold'] = ereg_Replace("#grin", "<img border=0 src=pics/2.gif>", $_POST['indhold']);
$_POST['indhold'] = ereg_Replace("#blink", "<img border=0 src=pics/3.gif>", $_POST['indhold']);
$_POST['indhold'] = ereg_Replace("#tunge", "<img border=0 src=pics/4.gif>", $_POST['indhold']);
$_POST['indhold'] = ereg_Replace("#sej", "<img border=0 src=pics/5.gif>", $_POST['indhold']);
$_POST['indhold'] = ereg_Replace("#ked", "<img border=0 src=pics/6.gif>", $_POST['indhold']);
$_POST['indhold'] = ereg_Replace("#sur", "<img border=0 src=pics/7.gif>", $_POST['indhold']);

$insert2 = mysql_query("UPDATE artikel_spido SET titel='$_POST[titel]', beskrivelse='$_POST[beskrivelse]', indhold='$_POST[indhold]' WHERE id = $_POST[id]");

    if (mysql_query($sql)) {
header("Location:filnavn.php");
exit;
    }else{
echo"Sorry, desværre ikke muligt at opdatere databasen";
    }
}
?>

Men der er så ikke gjort noget med ereg_.......

Er ikke lige helt med på hvor'n det skal gøres! :O)
Avatar billede bosse88 Nybegynder
11. november 2002 - 23:31 #22
ouch skal meget snart i seng...
Avatar billede bosse88 Nybegynder
11. november 2002 - 23:31 #23
phew
Avatar billede sukos Juniormester
11. november 2002 - 23:31 #24
Og denne:
$_POST['indhold'] = ereg_Replace("\r&lt;BR/&gt;", "<br>", $_POST['indhold']);

er det for at erstatte entertryk med et linieskift i html?
Avatar billede sukos Juniormester
11. november 2002 - 23:32 #25
Og så skal det jo være
header("Location:rediger.php");
Avatar billede sukos Juniormester
11. november 2002 - 23:39 #26
ups, der mangler lige to ' i  WHERE id = $_POST[id]

WHERE id = '$_POST[id]'");
Avatar billede bosse88 Nybegynder
12. november 2002 - 13:21 #27
ehrm kigger lige på det nu :D
Avatar billede bosse88 Nybegynder
12. november 2002 - 13:24 #28
nej, det er for at når beskederne rammer databasen skal de ikke vises som html, jeg havde engang en newbie der spammede min tagwall med et klamt asp script. Derfor gør jeg sådan at det ikke kan ske, denne kode er fra en tagwall jeg har lavet, nu skal den bruges til at lave hele siden med :D
Avatar billede bosse88 Nybegynder
12. november 2002 - 14:03 #29
det virker stadig ikke, bliver ved med at få den sorry, desværre ikke muligt at opdatere databasen besked
Avatar billede sukos Juniormester
12. november 2002 - 18:11 #30
Prøv:
if (mysql_query($insert2))

i stedet for:
if (mysql_query($sql))

(så'n går det når man copy&paster lidt kode! :O) )
Avatar billede tipsen Nybegynder
12. november 2002 - 20:14 #31
Da det drejer sig om en update-forespørgsel bør man i stedet benytte:

if(mysql_affected_rows($sql) > 0) {
  echo mysql_affected_rows($sql) . " rækker blev ændret!";
} else {
  echo "Ingen rækker blev opdateret af forespørgslen!";
}
Avatar billede tipsen Nybegynder
12. november 2002 - 20:14 #32
Avatar billede sukos Juniormester
12. november 2002 - 20:20 #33
oki, tipsen, hvordan med den str_replace?
Avatar billede bosse88 Nybegynder
12. november 2002 - 22:02 #34
ha ha :D
Avatar billede bosse88 Nybegynder
12. november 2002 - 22:09 #35
virker stadig ikke, skal vi ikke først have aktiveret den insert2 variabel ??
den aktiveres jo ikke noget som helst sted.
Har ændret det du lige sagde men jeg for stadig den sorry osv...
Avatar billede tipsen Nybegynder
12. november 2002 - 22:59 #36
sukos: (str_replace) - ereg_replace er lidt overkill til en alm. tekst-substitution

I stedet for:

$indhold = ereg_Replace("#smil", "<img border=0 src=pics/1.gif>", $indhold);
$indhold = ereg_Replace("#grin", "<img border=0 src=pics/2.gif>", $indhold);

Kan/bør man bruge (eksempel med 2 elementer!):

$fra = array('#smil', '#grin');
$til = array('"<img border="0" src="pics/1.gif">', '<img border="0" src="pics/2.gif">');

$indhold = str_replace($fra, $til, $indhold);
Avatar billede bosse88 Nybegynder
14. november 2002 - 19:14 #37
<html>
<head>
<basefont face="Verdana">
</head>

<body>
<p>

<?
$host = "host";
$user = "brugernavn";
$pass = "password";
$db = "database";
$def_contact = "Kontakt"; //skal ikke bruges....

// form not yet submitted
// display initial form with values pre-filled
if (!$submit)
{
    // open database connection
    $connection = mysql_connect($host, $user, $pass) or die ("Kan ikke connecte til mysql serveren!");

    // select database
    mysql_select_db($db) or die ("Kan ikke vælge databasen!");

    // generate and execute query
    $query = "SELECT titel, beskrivelse, indhold FROM artikler_spido WHERE id = '$id'";
    $result = mysql_query($query) or die ("Fejl i forespørgsel: $query. " . mysql_error());
   
    // if a result is returned
    if (mysql_num_rows($result) > 0)
    {
        // turn it into an object
        $row = mysql_fetch_object($result);

        // print form with values pre-filled
?>
<table cellspacing="5" cellpadding="5">
<form action="<? echo $PHP_SELF; ?>" method="POST">
<input type="hidden" name="id"  value="<? echo $id; ?>">
<tr>
    <td valign="top"><b><font size="-1">Slug</font></b></td>
    <td><input size="50" maxlength="250" type="text" name="titel" value="<? echo $row->titel; ?>"></td>
</tr>
<tr>
    <td valign="top"><b><font size="-1">Content</font></b></td>
    <td><textarea name="beskrivelse" cols="40" rows="10"><? echo $row->beskrivelse; ?></textarea></td>
</tr>
<tr>
    <td valign="top"><font size="-1">Contact person</font></td>
    <td><textarea name="indhold" cols="40" rows="10"><? echo $row->indhold; ?></textarea></td>
</tr>
<tr>
    <td colspan=2><input type="Submit" name="submit" value="Opdatér"></td>
</tr>
</form>
</table>
<?
    }
    // no result returned
    // print graceful error message
    else
    {
        echo "<font size=-1>Den artikel findes ikke i databasen.</font>";
    }
}
// form submitted
// start processing it
else
{
    // set up error list array
    $errorList = array();
    $count = 0;
   
    // validate text input fields
    if (!$titel) { $errorList[$count] = "Invalid entry: titel"; $count++; }
   
    if (!$beskrivelse) { $errorList[$count] = "Invalid entry: beskrivelse"; $count++; }
   
    // set default value for contact person
    if (!$indhold) { $contact = $def_contact; }
   
    // check for errors
    // if none found...
    if (sizeof($errorList) == 0)
    {
        // open database connection
        $connection = mysql_connect($host, $user, $pass) or die ("Kan ikke connecte til mysql serveren!");

        // select database
        mysql_select_db($db) or die ("Kan ikke vælge databasen!");

        // generate and execute query
        $query = "UPDATE artikler_spido SET titel = '$titel', beskrivelse = '$beskrivelse', indhold = '$indhold' WHERE id = '$id'";
        $result = mysql_query($query) or die ("Fejl i forespørgsel: $query. " . mysql_error());

        // print result
        echo "<font size=-1>Opdateret med succes!</font>";

        // close database connection
        mysql_close($connection);
    }
    else
    {
        // errors occurred
        // print as list
        echo "<font size=-1>The following errors were encountered: <br>";
        echo "<ul>";
        for ($x=0; $x<sizeof($errorList); $x++)
        {
            echo "<li>$errorList[$x]";
        }
        echo "</ul></font>";
    }
}
?>
</body>
</html>
Avatar billede bosse88 Nybegynder
14. november 2002 - 19:15 #38
Det var hvad jeg fik til at virke.... Men lige meget hvordan man vender og drejer det har sukos hjulpet meget til.... så derfor får han de 200 points!

-hvis han ligger et svar ;)
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