Avatar billede nemlig Professor
30. marts 2013 - 14:35 Der er 7 kommentarer og
1 løsning

unserialize driller

Hejsa.
Jeg har serialized et array, som er smidt i en tabel.
En del af arrayet er indholdet fra et textarea.
Jeg har nu opdaget, at hvis der i textareaet er linjeskift, så virker unserialize ikke.

Nogen der kender en løsning på dette?

Og vil der være problemer med at bruge serialize/unserialize med lange textarea's.
Avatar billede olebole Juniormester
30. marts 2013 - 15:56 #1
<ole>

Indholdet af et TEXTAREA er bare en streng. Den har du ikke noget ud af at hælde gennem serialize. Hvad er det reelt, du ønsker/prøver?

/mvh
</bole>
Avatar billede olebole Juniormester
30. marts 2013 - 16:14 #2
Det her fungerer f.eks. fint:

<?php
$content = '';

if (isset($_POST['foo'])) {
    $content = serialize($_POST['foo']);
}
?>
<form action="" method="post">
    <textarea name="foo" cols="50" rows="20"><?php echo unserialize($content) ?></textarea>
    <p><button type="submit">Send</button></p>
</form>
Avatar billede nemlig Professor
30. marts 2013 - 16:47 #3
Jeg har måske misforstået funktionerne.
Jeg har brug for at gemme forskellige opsætninger og indstillinger i et bookingsystem, hvor jeg hidtil har benyttet mig af flere indstillings-tabeller.
Nogle indstillinger gør brug af fx 10 felter, mens andre måske kun gør brug af 5 felter.

Tanken er, at jeg i én og samme indstillings-tabel vil gemme forskellige indstillinger og opsætninger, og så gemme dem i et array ved hjælp af serialize. På den måde kan jeg nøjes med 1 række pr. indstilling/opsætning.
Avatar billede nemlig Professor
30. marts 2013 - 16:55 #4
Nu har jeg fundet ud af, hvorfor det driller, når jeg anvender linjeskift i input-felter.

Inden jeg gemmer indholdet i MySQL, anvender jeg mysql_real_escape_string(). Hvis jeg ikke anvender denne function, så er der ingen problemer - lige bortset fra det sikkerhedsmæssige.
Avatar billede olebole Juniormester
30. marts 2013 - 17:34 #5
Du bør slet ikke bruge PHP's forældede MySQL-API. Det forsvinder meget snart helt fra PHP og er erstattet af MySQLI. Med prepared statements under MySQLI (eller PDO) behøver du slet ikke at escape input for at undgå SQL-injections.

Det er sjældent en god idé at gemme arrays i en DB-tabel. Det er bedre at oprette en speciel tabel til indstillinger. Med hver indstilling gemmer du så en ID, der relaterer sig til brugeren, bestillingen, eller hvad det nu er, indstillingen forholder sig til.

På den måde kan du let trække sammenhørende indstillinger fra tabellen
Avatar billede nemlig Professor
30. marts 2013 - 18:20 #6
Hej Ole.
MySQLI er jeg ikke kommet i gang med endnu, men jeg er godt klar over, at der snart skal ske noget.

Tak for tippet om indstillingstabellen. Det med et ID pr. sæt af indstillinger lyder som en super-ide.

Tak for din gode bidrag og fortsat god påske.

Smid venligst et svar, hvis du er begyndt at samle - ellers lukker jeg.
Avatar billede olebole Juniormester
31. marts 2013 - 17:13 #7
Selvtak - og selv god Påske  =)

Ellers tak, jeg samler stadig ikke, så du lukker bare selv  *o)
Avatar billede nemlig Professor
08. april 2013 - 23:49 #8
Lukker.
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