Nieuwssysteem.
Ik ben momenteel bezig aan een eigen nieuwssysteem. Nu zit ik bij een bericht posten. Nu zit ik met het volgende probleem. Ik wil dus een bericht invoeren na een trim en een real_escape_string. Nu, als ik dat bericht laat tonen op de site ziet het eruit als volgt
wat op hetzelfde neerkomt als
Nu voegt hij niet het eerste maar het 2de in de database. Hoe komt dit? En hoe komt hetdan dat dat op mijn site dan weer als 1 regel wordt geplaatst? Dit is trouwens mijn db
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
CREATE TABLE IF NOT EXISTS `news` (
`id` int(3) NOT NULL auto_increment,
`topic` varchar(255) default NULL,
`message` longtext,
`date` varchar(11) default NULL,
`time` time default NULL,
`poster` varchar(100) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
`id` int(3) NOT NULL auto_increment,
`topic` varchar(255) default NULL,
`message` longtext,
`date` varchar(11) default NULL,
`time` time default NULL,
`poster` varchar(100) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
Dit is trouwens de opbouw voor het maken van een bericht
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?
// Menu Boven
echo '<b>Welkom '.$username.':</b> <a href="./">Overzicht</a> - <a href="./?action=logout">Loguit</a> - <a href="./?action=post">Post een bericht</a> - <a href="./?action=edit">Een bericht bewerken</a><br><br>';
// We gaan eerst kijken of er op de knop is gedrukt
if(isset($_POST['zt_sub_post'])) {
// Variable's Maken
$ms_topic = $_POST['topic'];
$ms_messa = $_POST['message'];
$ms_screen = $_POST['screen'];
$ms_date = date('d-m-Y');
$ms_time = date('H:i:s');
// Controle van velden
if (trim($ms_topic == "")) {
echo 'U hebt geen onderwerp ingevuld!<br><br><b>Ga terug</b>';
} elseif (trim($ms_messa == "")) {
echo 'U hebt geen bericht ingevuld!<br><br><b>Ga terug</b>';
} else {
// Spaties omzetten naar een teken
$ms_messa_end = trim($ms_messa);
$ms_messa_end = mysql_real_escape_string($ms_messa_end);
// upload database
$con = mysql_query("INSERT INTO news (topic, message, date, time, poster) VALUES ('".$ms_topic."', '".$ms_messa_end."', '".$ms_date."', '".$ms_time."', '".$ms_screen."')");
echo '<meta http-equiv="refresh" content="0;URL=./" />';
echo 'Uw bericht is gepost!<br>U wordt doorgeschakeld';
}
} else {
// Maken van Layout
echo '<form method="POST" action="'.$_SERVER['PHP_SELF'].'?action=post">';
echo '<font size="2" color="red"><b>Een nieuw berichtje maken</b></font><br>';
echo '<table border="0" cellpadding="0" cellspacing="5">';
echo '<tr>';
echo '<td><b>Onderwerp:</b> </td>';
echo '<td><INPUT type="text" name="topic" size="50"></td>';
echo '</tr>';
echo '<tr>';
echo '<td align="top" valign="top"><b>Bericht:</b> </td>';
echo '<td><TEXTAREA cols="50" rows="6" name="message"></textarea></td>';
echo '</tr>';
echo '</table>';
echo '<input type="submit" value="Verzenden" name="zt_sub_post">';
echo '<input type="reset" value="Wis Velden">';
echo '<input type="hidden" value="'.$_SESSION['log_zuta_suc_screen'].'" name="screen">';
echo '</form>';
}
// Menu onder
echo '<br><br>';
echo '<b>Menu:</b> <a href="./">Overzicht</a> - <a href="./?action=logout">Loguit</a> - <a href="./?action=post">Post een bericht</a> - <a href="./?action=edit">Een bericht bewerken</a>';
?>
// Menu Boven
echo '<b>Welkom '.$username.':</b> <a href="./">Overzicht</a> - <a href="./?action=logout">Loguit</a> - <a href="./?action=post">Post een bericht</a> - <a href="./?action=edit">Een bericht bewerken</a><br><br>';
// We gaan eerst kijken of er op de knop is gedrukt
if(isset($_POST['zt_sub_post'])) {
// Variable's Maken
$ms_topic = $_POST['topic'];
$ms_messa = $_POST['message'];
$ms_screen = $_POST['screen'];
$ms_date = date('d-m-Y');
$ms_time = date('H:i:s');
// Controle van velden
if (trim($ms_topic == "")) {
echo 'U hebt geen onderwerp ingevuld!<br><br><b>Ga terug</b>';
} elseif (trim($ms_messa == "")) {
echo 'U hebt geen bericht ingevuld!<br><br><b>Ga terug</b>';
} else {
// Spaties omzetten naar een teken
$ms_messa_end = trim($ms_messa);
$ms_messa_end = mysql_real_escape_string($ms_messa_end);
// upload database
$con = mysql_query("INSERT INTO news (topic, message, date, time, poster) VALUES ('".$ms_topic."', '".$ms_messa_end."', '".$ms_date."', '".$ms_time."', '".$ms_screen."')");
echo '<meta http-equiv="refresh" content="0;URL=./" />';
echo 'Uw bericht is gepost!<br>U wordt doorgeschakeld';
}
} else {
// Maken van Layout
echo '<form method="POST" action="'.$_SERVER['PHP_SELF'].'?action=post">';
echo '<font size="2" color="red"><b>Een nieuw berichtje maken</b></font><br>';
echo '<table border="0" cellpadding="0" cellspacing="5">';
echo '<tr>';
echo '<td><b>Onderwerp:</b> </td>';
echo '<td><INPUT type="text" name="topic" size="50"></td>';
echo '</tr>';
echo '<tr>';
echo '<td align="top" valign="top"><b>Bericht:</b> </td>';
echo '<td><TEXTAREA cols="50" rows="6" name="message"></textarea></td>';
echo '</tr>';
echo '</table>';
echo '<input type="submit" value="Verzenden" name="zt_sub_post">';
echo '<input type="reset" value="Wis Velden">';
echo '<input type="hidden" value="'.$_SESSION['log_zuta_suc_screen'].'" name="screen">';
echo '</form>';
}
// Menu onder
echo '<br><br>';
echo '<b>Menu:</b> <a href="./">Overzicht</a> - <a href="./?action=logout">Loguit</a> - <a href="./?action=post">Post een bericht</a> - <a href="./?action=edit">Een bericht bewerken</a>';
?>
Een pagina voor het nieuws weer te geven heb ik nog niet.
nl2br gebruiken?
ps: ik gebruik nog steeds dezelfde code als hierboven! Behalve dan de real_escape_string
En als hij maar een gedeelte invoert moet je even controleren of de DB op LONGTEXT staat en niet toevalig op VARCHAR.
Ps. zet dit even bovenaan je scipt:
Tip:
Code (php)
Is overbodige code. De ene variabele kopiëren in de andere zonder er iets mee te doen is tijd/geheugenverlies. Je manier om te controleren of het formulier verzonden is kan ook beter. De datum en de tijd kun je automatisch laten invullen door MySQL. Gebruik daarvoor een DATETIME veld. Jouw datumformaat (d-m-Y) daar kan een database helemaal niets mee. Niet rekenen, niet sorteren, noppes. Beter zo (code niet getest):
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
29
30
31
32
33
34
35
36
37
38
39
40
41
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
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
ini_set ('display_errors', 1);
error_reporting (E_ALL | E_STRICT);
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// hier checks uitvoeren of ze wel iets ingevuld hebben
// dan INSERTen in je DB
$sql = "
INSERT INTO tabelnaam
(
topic,
message,
screen,
datumtijd
)
VALUES
(
'" . mysql_real_escape_string ($_POST['topic']) . "',
'" . mysql_real_escape_string ($_POST['message']) . "',
'" . mysql_real_escape_string ($_POST['screen']) . "',
NOW()
)
";
if (mysql_query ($sql)) {
if (mysql_affected_rows ()) {
$msg = '<p class="msg">Record toegevoegd</p>';
}
else {
$msg = '<p class="err">Record toevoegen mislukt</p>';
}
}
else {
$msg = '<p class="err">INSERT query mislukt</p>';
}
}
// en dan verderop in je script, op een plek waar je errors en meldingen wilt laten zien:
if (isset ($msg)) {
echo $msg;
}
?>
ini_set ('display_errors', 1);
error_reporting (E_ALL | E_STRICT);
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// hier checks uitvoeren of ze wel iets ingevuld hebben
// dan INSERTen in je DB
$sql = "
INSERT INTO tabelnaam
(
topic,
message,
screen,
datumtijd
)
VALUES
(
'" . mysql_real_escape_string ($_POST['topic']) . "',
'" . mysql_real_escape_string ($_POST['message']) . "',
'" . mysql_real_escape_string ($_POST['screen']) . "',
NOW()
)
";
if (mysql_query ($sql)) {
if (mysql_affected_rows ()) {
$msg = '<p class="msg">Record toegevoegd</p>';
}
else {
$msg = '<p class="err">Record toevoegen mislukt</p>';
}
}
else {
$msg = '<p class="err">INSERT query mislukt</p>';
}
}
// en dan verderop in je script, op een plek waar je errors en meldingen wilt laten zien:
if (isset ($msg)) {
echo $msg;
}
?>
Hey thx jan. Nu werkt het perfect met deze code ;)