Avatar billede madsens90 Praktikant
16. august 2007 - 15:31 Der er 38 kommentarer og
1 løsning

Automatisk linieskift i gæstebog? Evt. hjælp til \n ?

Jeg har lavet min egen gæstebog på min hjemmeside:
www.madsens.hotserv.dk , og vil gerne lave sådan at når man trykker på enter / Næste linie, så gemmer den også det er MySQL'en..

Nogen der ved hvordan man gør det? Så ville det være en stor hjælp. På forhånd tak!
Avatar billede webudvikleren Nybegynder
16. august 2007 - 15:40 #1
Avatar billede webudvikleren Nybegynder
16. august 2007 - 15:43 #2
Jeg vil nu foretrække denne løsning som også vises på php.net

<?php
function nls2p($str)
{
  return str_replace('<p></p>', '', '<p>'
        . preg_replace('#([\r\n]\s*?[\r\n]){2,}#', '</p>$0<p>', $str)
        . '</p>');
}
?>
Avatar billede olebole Juniormester
16. august 2007 - 23:04 #3
<ole>

- bortset fra, den vil være ulovlig i et span, link el. lign. Det kommer anpå, hvor teskten skal bruges  ;o)

/mvh
</bole>
Avatar billede madsens90 Praktikant
17. august 2007 - 10:46 #4
Mange tak. Vil prøve overstående mulighed lidt senere når jeg kommer hjem fra arbejde. :)

Skulle gerne kunne få det til at virke. :) Vender tilbage med svaret.
Avatar billede madsens90 Praktikant
17. august 2007 - 15:11 #5
Hmm.. Det er sådan at jeg nok blandt jer vil blive kaldt en newb..

Og da jeg er det, så er der stadig et problem. :)
Ser i. Jeg har et et textarea, ligesom dette (Hvor man svarer på spørgsmål), som ser sådan ud:

<textarea  cols="50" rows="10" name="besked_txt" id="besked_txt" style="background-color: #cccccc;"></textarea>

Og vil lave på det sådan at den gemmer ens linieskift i MySQL'en. ;)
Avatar billede olebole Juniormester
18. august 2007 - 21:20 #6
<ole>

Den gemmer skam linjeskift i MySQL-databasen. Dog ikke iform af '<br>', men det er der heller ingen, der ønsker at have i sin DB  ;o)

/mvh
</bole>
Avatar billede olebole Juniormester
18. august 2007 - 21:21 #7
- og svaret fik du allerede i første indlæg (16/08-2007 15:40:46)  ;o)
Avatar billede madsens90 Praktikant
18. august 2007 - 21:46 #8
Så er det bare mig der ikke forstår hvordan den gemmer <br> i slutningen. :)
Avatar billede olebole Juniormester
18. august 2007 - 21:51 #9
Den gemmer netop ikke '<br>', men linje skift: '\r\n' ... og dem skifter du ud med HTML-linjeskift, når teksten skal vises. HTML gemmer man aldrig i en DB, så derfor gøres det med nl2br  ;o)
Avatar billede madsens90 Praktikant
18. august 2007 - 21:54 #10
Tror måske at jeg fatter det nu. :) Tak for hjælpen. :)
Avatar billede madsens90 Praktikant
18. august 2007 - 21:56 #11
kan en evt. give et eksempel med brugen af: "nl2br" ?? :)
Avatar billede olebole Juniormester
18. august 2007 - 21:59 #12
$str = "En linje her\r\n-og én mere her ...";  // Streng fra DB
$str = nl2br($str);
print $str;
Avatar billede madsens90 Praktikant
18. august 2007 - 22:05 #13
Så langt er jeg kommet. :) Den gør dette i mine øjne:

Den gemmer \r\n i databasen for linjeskift, i stedet for <br>. :)

Men hvordan for jeg den til at gemme det i databsen. Altså hvordan for jeg den til at sætte det ind i den tekst jeg har, som jeg skal gemme fra et <textarea>, og ind i min DB. ?
Avatar billede olebole Juniormester
18. august 2007 - 22:09 #14
Jamen, du skal da ikke gemme <br> i DB'en. Hvorfor vil du det?  =)
Avatar billede madsens90 Praktikant
18. august 2007 - 22:11 #15
For ellers når man trykker på enter i mit textarea, så skriver den det alligevel på en lang linie når den skal vise det fra databasen? Det er måske slet ikke <br> der er problemet? men måden jeg viser det på igen?
Avatar billede madsens90 Praktikant
18. august 2007 - 22:23 #16
kan se i min DB at den gemmer ens linieskift, men da den ikke gemmer <br> eller nogen lign, i slutningen af hver linie, så gik jeg ud fra at det var derfor at den ikke viste det på hjemmesiden når jeg henter det ned fra min DB.
Avatar billede olebole Juniormester
18. august 2007 - 22:26 #17
Du skal ikke gå udfra, tro eller forvente ... du skal teste de ting, vi skriver til dig. Ellers spilder du vores tid - og du lærer ikke noget  ;o)
Avatar billede madsens90 Praktikant
18. august 2007 - 22:47 #18
Jamen jeg har jo fundet ud af at det jeg troede jeg ikke vidste, var ikke problemet..

Tror jeg da.. og jeg "tror" fordi at jeg ikke ved det, og derfor snakker med dig for at finde svaret. :)

Og mit spørgsmål er vidst nok ændret til noget retningen af:
"Hvordan gør jeg så den viser linieskift fra databasen på min hjemmeside?" :)
Noget du kender svaret på?
Avatar billede olebole Juniormester
18. august 2007 - 22:52 #19
Det har du fået tre-fire gange - og endda med eksempel. Har du overhovedet testet eksemplet (8/08-2007 21:59:51) endnu?
Avatar billede madsens90 Praktikant
18. august 2007 - 22:55 #20
Jamen så er det bare mig der ikke forstår hvordan nl2br det indsætter de ting i slutningen af hver linje..
Avatar billede olebole Juniormester
18. august 2007 - 23:02 #21
Har du testet eksemplet - og har du læst bag linket, webudvikleren lagde i sit allerførste indlæg? Hvis ikke, er der vel ikke noget at sige til, du ikke forstår - og så er du ikke værd at bruge tid på
Avatar billede madsens90 Praktikant
18. august 2007 - 23:06 #22
Det er ikke mig der tvinger dig til at bruge tid på mig..

men JA, jeg har læst bag linket, og NEJ jeg forstår stadig ikke hvordan jeg gør...

jeg har mit textarea som ser sådan ud:
<textarea  cols="50" rows="8" name="besked_txt" id="besked_txt" style="background-color: #cccccc;" accesskey="m"></textarea>

og min connection:
if ($_GET['id'] == "post") {
$navn= $_POST["navn_txt"];
$besked= $_POST["besked_txt"];
$tid = date("Y-m/d H:i:s");
mysql_connect("","","").
mysql_select_db("").
MYSQL_QUERY("INSERT INTO tagwall (id,besked,navn,tid)".
    "VALUES ('NULL','$besked', '$navn', '$tid')");
    header("Location:tagwall_skriv.php");


Er det noget at dette jeg skal ændre ved?
Avatar billede madsens90 Praktikant
18. august 2007 - 23:09 #23
Hvis jeg kan se hvad resultatet er, er jeg sikker på at jeg også har lært at gøre det til en anden gang.. :)
Avatar billede olebole Juniormester
18. august 2007 - 23:11 #24
For tredie gang: Har du testet eksemplet (8/08-2007 21:59:51)?
Avatar billede madsens90 Praktikant
18. august 2007 - 23:13 #25
Nej for jeg ved ikke hvad jeg skal gøre med den angivne tekst?

Derfor skrev jeg dette (18/08-2007 23:06:46)sådan at du kunne vise mig hvor og hvad jeg skulle sætte ind.
Avatar billede olebole Juniormester
18. august 2007 - 23:17 #26
- og jeg er iøvrigt helt enig i din betragtning: "Det er ikke mig der tvinger dig til at bruge tid på mig.."

Det er nu heller ikke dét, der er sagen. Problemet er dit - og det opstår, hvis du tvinger mig og andre til at undlade at bruge tid på dig i fremtiden  ;o)

Test eksemplet. Ellers er der jo ingen mening i at hjælpe dig. Du bad i indlægget (18/08-2007 21:56:57) om et eksempel. Det fik du! Så skal du ikke 12 indlæg efter - og efter tre spørgsmål om, hvorvidt det er testet - fortælle mig, du stadig ikke har testet det! Hvad tror du, det er, vi leger her?
Avatar billede madsens90 Praktikant
18. august 2007 - 23:26 #27
jamen så fat dog at jeg ikke ved hvordan jeg tester det.. :O

Tror bare jeg venter til min bror kommer hjem. Han forstår hvad jeg siger..
Avatar billede olebole Juniormester
18. august 2007 - 23:28 #28
Hvis du ikke evner at skrive:

<?
$str = "En linje her\r\n-og én mere her ...";  // Streng fra DB
$str = nl2br($str);
print $str;
?>

- i en fil - kalde den 'test.php' - og afprøve den ... så tror jeg, du har gang i noget helt forkert!
Avatar billede madsens90 Praktikant
18. august 2007 - 23:32 #29
Jeg ved godt hvad det gør, men jeg fatter ikke hvor jeg sætter det ind i mit eget sådan at den gemmer dette: "\r\n" for enden af hver linie??????

Det er derfor jeg viste dig dette: "(18/08-2007 23:06:46)" sådan at du kunne vise mig hvor jeg skal sætte det ind????
Avatar billede olebole Juniormester
18. august 2007 - 23:34 #30
- og det hjælper ikke et hak, at din bror forstår, hvad du siger. Problemet er det stik modsatte!

Der bliver helt automatisk indsat '\r\n', som din kode er nu ... det har vi været igennem flere gange nu. Du har masser af gange fået at vide, du ikke skal gøre noget, når du indsætter tekst i DB'en. Det skal gøres, når du henter teksten og skriver den ud.

Ikke desto mindre spørger du så i (18/08-2007 23:06:46), hvad du skal gøre med koden, der indsætter i DB'en. Hvor svært kan man dog gøre tingene?  =)
Avatar billede olebole Juniormester
18. august 2007 - 23:35 #31
Læs tråden igennem, til du har forstået indholdet af den ... det burde ikke være svært, hvis man koncentrerer sig
Avatar billede madsens90 Praktikant
18. august 2007 - 23:38 #32
Jamen er der altid dette "\r\n" i slutningen af en linje når man gemmer den i sin DB?

Så var det bare mig der endnu ikke vidste noget..

Hvordan henter jeg så teksten på den rette måde? Hvor i min tekst (18/08-2007 23:06:46) skal skal jeg indsætte dit svar fra tidligere?
Avatar billede olebole Juniormester
18. august 2007 - 23:44 #33
Nu må du altså holde op ...!!!!!!!!!! Du har fået svar på alle dine spørgsmål fire gange! Så læs dog for pokker tråden og lad være med at spilde folks tid.
Avatar billede olebole Juniormester
18. august 2007 - 23:47 #34
Lav et testdokument, hvor du henter tekst i din DB. Kør teksten igennem nl2br og skriv teksten ud ... så er der <br> alle de steder, du trykkede 'Return' i dit textarea. Hvor svært kan dét være?
Avatar billede madsens90 Praktikant
19. august 2007 - 00:16 #35
jamen så vender jeg måske tilbage senere..

Tak for det jeg har forstået af det du har prøvet at banke ind i hovedet på mig.
Avatar billede zurekk Nybegynder
19. august 2007 - 17:37 #36
Ole jeg tror det han ikke forstår/forstod er hvorfor han ikke kan se \r\n blive gemt.

Madsens > \r\n er der, selvom du ikke se det, hver gang der bliver skiftet linje, kommer der en usynlig \r\n for enden af linjen.

Derfor skal du bruge nl2br( $dintekst ), fordi den opfanger og ændrer dem til <br /> :)
Avatar billede zurekk Nybegynder
19. august 2007 - 17:40 #37
Der tages forbehold for stavefejl(ovenstående indlæg).

madsens > Som ole siger, prøv bare når du skal udskriver kommentarerne, så istedet for at skrive echo $besked;, så skriver echo nl2br( $besked );
Avatar billede olebole Juniormester
19. august 2007 - 19:16 #38
zurekk >> Du har højst sandsynligt ret ... hvilket jo blot understreger, hvor vigtig det er at teste de eksempler, andre brugere viser én  ;o)
Avatar billede madsens90 Praktikant
19. august 2007 - 22:43 #39
Tak.. Har fået det til at virke. :)
Zurekk... Du har fuldstændig ret.. Det var nok bare det jeg ikke forstod, men det fortalt en god ven mig, som også kan al det der. :)

Tak for hjælpen. :)

Olebole.. Jeg prøvede at teste det du gav mig, men da jeg ikke kendte så meget til php, vidste jeg ikke hvordan jeg skulle teste det.. Kan godt lyde somom at jeg ikke engang kan finde ud af at sætte en tekst ind i et dokument, men det var sværere end som så. :) Ses.. tak for hjælpen.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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