comment loopt buiten TD
Hallo,
ik heb net een stukje geschreven dat de user de mogelijkheid biedt om een comment te plaatsen over een bepaalde file.
Dit komt in de database terecht. Hiervoor gebruik ik ook de nl2br() functie om de linebreaks te behouden.
Nu echt als de user een hele lange zin ingeeft, en ik roep deze daarna op in mijn tabel, dan blijft deze tabel super ver doorlopen tot buiten het scherm. Ik heb nu ook al <table style="table-layout:fixed"> gebruikt, en nu blijft de 'layout' van de tabel staan maar loopt de tekst hier gewoon buiten. Hoe kan ik dit verhelpen dat er dus automatisch een nieuwe lijn gestart wordt als de 'comment' niet binnen de <td> past.
hier kan de user een comment schrijven:
zo haal ik de info op en stop het in de database:
zo laat ik de comments zien:
ik heb net een stukje geschreven dat de user de mogelijkheid biedt om een comment te plaatsen over een bepaalde file.
Dit komt in de database terecht. Hiervoor gebruik ik ook de nl2br() functie om de linebreaks te behouden.
Nu echt als de user een hele lange zin ingeeft, en ik roep deze daarna op in mijn tabel, dan blijft deze tabel super ver doorlopen tot buiten het scherm. Ik heb nu ook al <table style="table-layout:fixed"> gebruikt, en nu blijft de 'layout' van de tabel staan maar loopt de tekst hier gewoon buiten. Hoe kan ik dit verhelpen dat er dus automatisch een nieuwe lijn gestart wordt als de 'comment' niet binnen de <td> past.
hier kan de user een comment schrijven:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
<form id="contactForm" method="POST" action="file.php?id=<?php echo $id; ?>">
<table id="contactForm"> <tr><td><textarea name="comment" rows="2"></textarea></td></tr>
<tr><td><input type="submit" name="reageer" value="Reageer">
</table>
</form>
?>
<form id="contactForm" method="POST" action="file.php?id=<?php echo $id; ?>">
<table id="contactForm"> <tr><td><textarea name="comment" rows="2"></textarea></td></tr>
<tr><td><input type="submit" name="reageer" value="Reageer">
</table>
</form>
?>
zo haal ik de info op en stop het in de database:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
if (isset($_POST['reageer']))
{
$comment = nl2br($_POST['comment']);
$dat = date('y-m-d');
mysql_query("INSERT INTO comments (id, username, comment, file_id, date) VALUES (NULL, '$username', '$comment', '$id', '$dat')");
}
?>
if (isset($_POST['reageer']))
{
$comment = nl2br($_POST['comment']);
$dat = date('y-m-d');
mysql_query("INSERT INTO comments (id, username, comment, file_id, date) VALUES (NULL, '$username', '$comment', '$id', '$dat')");
}
?>
zo laat ik de comments zien:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$result = mysql_query("SELECT * FROM comments WHERE file_id = '$id' ORDER BY id DESC");
while($row = mysql_fetch_array($result))
{
echo' <table id="courses" style="table-layout:fixed">
<tr class="alt"><th width="18%">Door: '.$row['username'].'</td>
<td class="alt"rowspan="2">'.$row['comment'].'</td></tr>
<tr class="alt"><th>Op: '.$row['date'].'</td></tr></table>';
}
?>
$result = mysql_query("SELECT * FROM comments WHERE file_id = '$id' ORDER BY id DESC");
while($row = mysql_fetch_array($result))
{
echo' <table id="courses" style="table-layout:fixed">
<tr class="alt"><th width="18%">Door: '.$row['username'].'</td>
<td class="alt"rowspan="2">'.$row['comment'].'</td></tr>
<tr class="alt"><th>Op: '.$row['date'].'</td></tr></table>';
}
?>
Gewijzigd op 27/07/2012 16:23:30 door Sam H
als ik vragen mag.. waarom gebruik je tabellen om tekst weer te geven?
Ik vind het een makkelijke manier van werken, links in 2 kolommetjes Naam en Datum, rechts de tekst
Gewijzigd op 27/07/2012 16:23:38 door Sam H
Kijk eens naar <label>.
Weet dat je query heel lek is.
Type voor de fijn eens dit in:
Welke CSS heb je op je td.alt? Daar moet geen overflow: hidden; op staan.
Weet dat je query heel lek is.
Type voor de fijn eens dit in:
Welke CSS heb je op je td.alt? Daar moet geen overflow: hidden; op staan.
makkelijk is niet correct... ( just sayin' )
gebruik fetch_assoc ipv array..
gebruik geen * wildcards..
simpel gezegd.. : http://www.phphulp.nl/php/tutorial/overig/beginnersfouten-tegengaan/763/
gebruik fetch_assoc ipv array..
gebruik geen * wildcards..
simpel gezegd.. : http://www.phphulp.nl/php/tutorial/overig/beginnersfouten-tegengaan/763/
Ah oke had ik geen idee van, waarom is het dan zo lek?
en dit is de css:
en dit is de css:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#courses
{
font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
width:100%;
border-collapse:collapse;
margin: 20px 20px 10px 20px;
}
#courses td, #courses th
{
font-size:1em;
border:0px solid #6DCDF1;
padding:3px 7px 2px 7px;
}
#courses th
{
font-size:1.1em;
text-align:left;
padding-top:5px;
padding-bottom:4px;
background-color:#ea4c88;
color:#ffffff;
}
#courses tr.alt td
{
color:#000000;
background-color:#BDE3F1;
}
{
font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
width:100%;
border-collapse:collapse;
margin: 20px 20px 10px 20px;
}
#courses td, #courses th
{
font-size:1em;
border:0px solid #6DCDF1;
padding:3px 7px 2px 7px;
}
#courses th
{
font-size:1.1em;
text-align:left;
padding-top:5px;
padding-bottom:4px;
background-color:#ea4c88;
color:#ffffff;
}
#courses tr.alt td
{
color:#000000;
background-color:#BDE3F1;
}
Gewijzigd op 27/07/2012 17:21:27 door Sam H
Quote:
Ah oke had ik geen idee van, waarom is het dan zo lek?
Omdat je nu een sql injection kan uitvoeren..
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
mysql_query("INSERT INTO comments (id,
username,
comment,
file_id, date
)
VALUES (NULL,
'".mysql_real_escape_string($username)."',
'".mysql_real_escape_string($comment)."',
'".mysql_real_escape_string($id)."',
'".mysql_real_escape_string($dat)."'
)
");
?>
mysql_query("INSERT INTO comments (id,
username,
comment,
file_id, date
)
VALUES (NULL,
'".mysql_real_escape_string($username)."',
'".mysql_real_escape_string($comment)."',
'".mysql_real_escape_string($id)."',
'".mysql_real_escape_string($dat)."'
)
");
?>
Code (php)
1
2
3
2
3
<?php
$result = mysql_query("SELECT * FROM comments WHERE file_id = '".mysql_real_escape_string($id)."' ORDER BY id DESC");
?>
$result = mysql_query("SELECT * FROM comments WHERE file_id = '".mysql_real_escape_string($id)."' ORDER BY id DESC");
?>
Ah ok omdat ik tekens als ' kan ingeven, kan ik de comment dan ook niet best beveiligen met htmlspecialchars() ?
Ik geef je toch een correcte oplossing erbij waardoor sql injection niet meer mogelijk is? en ja je mag htmlspecialchars() er nog omheen bouwen. :)
Ja daar zei ik toch niks slecht van? :D
Bedankt trouwens voor je hulp!
Bedankt trouwens voor je hulp!



