Avatar billede kgp43 Nybegynder
17. december 2003 - 21:58 Der er 60 kommentarer og
1 løsning

problemer med ændring af tekst (linieskift)

Hejsa,

Jeg bruger denne kode for at gøre det muligt at se linieskift:

$additional = nl2br($additional);

Den bliver selvfølgelig brugt inden jeg indsætter teksten til db'en.

Alt virker ok (når jeg poster teksten).
Problemet opstår når jeg sætter teksten ind i en boks for at ændre det. Her kan man se <br> for hvert linieskift.

Hvordan fjerner man dette?
Avatar billede ztyxx Nybegynder
17. december 2003 - 21:59 #1
har du prøvet at bruge nl2br() ved udtræk istedet?
Avatar billede htm Nybegynder
17. december 2003 - 22:00 #2
Du bruger nl2br() når du hover det ud af databasen i stedet
Avatar billede wickedd Juniormester
17. december 2003 - 22:02 #3
Du kunne jo lave en ereg_replace i boksen hvor du ændrer...
f.eks.
$boks = ereg_replace("<br>","/n",$tekst); - hvor php så erstatter html <br> med php /n (som også er linjeskift)
Avatar billede ztyxx Nybegynder
17. december 2003 - 22:03 #4
\n er linieskift :-)
Avatar billede wickedd Juniormester
17. december 2003 - 22:04 #5
/ \ bla :)
Avatar billede wickedd Juniormester
17. december 2003 - 22:04 #6
kan jo ikke huske det hele vel? :p
Avatar billede ztyxx Nybegynder
17. december 2003 - 22:06 #7
hehe, såkandulæredet :-)
Avatar billede wickedd Juniormester
17. december 2003 - 22:07 #8
Tilføjelse:
Ovenstående kode skal bruges når du skriver datat til db'en, ikke når du henter (men du kan selvfølgelig bruge begge)

Dog har jeg aldrig haft problemer med nl2br, hverken når jeg henter og redigere eller når jeg kigger på selve resultatet
Avatar billede wickedd Juniormester
17. december 2003 - 22:11 #9
Heh, har lige kigget et af mine gamle scripts igennem.
Bruger du textarea til begge? Når du tilføjer og redigere? For så er det nemlig ikke nødvendig med nl2br eller ereg. - Det finder den selv ud af
Avatar billede wickedd Juniormester
17. december 2003 - 22:12 #10
Her er koden som jeg bruger til at vise og redigere et textarea:

<?
if (!$ip2admin){
    echo "Adgang nægtet.";
    exit;
}
?>
<title>Dine informationer om brugeren</title>
<link href="ip2.css" rel="stylesheet">
<font face="Verdana" size="1">
<body bgcolor="#FFFFFF">
<form action="<?$PHP_SELF;?>" method="post">
<?
if ($info){
    $info = ereg_replace("<","&lt;",$info);
    $info = ereg_replace("'","´",$info);
    $info = ereg_replace(">","&gt;",$info);
    include "db.php";
    $conn = mysql_connect("$host","$user","$pass");   
    mysql_select_db("$db",$conn);
    mysql_query("UPDATE $tabel SET info = '$info' WHERE id = $id") or die(mysql_error());
    echo "Informationer om brugeren er gemt...";
}else{?>
<?
include "db.php";
$conn = mysql_connect("$host","$user","$pass");
mysql_select_db("$db",$conn);                   
$que = mysql_query("SELECT id, ip, dato, info FROM $tabel WHERE id = $id LIMIT 1");
while ($row = mysql_fetch_array($que)) {
    echo "IP: <font color=\"#000080\"><b>$row[ip]</b></font> Tilføjet: <font color=\"#000080\"><b>$row[dato]</b></font><hr noshade size=\"1\" color=\"#000000\"><TEXTAREA NAME=\"info\" ROWS=\"7\" COLS=\"52\">$row[info]</TEXTAREA><hr noshade size=\"1\" color=\"#000000\"><INPUT TYPE=\"submit\" value=\"Gem\"> <INPUT TYPE=\"reset\" value=\"Nulstil\">";
    }?>
    </form>
<?
}
?>
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:13 #11
jeg bruger kun nl2br når jeg uploader  fra en textarea boks. Teksten bliver vist fint på mine sider, men ikke når jeg henter den ind i en text boks igen (for at redigere)
Avatar billede wickedd Juniormester
17. december 2003 - 22:14 #12
Ser sgu ikke godt ud her på E ... De må snart få fremskaffet noget ordentlig kode opsætning, for det jeg har postet ser da herrens ud :/
Avatar billede wickedd Juniormester
17. december 2003 - 22:16 #13
kgp -> Kig her : http://ip2.users.whitehat.dk/demo/admin.php
Klik så på Info, der bruger jeg ovenstående kode - Uden nl2br, fordi det skal man IKKE bruge når det er et textarea !!!!
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:16 #14
lige mine ord - kan ikke se hoved og hale i det :P
Avatar billede wickedd Juniormester
17. december 2003 - 22:17 #15
Når det er et textarea skal man ikke bruge noget kode, kun hvis du vil ha ' lavet om til f.eks. ´.
Ellers finder den selv ud af det :) Dejlig let.

Så fjern alle de funktioner du har ang. dette, og lad php indskrive den rent.
Når du så vil redigere, kommer den også ud rent
Avatar billede wickedd Juniormester
17. december 2003 - 22:19 #16
Du har jo forstand på php, så det tager kun 2 minutter ekstare for at tyde det :)
Men læg nu mærke til at jeg intet bruger i tekstfeltet (hverken ereg, nl2br osv) - Det finder den selv ud af
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:20 #17
Dette er min kode:

    <tr valign="top">
      <td width="136" class="leftrightspan"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Additional
        info:</font></td>
      <td colspan="2"> <textarea name="additional" cols="40" rows="5"><? echo $row[additional]?></textarea>
      </td>
    </tr>
Avatar billede wickedd Juniormester
17. december 2003 - 22:20 #18
Klik på info forresten .. Ud for en hvilken som helst ip
Avatar billede wickedd Juniormester
17. december 2003 - 22:21 #19
Kan du lave en test side så man kan se problemet? Hjælper en del
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:21 #20
De er altså snart nød til at gøre noget ved det kode noget.
Eksperten er den største side, men har ikke engang de mest basale "kode-side-ting".
Avatar billede wickedd Juniormester
17. december 2003 - 22:22 #21
Du har ikke den kode hvor du skriver til db'en ?
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:23 #22
Wikedd; det kan jeg ikke. Siden er en del at mit admin system, så det bliver noget rod.

Der er nu heller ikke meget at se. Bare en box med noget tekst, men et <br> ud for hver linie.
Avatar billede wickedd Juniormester
17. december 2003 - 22:23 #23
Men hvis du kigger på min ovenstående kode, kan du jo godt se at der ikke bliver brugt hverken funktioner eller specielt php stuff.
Ganske almindeligt html faktisk ..
Avatar billede wickedd Juniormester
17. december 2003 - 22:24 #24
Hvad er din host? b-one ?
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:24 #25
Wicked; jeg kan godt poste noget af den kode jeg bruger til at sende til db'en, men så skal jeg til at klippe i det (den er +150 linier)
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:25 #26
nej, en amerikansk (tror jeg)
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:26 #27
min post skulle heller ikke have noget at gøre med det.
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:26 #28
post = host
Avatar billede wickedd Juniormester
17. december 2003 - 22:27 #29
skrot de php funktioner når det er textarea, fordi den finder selv ud af om der er linjeskift eller ej
Avatar billede wickedd Juniormester
17. december 2003 - 22:27 #30
men lav dog lige en backup først, inden du tester :p
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:28 #31
Wicked; den kode hvor jeg skriver til db'en, kommer på en anden side.

et udklip:

$additional = &$HTTP_POST_VARS['additional'];
$additional = stripslashes($additional);
$additional = nl2br($additional);

herefter query'en
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:28 #32
hvilke php funktioner?
Jeg er lost nu
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:33 #33
Du bruger nl2br() når du hover det ud af databasen i stedet;

- virker heller ikke. Så laver den bare <br /> i stedet for.
Avatar billede wickedd Juniormester
17. december 2003 - 22:37 #34
Det eneste du skal gøre er at erstatte < & > med tegn som ikke laver lort på din side.

PS: Hvor finder du forresten nl2br i min ovenstående kode?
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:38 #35
$additional = ereg_replace("<br>","\n",$additional);

hvor $additional er mit tekst felt, virker heller ikke (når der uploades - har ingenting når der hentes)
Avatar billede wickedd Juniormester
17. december 2003 - 22:38 #36
Du skal ikke erstatte noget som helst, hverken lave funktioner eller noget, når det er i et textfield (kun < & > )
Avatar billede wickedd Juniormester
17. december 2003 - 22:39 #37
Det er fordi det er et textfelt ...
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:40 #38
wickedd; kan du uddybe det lidt?

Tror vi har misforstået hinanden.

Jeg bruger nl2br til upload til db'en (virker ok)
jeg bruger intet til visning at teksten på mine sider (virker ok)
Jeg bruger intet til redigering af teksten i textarea (viser alle linieskift med <br> inde i boksen).
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:42 #39
jeg har heller ingen funktioner eller noget i mit tekst felt, kun query'en der henter teksten fra db'en
Avatar billede wickedd Juniormester
17. december 2003 - 22:45 #40
Smider du data ind i db'en fra et tekstfield af?
Avatar billede wickedd Juniormester
17. december 2003 - 22:46 #41
^og hvilke funktioner bruger du i denne
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:46 #42
ja - her bruger jeg nl2br
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:48 #43
$additional = nl2br($additional);
Avatar billede wickedd Juniormester
17. december 2003 - 22:55 #44
fjern den, så virker det
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:55 #45
skulle dette ikke fjerne det:

    <tr valign="top">
      <td width="136" class="leftrightspan"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Additional
        info:</font></td>
        <?
        $text = ereg_replace("<br>","\n",$row[additional]);
        ?>
      <td colspan="2"> <textarea name="additional" cols="40" rows="5"><? echo $text;?></textarea>
      </td>
    </tr>
Avatar billede wickedd Juniormester
17. december 2003 - 22:55 #46
der skal aldrig nl2br i et textfield
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:55 #47
prøver lige
Avatar billede wickedd Juniormester
17. december 2003 - 22:56 #48
nej, prøv at fjerne diverse eregs, nl2br's osv.
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:56 #49
problemet er at teksten bliver posted på nogle sider uden textfield. Den kommer kun i en textboks når jeg redigere.
Avatar billede kgp43 Nybegynder
17. december 2003 - 22:57 #50
så jeg kan ikke fjerne nl2br, så kommer der ikke linieskift på mine alm sider
Avatar billede wickedd Juniormester
17. december 2003 - 23:01 #51
Sagde du ikke lige før at det var et textarea? og ikke en textbox?
Avatar billede kgp43 Nybegynder
17. december 2003 - 23:08 #52
der er tale om et text area (jeg redigere i).
teksten bliver også posted på nogle alm sider (ikke i et text area), så der opstår et problem hvis jeg fjerner nl2br
Avatar billede Slettet bruger
17. december 2003 - 23:10 #53
Du skal KUN bruge nl2br lige før du udskriver den og når det IKKE er i et textarea.

Du skal IKKE bruge nl2br før du smider i db.
Avatar billede kgp43 Nybegynder
17. december 2003 - 23:13 #54
Hmmm.... jeg er virkelig forvirret nu :P

Jeg har kun nl2br ét sted: lige før den bliver smidt ind i db'en.
Når jeg så henter den ud på mine alm sider, bliver teksten postet som den skal (med linieskift).
Avatar billede kgp43 Nybegynder
17. december 2003 - 23:16 #55
utroligt at sådan en lille ting kan lave så meget besvær.
Avatar billede kgp43 Nybegynder
17. december 2003 - 23:16 #56
ahh.. tror jeg har den. 2 sec
Avatar billede Slettet bruger
17. december 2003 - 23:20 #57
Ja, men det smadrer din redigering. (Som du jo har opdaget.)

Det kan løses på to måder:

1: Fjern <br> igen før redigering
eller
2: lad være med at bruge nl2br før det kommer i db, men kun når de <br>-tags skal bruges.


Hvis du vil have mulighed 1, kan du lave <br> tilbage til \n med denne:

$row['additional']=preg_replace('<br[^>]*>',"\n",$row['additional']);
Avatar billede kgp43 Nybegynder
17. december 2003 - 23:31 #58
Så er den der :)

Sådan er det lavet nu:
Der bruges kun nl2br når der postes på alm. sider, resten foregår uden :)
temmelig simplet når man tænker over det :P

Kan i ikke give et svar (begge to), så i kan få nogle point.
Avatar billede Slettet bruger
17. december 2003 - 23:54 #59
Bare giv dem til wickedd. Jeg hjalp ham bare med at forklare det for dig :-)

Og jeg sagde egentlig ikke noget, som han ikke allerede havde sagt.
Avatar billede kgp43 Nybegynder
18. december 2003 - 10:17 #60
okay.
han skal dog lige lave et svar først
Avatar billede wickedd Juniormester
18. december 2003 - 16:12 #61
hehehe ok så gik det op for dig :) - Underlig forklaring herfra kan jeg se, så jeg må da ha været lidt træt. Arbejder jo også fra kl 4:30 hver dag.

Men godt det virker nu
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