Avatar billede delphiuser Mester
04. marts 2015 - 12:40 Der er 6 kommentarer og
1 løsning

hvorfor fejler den

Hej eksperter

Jeg sidder og er i gang med at lave et lille forum.
det hele virker som sådan fint nok. men når jeg uploader et stykke kode fejler den.

min kode ser sådan her til mit forum hvor den viser indlæg samt besvarelse

[code]
function show_post() {
    $fid = $_GET['fid'];
    $sql = "select * from posts where id='$fid'";
    $show = mysql_query($sql);
    if(mysql_num_rows($show)>0) {
        while($row = mysql_fetch_assoc($show)) {
            $title = $row['title'];
            $describe = $row['describe'];
            $ffid = $row['id'];
            $dato = $row['dato'];
            $newdate = date("d-m-Y", strtotime($dato));
            $userid = $row['userid'];
            $sql1 = "select * from users where id='$userid'";
            $profil = mysql_query($sql1);
            if(mysql_num_rows($profil)>0) {
                while($row1 = mysql_fetch_assoc($profil)) {
                    $username = $row1['user'];
                    ?>
                    <div id="show">
                        <p><?php echo $title; ?> - Forum Post</p>
                        <span><?php echo $username; ?></span>
                        <article><?php echo nl2br($describe); ?></article>
                        <label>Skrevet den <?php echo $newdate; ?></label>
                    </div>
                    <?php
                    $sql2 = "select * from answers where afid='$ffid'";
                    $ans = mysql_query($sql2) or die(mysql_error());
                    if(mysql_num_rows($ans)>0) {
                        while($row2 = mysql_fetch_assoc($ans)) {
                            $auserid = $row2['auserid'];
                            $answertext = $row2['answertext'];
                            $answerdate = $row2['answerdate'];
                            $newanswerdate = date("d-m-Y", strtotime($answerdate));
                            $sql3 = "select * from users where id='$auserid'";
                            $aprof = mysql_query($sql3);
                            if(mysql_num_rows($aprof)>0) {
                                while($row3 = mysql_fetch_assoc($aprof)) {
                                    $auser = $row3['user'];
                                    ?>
                                    <div id="ans">
                                        <span><?php echo $auser; ?></span>
                                        <article><?php echo nl2br($answertext); ?></article>
                                        <label>Besvaret den <?php echo $newanswerdate; ?></label>
                                    </div>
                                    <?php
                                }
                            } else {
                                ?>
                                <div id="ans">
                                Der er ikke nogen besvarelser endnu.
                                </div>
                                <?php
                            }
                        }
                    }
                    ?>
                    <div id="ans">
                    <p>Kommenter indlæg</p>
                        Information: Skal du skrive noget kode brug den &lt;code&gt;&lt;/code&gt;
                          <form action="inc/answer.inc.php" method="post" enctype="multipart/form-data">
                            <input type="text" name="afid" value="<?php echo $fid; ?>" />
                            <input type="text" name="auserid" value="<?php echo $auserid; ?>" />
                            <input type="date" name="answerdate" value="<?php echo date("Y-m-d"); ?>" />
                            <textarea name="answertext"></textarea>
                            <input type="submit" name="ansforum" id="btn" value="Besvar" />
                        </form>
                    </div>
                    <?php
                }
            }
        }
    }
}
[/code]
koden jeg bruger til at gemme det med i min tabel ser sådan her ud.

[code]
if(isset($_POST['ansforum'])) {
    $afid = $_POST['afid'];
    $auserid = $_POST['auserid'];
    $answerdate = $_POST['answerdate'];
    $answertext = $_POST['answertext'];
    $sql = "insert into answers(afid, auserid, answerdate, answertext) values('$afid', '$auserid', '$answerdate', '$answertext')";
    mysql_query($sql) or die(mysql_error());
    header("location:java script://history.go(-1)");
}
[/code]

Jeg får denne fejlmeddelelse her.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Dette er en test'; ?> Lad os nu bare håbe at dette skidt virker')' at line 1

Men får kun denne fejl når jeg prøver at gemme noget kode hvorfor og hvad har jeg gjort galt.

på forhånd tak for hjælpen

Delphiuser
Avatar billede olsensweb.dk Ekspert
04. marts 2015 - 13:42 #1
>$ans = mysql_query($sql2) or die(mysql_error());
hvor definerer du $sql2 ??

>$sql = "insert into answers(afid, auserid, answerdate, answertext) values('$afid', '$auserid', '$answerdate', '$answertext')";
mangler der ikke et mellemrum mellen "answers og (afid," så der skal stå
$sql = "insert into answers (afid, auserid, answerdate, answertext) values('$afid', '$auserid', '$answerdate', '$answertext')";

kan du ikke udskrive den sql (echo) der fejler, jeg kan ikke se den i det code du visser hvis det ikke er den insert med melemrum der fejler


du har sikkert læst denne guide http://www.eksperten.dk/guide/1325
men ikke lagt mærke til bemærkningen til code, eller glemt det, da du sikkert bruger andre fora hvor det virker

Bemærk:
Bemærk hvordan tegnene som <, >, ", ' osv. renderes. De bliver således lavet om til char koder og html entiteter.


nb: ref http://php.net/mysql_connect

Warning
This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information.
Avatar billede delphiuser Mester
04. marts 2015 - 14:04 #2
det er sådan at når jeg indsætter noget tekst uden at lave <code></code>
så fungere det fint.

men så snart jeg bruger
<code>
<?php
echo 'dette er en test';
?>
</code>
så fejler den. men spørgsmålet er hvorfor den fejler. hvad er det den ikke kan finde ud af? Jeg har prøvet at oprette nogle BBcodes men det virker heller ikke. der for jeg den samme fejl som den jeg skrev før.

nu hvor jeg sidder og tester det. det er hvergang jeg sætter noget imellem <code></code> taggene at den fejler.

for hvis jeg laver dem uden noget tekst imellem så gemmer den fint i tabellen
Avatar billede delphiuser Mester
04. marts 2015 - 15:32 #3
det der er problemet er at den ikke acceptere at jeg skriver en kildekode i min form og vil indsætte den i min tabel. Den vil ikke acceptere det lige meget hvad jeg har prøvet. hvad skal jeg gøre for at den vil acceptere en kildekode i min tabel?
Avatar billede olsensweb.dk Ekspert
04. marts 2015 - 18:29 #4
>det der er problemet er at den ikke acceptere at jeg skriver en kildekode i min form og vil indsætte den i min tabel.
nu er det heller ikke god skik at ligge HTML i databasen, men har du overvejet at incode dit input før du ligger det i databasen ??, og så decoder det når du udlæser igen
incode http://php.net/htmlentities
decode http://php.net/manual/en/function.html-entity-decode.php


prøv (utested)

if (isset($_POST['ansforum'])) {
    $afid = $_POST['afid'];
    $auserid = $_POST['auserid'];
    $answerdate = $_POST['answerdate'];
    $answertext = htmlentities($_POST['answertext']);
    $sql = "insert into answers (afid, auserid, answerdate, answertext) values('$afid', '$auserid', '$answerdate', '$answertext')";
    mysql_query($sql) or die(mysql_error());
    header("location:java script://history.go(-1)");
}


virker dette ??
Avatar billede delphiuser Mester
06. marts 2015 - 00:34 #5
Nej det virker ikke. jeg bliver ved med at få den samme fejl. det er til at blive skør af
Avatar billede delphiuser Mester
04. august 2015 - 23:57 #6
ronols læg et svar og du skal få point for din hjælp
Avatar billede olsensweb.dk Ekspert
06. august 2015 - 11:01 #7
svar
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

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