Avatar billede ramu Nybegynder
21. maj 2005 - 22:59 Der er 6 kommentarer

[kode]kode[/kode]

Hey alle eksperter..
Jeg har et lille problem, som jeg ikke rigtig kan få løst..
Det eneste er at jeg har et artikelsystem. I artikelsystemet kan man tilføje kodestykker, ved hjælp af [kode][/kode].
Men når jeg har gjort det, er det kun den første artikel der fungere med det.

Min kode ser således ud:
                    $jhh = mysql_query("SELECT * FROM tutorials WHERE id = '".$_GET[id]."'") or die(mysql_error());
                    while($abv = mysql_fetch_array($jhh)) {
                    $tekst = $abv[tekst];
                    $tekst = htmlentities($tekst);

$patterns = array(
"/\[kode\](.*?)\[\/kode\]/"
);
$replacements = array(
"<div class=\"tutorials_kode\">\\1</div>",
);
$tekst = preg_replace($patterns,$replacements, $tekst);
                       
                        echo "<h1>Artikler > $abv[overskrift]</h1>";
                            if($_SESSION['brugernavn'] && $_SESSION['user_id']) {

                    $tekst = ereg_replace("\n", "<br>", $tekst);
                    if($abv) {
                    print "<b>$abv[overskrift]</b><br />
                    $tekst<br /><br />
                    <b>Skrevet af: $abv[forfatter] d. $abv[dato] | Læst $abv[hits] gange.</b>
                    <hr size='1' color='black'>";

Nogle der kan se hvad jeg skal gøre, for at det virker korrekt ?
Avatar billede nizo Nybegynder
21. maj 2005 - 23:25 #1
Prøv med en eregi_replace istedet for array..

og $tekst.. det hedder eregi
Avatar billede ramu Nybegynder
21. maj 2005 - 23:47 #2
Det virker ik
Avatar billede hmortensen Nybegynder
22. maj 2005 - 04:29 #3
Prøv at udskifte det her:
$patterns = array(
"/\[kode\](.*?)\[\/kode\]/"
);
$replacements = array(
"<div class=\"tutorials_kode\">\\1</div>",
);
$tekst = preg_replace($patterns,$replacements, $tekst);

med:
$tekst = preg_replace("/\[kode\](.*)\[\/kode\]/Umis", "<div class=\"tutorials_kode\">$1</div>", $tekst);
Avatar billede nielle Nybegynder
22. maj 2005 - 20:35 #4
1) Kan din kode overhovedet køre? I føjle dit cut’n’pasts mangler der i hvert fald noget efter linjen:

$replacements = array(
"<div class=\"tutorials_kode\">\\1</div>",

Den ender bare I et komma.

2) Er du sikker på at det kun er den første linje den virker med? Jeg ville snare gætte på at det var den allersidste. Forklaring i næste punkt.

3) Grunden til at det ikke virker for samtlige poster er at du læser al data ud far databasen inde i din while-løkke. Imidlertid begynder du først at udskrive når løkken er kørt færdig. Dette betyder at det kun er den sidste post som overhovedet han blive udskrevet. Din variabel $tekst er nemlig blevet overskrevet undervejs.

Din kode, men mine kommentarer:

$jhh = mysql_query("SELECT * FROM tutorials WHERE id = '".$_GET[id]."'") or die(mysql_error());

while ($abv = mysql_fetch_array($jhh))
{
    $tekst = $abv[tekst];  // Nielle: Her overskrives værdien i $tekst, fra det forrige gennemløb, men den aktuelle post.
    $tekst = htmlentities($tekst);

    $patterns = array("/\[kode\](.*?)\[\/kode\]/");
    $replacements = array("<div class=\"tutorials_kode\">\\1</div>",  // Nielle: Her mangler der noget!

);

// Nielle: Her er $tekst lig med den sidste værdi fra løkken. Alle de foregående værdier er glemt.

$tekst = preg_replace($patterns,$replacements, $tekst);

echo "<h1>Artikler > $abv[overskrift]</h1>";

if ($_SESSION['brugernavn'] && $_SESSION['user_id'])
{
    $tekst = ereg_replace("\n", "<br>", $tekst);

    if ($abv)
    {
        print "<b>$abv[overskrift]</b><br />$tekst<br /><br /><b>Skrevet af: $abv[forfatter] d. $abv[dato] | Læst $abv[hits] gange.</b><hr size='1' color='black'>";

4) Løsningen på dit problem er at flytte al udskrivningen indenfor i while-løkken.
Avatar billede nielle Nybegynder
30. maj 2005 - 18:24 #5
Har du fået kigget på det endnu?
Avatar billede nielle Nybegynder
26. juni 2005 - 20:02 #6
?
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