Avatar billede Slettet bruger
09. august 2010 - 00:19 Der er 9 kommentarer og
1 løsning

Problemer med at sende til database.

Jeg har fået et problem.

Jeg har et tekstfelt hvor jeg selvf. sender indholdet til databasen.

Men når jeg skriver en tekst sender den ikke linje skift og kan ikke sende hvis tekstfeltet indholder et '

Hvordan gør jeg så det er muligt?
Avatar billede danco Nybegynder
09. august 2010 - 01:14 #1
har du evt. noget kode vi kan se ?
Avatar billede Slettet bruger
09. august 2010 - 01:23 #2
Der er jo ikke så meget kode i det.

Har en text box på side 1.php

side 2.php sender så data til databasen med denne kode:
[Div]
$Text = $_REQUEST["text"];
{
$query = mysql_query("insert into test (TEXT) values ('$Text')");
}
[/div]

Teksten kommer fint ind. Der er bare ikke nogle linjeskift selvom jeg skriver dem. Og den kan ikke sende hvis tekstfeltet indholder et '
Avatar billede arne_v Ekspert
09. august 2010 - 03:53 #3
Du bør bruge mysql_real_escape_string eller bedre mysqli og prepared statement for at single quotes.
Avatar billede arne_v Ekspert
09. august 2010 - 03:54 #4
Er du sikker på at problemet er at linieskift ikke bliver gemt i databasen?

Og at det ikke er f.eks. ved visning at liniskift ikke bliver erstatted med <br> via nl2br funktionen?
Avatar billede nemlig Professor
09. august 2010 - 10:01 #5
Jeg vil bare nævne, at jeg har været i præcis samme situation med manglende linjeskift og problemer med special-tegn.

Løsningen for mig var præcis, som arve_v skriver:
Brug mysql_real_escape_string() når du gemmer i databasen
og anvend nl2br() når du har hentet fra databasen og vil vise indholdet.
Avatar billede Slettet bruger
09. august 2010 - 14:15 #6
Nu skriver arne at jeg skal bruge dem i single quotes.
Der kommer mangle flere på den rigtige side.

da det ikke virkede på min rigtige side fjernede jeg hen af veje det jeg kunne se virke.

Kom så frem til at det var det med tegn der ikke virkede.

Så fik jeg det med linje skift til at virke.
Jeg forstår bare ikke. Jeg måtte selv ind og rette mine første 4 data indlæg i databasen så der kom linjeskift. Men det 5 indlæg var der mellemrum.

Hvad ang det med tegn var, var det stadig mysql_escape_string() der skal bruges?
Avatar billede nemlig Professor
09. august 2010 - 14:44 #7
Ja - så vil jeg gøre sådan her på side2.php

$Text = mysql_real_escape_string($_REQUEST["text"]);


Og når du skal vise text-feltet, så brug

echo nl2br($row['text']); (eller hvad du kalder din felt-variabel)
Avatar billede Slettet bruger
09. august 2010 - 15:14 #8
Jeps.. Den med nl2br havde jeg fået til at virke.
mysql_real_escape_string virker også fint.

Men jeg forstår ikke at jeg selv skulle ind og indsætte linjeskift i alle database indlæggene i starten. Men det er nok fordi de 4 første indlæg blev lavet inden jeg skulle leve uden en computer.
Kan være at jeg fik lavet noget om lige inden, og bare ikke kan huske det.

Men så virker den.
Spørgsmålet er bare hvem der skal have pointene?
Avatar billede nemlig Professor
09. august 2010 - 15:22 #9
Jeg har ikke nogen forklaring. Normalt gemmes linjeskiftene - du kan bare ikke altid se dem.
Men med nl2br() virker det.

arne_v kom med med løsningen - jeg bekræftede blot, at det burde virke. Jeg skal ikke have point!
Avatar billede arne_v Ekspert
09. august 2010 - 16:44 #10
svar fra mig

men vi kan da godt dele
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