hvorfor viser den <br>
Hej eksperterJeg sidder og er i gang med at lave et lille system til min side hvor jeg gerne vil bruge BBCode tags. Men syntes absolut ikke at det virker efter min hensigt...
Problem stilling.
-Når jeg uploader et indlæg viser den <br> kode i indlægget. skal den helst ikke.
-når jeg bruger [code][/code] tag skulle den gerne lave en box med min kode i.
-Jeg vil gerne kunne bruge alle tegn i min textarea. men som det køre nu kan jeg bruge " når jeg skriver en kode og ikke ' hvilket genere mig en hel del.
Her kommer kommer min uploadform med upload script.
function addquestion() {
?>
<table border="0" cellpadding="0" cellspacing="0" width="750" align="center">
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="forum_user_id" value="<?php echo $_SESSION['user_id']; ?>">
<input type="hidden" name="forum_date" value="<?php echo date("d-m-Y"); ?>">
<tr>
<th colspan="3">Opret Spørgsmål</th>
</tr>
<tr>
<td width="140" height="20">Brugernavn</td>
<td width="10" height="20" align="center">:</td>
<td width="600" height="20"><input type="text" name="forum_user" value="<?php echo $_SESSION['username']; ?>" class="input"></td>
</tr>
<tr>
<td width="140" height="20">Overskrift</td>
<td width="10" height="20" align="center">:</td>
<td width="600" height="20"><input type="text" name="forum_title" class="input"></td>
</tr>
<tr>
<td width="140" height="20">Kategori</td>
<td width="10" height="20" align="center">:</td>
<td width="600" height="20"><select name="forum_cat" class="input">
<?php
$sql = "select * from categories order by cat_title";
$list = mysql_query($sql);
if(mysql_num_rows($list)) {
while($row = mysql_fetch_assoc($list)) {
$title = $row['cat_title'];
$id = $row['cat_id'];
echo '<option value="'.$id.'">'.$title.'</option>';
}
}
?>
</select></td>
</tr>
<tr>
<td width="140" height="20">Antal Point</td>
<td width="10" height="20" align="center">:</td>
<td width="600" height="20"><input type="text" name="forum_points" class="input"></td>
</tr>
<tr>
<td colspan="3" height="20">Beskrivelse</td>
</tr>
<tr>
<td colspan="3" height="200"><textarea name="forum_desc" class="desc"></textarea></td>
</tr>
<tr>
<td colspan="2" height="20"><input type="submit" name="addquest" value="Opret Spørgsmål"></td>
<td width="600" height="20"><input type="reset" value="Fortryd"></td>
</tr>
</form>
</table>
<?php
if(isset($_POST['addquest'])) {
// trækker point fra bruger med det samme
$forum_points = $_POST['forum_points'];
$forum_user = $_POST['forum_user'];
$forum_title = $_POST['forum_title'];
$forum_cat = $_POST['forum_cat'];
$forum_desc = nl2br($_POST['forum_desc']);
$forum_user_id = $_POST['forum_user_id'];
$forum_date = $_POST['forum_date'];
$sql = "select point_antal from users where user_id='".$_SESSION['user_id']."'";
$point = mysql_query($sql);
if(mysql_num_rows($point)) {
while($row = mysql_fetch_assoc($point)) {
$old_point = $row['point_antal'];
$saldo = $old_point - $forum_points;
mysql_query("update users set point_antal='$saldo' where user_id='".$_SESSION['user_id']."'");
}
}
$sql1 = "insert into forum(forum_title, forum_desc, forum_date, forum_user, forum_points, forum_cat, forum_user_id) values('$forum_title', '$forum_desc', '$forum_date', '$forum_user', '$forum_points', '$forum_cat', '$forum_user_id')";
mysql_query($sql1) or die(mysql_error());
echo '<p class="home">Du har nu oprettet spørgsmålet<br><b>'.$forum_title.'</b>';
}
}
Så langt så godt. Så her jeg prøvet at lave et lille BBCode tag function. den ser så sådan her ud.
function BBCode($string) {
$string = htmlentities($string);
$search = array(
'@\[(?i)code class="code"\](.*?)\[/(?i)code\]@si',
'@\[(?i)php\](.*?)\[/(?i)php\]@si',
'@\[(?i)css\](.*?)\[/(?i)css\]@si',
'@\[(?i)asp\](.*?)\[/(?i)asp\]@si',
'@\[(?i)script\](.*?)\[/(?i)script\]@si'
);
$replace = array(
'<code>\\1</code>',
'<php>\\1</php>',
'<css>\\1</css>',
'<asp>\\1</asp>',
'<script>\\1</script>'
);
return preg_replace($search , $replace, $string);
}
Om det virker efter hensigten nej. For efter hensigten skal dan lave en box til min kode. så den er særskilt fra resten af teksten. men lige nu kan jeg se min kode men som sagt ikke efter hensigten.
her kommer så den funktion jeg bruger til at hente hele indlægget ud med.
function show_quest() {
?>
<table border="0" cellpadding="0" cellspacing="0" width="750" align="center">
<?php
if($_GET['qid']) {
$qid = $_GET['qid'];
$sql = "select * from forum where forum_id='$qid'";
$show = mysql_query($sql);
if(mysql_num_rows($show)) {
while($row = mysql_fetch_assoc($show)) {
$title = $row['forum_title'];
$dato = $row['forum_date'];
$user = $row['forum_user'];
$point = $row['forum_points'];
$desc = $row['forum_desc'];
?>
<tr>
<th><?php echo $title;?></th>
</tr>
<tr>
<td><?php echo $dato . ' ' . $user . ' ' . $point; ?></td>
</tr>
<tr>
<td><?php echo nl2br(BBCode($desc)); ?></td>
</tr>
<?php
}
}
}
?>
</table>
<?php
}
Som i kan se så kalder jeg en BBCode function frem i den linie hvor selve indlægget bliver hentet frem. Her kommer så hvordan mit output ser ud.
-----------------------------------------------------------------
<br />
Dette er en test.
<?php<br />
echo "hello world";<br />
?>
<br />
Lad os se om det virker.
-----------------------------------------------------------------
Som i kan se virker det ikke efter hensigten. så jeg håber i kan hjælpe mig. På forhånd tak for hjælpen.
Delphiuser