Avatar billede kischi Novice
28. maj 2013 - 11:29 Der er 10 kommentarer og
1 løsning

Eksekvere html kode fra database

Hej,

Jeg har lavet en hjemmside, som på administrationsmodulet indeholder et felt hvor man kan skrive tekst som bliver hentet ned på frontend siden.

Jeg vil nu lave et af de felter om til, så når det bliver hentet ned på frontend siden, bliver det hentet ned som htmlkode.

Så det vil sige at hvis man for eksempel skriver <br> i feltet, så laver den et break på frontend siden.

Er der en der ved hvordan dette kan gøres.

Koden hvor det bliver hentet ned ser således ud:

<div class="price-cart">
        <h3>Price range:</h3>
      <?php if ($price) { ?>
    <div class="price">
    <?php if (!$special) { ?>
        <?php echo $map; ?>
        <?php } else { ?>
        <span class="price-old"><?php echo $map; ?></span>
        <?php } ?>
    </div>
    <?php } ?>

Jeg håber i forstår hvad jeg mener og at der er nogen der kan hjælpe?

Tak
Avatar billede jakobdo Ekspert
28. maj 2013 - 13:32 #1
Det bør du bare kunne gøre som:

$res = mysqli_query("SELECT html FROM tabelnavn LIMIT 1");
$row = mysqli_fetch_assoc($res);

echo $row;

Men det kommer jo lidt an på din opsætning.
Hvad får du ud, hvis du printer html fra din database i dag ?
Avatar billede kischi Novice
28. maj 2013 - 13:42 #2
Ok, men hvor ville jeg skulle indsætte dette kode?

Kan jeg indsætte den i det stykke kode jeg lagde op i første post, eller skal jeg ind og gøre det i en anden fil?

Når jeg hiver indholdet ud fra min database nu, skriver den de bare som almindelig tekst.
Den gør slet ikke noget ved HTML'en.

hvis jeg indsætter <br> så udskriver den <br>, men den laver ikke et break, som jeg for eksempel ville have den til.

Tak for hjælpen
Avatar billede jakobdo Ekspert
28. maj 2013 - 13:48 #3
Et udtræk fra en database, kan jo fint sammenlignes med alt andet php.

Så når du har:

<div class="price-cart">
        <h3>Price range:</h3>
      <?php if ($price) { ?>
    <div class="price">
    <?php if (!$special) { ?>
        <?php echo $map; ?>
        <?php } else { ?>
        <span class="price-old"><?php echo $map; ?></span>
        <?php } ?>
    </div>
    <?php } ?>

Så printer du $map.
$map kunne ligeså godt indeholde et udtræk fra en database, en fil eller hvad man nu kunne tænke sig til.

Og hvis <br> udskrives som <br> og ikke et "linebreak" som kunne forventes, så prøv at se om du evt. kalder noget: htmlentities(), htmlspecialchars() eller lign.

De oversætter nemlig <br> til: &lt;br&gt; og det bliver dermed ikke oversat som forventet.
Avatar billede kischi Novice
28. maj 2013 - 14:35 #4
Nu har jeg søgt alle filer igennem og der er ikke noget sted hvor htmlentities(), htmlspecialchars() bliver kaldt.

Nu var <br> også bare et eksempel, det der egentlig skal eksekveres er noget nærmere det her:

<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://maps.google.dk/maps?hl=da&amp;ie=UTF8&amp;ll=56.23008,11.5425&amp;spn=2.986348,9.876709&amp;t=m&amp;z=7&amp;output=embed"></iframe><br /><small><a href="https://maps.google.dk/maps?hl=da&amp;ie=UTF8&amp;ll=56.23008,11.5425&amp;spn=2.986348,9.876709&amp;t=m&amp;z=7&amp;source=embed" style="color:#0000FF;text-align:left">Vis stort kort</a></small>

Så som du kan se er det HTML som skal eksekveres på frontend siden.
Nu er dette hvad der bliver lagt op i databasen sådan der, og det bliver også trukket ud i frontend sådan der.

Tak
Avatar billede jakobdo Ekspert
28. maj 2013 - 14:46 #5
Prøv at smid din php var igennem denne: http://dk.php.net/manual/en/function.html-entity-decode.php
Avatar billede kischi Novice
28. maj 2013 - 15:50 #6
Ok, jeg prøvede at læse lidt om det på den side.
Og prøvede at forstå den kodestump som jeg skulle bruge:

string html_entity_decode ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = 'UTF-8' ]] )

Men jeg forstår det slet ikke, så jeg ved heller ikke hvordan jeg skal kombinere den med min kode som jeg skrev tidligere.

Jeg er pludselig helt lost :(

Det er vel den linje der skal kombineres med det kode jeg skrev tidligere ik?

Tak
Avatar billede jakobdo Ekspert
28. maj 2013 - 21:02 #7
Hvis din variabel hedder:

$data_fra_db;

Så kan du bruge:

echo html_entity_decode($data_fra_db);
Avatar billede kischi Novice
29. maj 2013 - 17:07 #8
Det er meget underligt,

Men ligepludselig udskriver den slet ikke noget fra DB, heller ikke HTML koden som den gjorde før.

Jeg prøvede at kopiere den gamle kode ind igen, som udskrev det før, men den vil slet ikke udskrive noget.
Men den lægger teksten op i databasen men henter det ikke ned igen.
Kan i se om jeg mangler noget?

Nu ser koden sådan her ud:

<div class="price-cart">
        <h3>Price range:</h3>
      <?php if ($map) { ?>
    <div class="price">
    <?php if (!$special) { ?>
        <?php echo $map; ?>
        <?php } else { ?>
        <span class="price-old"><?php echo $map; ?></span>
        <?php } ?>
    </div>
    <?php } ?>

Tak
Avatar billede kischi Novice
03. juni 2013 - 15:30 #9
Hej igen,

Så virker det endelig, og den laver koden så den indlæsser mappet :D

Koden endte med at se sådan her ud.

<?php } ?>
      <div style="width:300px; height:175px; float:left; position:relative; margin-left:0px; margin-top:0px;">
    <?php echo html_entity_decode($map); ?>
  </div>
    </div>
    <?php } ?>

Tak for svarene, hvis du svarer så giver jeg point.
Avatar billede jakobdo Ekspert
03. juni 2013 - 15:39 #10
Svar!
Avatar billede jakobdo Ekspert
03. juni 2013 - 15:50 #11
Takker for point.
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