Gastenboek reacties in een pagina verwerken.
Ik zit met een probleem waar ik niet uit kom. Ik ben bezig met een gastenboek, waarbij de reacties onderaan de pagina worden weergegeven. Doormiddel van m'n query te echo'en wil ik het in een divje stoppen. Dit werkt, alleen alles wat onder m'n php staat, neemt ie mee in dat divje. Terwijl dat er duidelijk buiten staat. Nu is mijn vraag, kan ik dit via PHP anders oplossen of is dit alleen op te lossen via CSS? Hier is de code, dat maakt het wat makkelijker om naar te kijken.
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<div id="gastenboek">
<form method="post" action="">
<table border="1">
<td>Je naam:</td>
<td><input type="text" name="naam"></td>
<tr><td>Typ hier je bericht:</td>
<td><textarea name="boodschap" rows="5" cols="40"></textarea></td></tr>
<tr><td><td><input type="submit" value="Verstuur" name="verstuur"></td></td></tr>
</table>
</form>
<?php
// Als er op er verstuur gedrukt wordt, gaat dit in werking
// Als er iets mis gaat wordt hier de error aangeroepen
if (isset($_POST['verstuur'])) {
$naam = htmlspecialchars($_POST['naam']);
$boodschap = htmlspecialchars($_POST['boodschap']);
$error = '';
if (strlen($naam) < 2)
{
$error .= '- U heeft geen naam ingevuld.\n';
}
if (strlen($boodschap) < 15)
{
$error .= '- Uw bericht dient minimaal 15 tekens lang te zijn.\n';
}
if ($error != '')
{
echo '<script type=\'text/javascript\'>';
echo 'alert("Uw bericht is niet verzonden, vanwege de volgende fout(en):\n\n'.$error.'");';
echo '</script>';
}
else {
// Als dat niet het geval is, wordt er hier verbinding met de database gemaakt
mysql_connect("localhost", "root", "") or die("Failure to communicatie with database");
mysql_select_db("voorbeeld");
$i_naam = AddSlashes($_POST['naam']);
$i_boodschap = AddSlashes($_POST['boodschap']);
$datum = date('Y-m-d H:i:s');
$naam = trim($i_naam);
$boodschap = trim($i_boodschap);
// Hier worden de variabelen in de database gezet
$query = "INSERT INTO gastenboek (naam, boodschap, datum)
VALUES('$naam','$boodschap', '$datum')
";
//Hier wordt aangegeven of het gelukt is of niet
$result = mysql_query($query);
if (mysql_affected_rows() == 1) {
echo '<P>Je bericht is opgeslagen.</P>';
} else {
error_log(mysql_error());
echo '<P>Tijdens het opslaan is er iets misgegaan.</P>';
}
}
}
// Hier wordt de database aangeroepen
function dC() {
$dbUser = "root";
$dbPass = "";
$dbName = "VOORBEELD";
$dbHost = "localhost";
if(!($link = mysql_connect($dbHost,$dbUser,$dbPass))){
error_log(mysql_error(), 3,"/tmp/phplog.err");
}
if(!mysql_select_db($dbName,$link)) {
error_log(mysql_error(), 3,"/tmp/phplog.err");
}
}
dC();
// Hier worden dingen uit de database opgeroepen
$query = "SELECT naam, boodschap, DATE_FORMAT(datum, '%d-%m-%Y %H:%i:%s') AS nieuwe_datum FROM gastenboek ORDER BY ID DESC";
// Hier wordt het geplaatst en als dat niet lukt, een error gegeven
$result = mysql_query($query) or die("Controleer uw query!!!");
while ($name_row = mysql_fetch_row($result)){
echo "<table border='1' width='25%' align='center'><tr><td colspan='1'>$name_row[0]</td><td colspan='1'>$name_row[2]</td></tr><td colspan='2' rowspan='2'><b>$name_row[1]</b></td><BR>";
}
?>
</div></div></div>
<div id="footer" align="center">© All rights reserved.</div>
</body>
</html>
<form method="post" action="">
<table border="1">
<td>Je naam:</td>
<td><input type="text" name="naam"></td>
<tr><td>Typ hier je bericht:</td>
<td><textarea name="boodschap" rows="5" cols="40"></textarea></td></tr>
<tr><td><td><input type="submit" value="Verstuur" name="verstuur"></td></td></tr>
</table>
</form>
<?php
// Als er op er verstuur gedrukt wordt, gaat dit in werking
// Als er iets mis gaat wordt hier de error aangeroepen
if (isset($_POST['verstuur'])) {
$naam = htmlspecialchars($_POST['naam']);
$boodschap = htmlspecialchars($_POST['boodschap']);
$error = '';
if (strlen($naam) < 2)
{
$error .= '- U heeft geen naam ingevuld.\n';
}
if (strlen($boodschap) < 15)
{
$error .= '- Uw bericht dient minimaal 15 tekens lang te zijn.\n';
}
if ($error != '')
{
echo '<script type=\'text/javascript\'>';
echo 'alert("Uw bericht is niet verzonden, vanwege de volgende fout(en):\n\n'.$error.'");';
echo '</script>';
}
else {
// Als dat niet het geval is, wordt er hier verbinding met de database gemaakt
mysql_connect("localhost", "root", "") or die("Failure to communicatie with database");
mysql_select_db("voorbeeld");
$i_naam = AddSlashes($_POST['naam']);
$i_boodschap = AddSlashes($_POST['boodschap']);
$datum = date('Y-m-d H:i:s');
$naam = trim($i_naam);
$boodschap = trim($i_boodschap);
// Hier worden de variabelen in de database gezet
$query = "INSERT INTO gastenboek (naam, boodschap, datum)
VALUES('$naam','$boodschap', '$datum')
";
//Hier wordt aangegeven of het gelukt is of niet
$result = mysql_query($query);
if (mysql_affected_rows() == 1) {
echo '<P>Je bericht is opgeslagen.</P>';
} else {
error_log(mysql_error());
echo '<P>Tijdens het opslaan is er iets misgegaan.</P>';
}
}
}
// Hier wordt de database aangeroepen
function dC() {
$dbUser = "root";
$dbPass = "";
$dbName = "VOORBEELD";
$dbHost = "localhost";
if(!($link = mysql_connect($dbHost,$dbUser,$dbPass))){
error_log(mysql_error(), 3,"/tmp/phplog.err");
}
if(!mysql_select_db($dbName,$link)) {
error_log(mysql_error(), 3,"/tmp/phplog.err");
}
}
dC();
// Hier worden dingen uit de database opgeroepen
$query = "SELECT naam, boodschap, DATE_FORMAT(datum, '%d-%m-%Y %H:%i:%s') AS nieuwe_datum FROM gastenboek ORDER BY ID DESC";
// Hier wordt het geplaatst en als dat niet lukt, een error gegeven
$result = mysql_query($query) or die("Controleer uw query!!!");
while ($name_row = mysql_fetch_row($result)){
echo "<table border='1' width='25%' align='center'><tr><td colspan='1'>$name_row[0]</td><td colspan='1'>$name_row[2]</td></tr><td colspan='2' rowspan='2'><b>$name_row[1]</b></td><BR>";
}
?>
</div></div></div>
<div id="footer" align="center">© All rights reserved.</div>
</body>
</html>
CSS:
Richard Hansma op 15/02/2012 12:51:28:
alleen alles wat onder m'n php staat, neemt ie mee in dat divje
Dit versta ik niet.
- SanThe - op 15/02/2012 12:59:31:
Dit versta ik niet.
Richard Hansma op 15/02/2012 12:51:28:
alleen alles wat onder m'n php staat, neemt ie mee in dat divje
Dit versta ik niet.
In dit geval doel ik op:
Dit staat onder de PHP closing tag.
divjes tellen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
while ($name_row = mysql_fetch_row($result)){
echo "<table border='1' width='25%' align='center'>
<tr>
<td colspan='1'>$name_row[0]</td>
<td colspan='1'>$name_row[2]</td>
</tr>
<td colspan='2' rowspan='2'><b>$name_row[1]</b></td>
<BR>";
}
?>
while ($name_row = mysql_fetch_row($result)){
echo "<table border='1' width='25%' align='center'>
<tr>
<td colspan='1'>$name_row[0]</td>
<td colspan='1'>$name_row[2]</td>
</tr>
<td colspan='2' rowspan='2'><b>$name_row[1]</b></td>
<BR>";
}
?>
De HTML die je uitspuugt klopt gewoon niet.
1 - je maakt een table aan voor elk record, maar sluit geen enkele table af (ik gok dat je maar een table wilt, dan moet je die aanmaken VOOR je de while loop in gaat, en afsluiten NA de while loop).
2 - Je maakt voor elk record 1 row aan met 2 cellen en dan nog 1 cell.... maar die staat niet in een row.
3 - een BR ook nog? wat doet die daar nog?
Zo ja, dan zal je de CSS moeten aanpasen.
Reshadd farid op 15/02/2012 13:04:48:
divjes tellen?
Doel je op
?
Dat is om m'n container div en de info div, waar ik in dit geval het gastenboek divje in open, te sluiten. En uiteraard sluit ik het gastenboek div.
Toevoeging op 15/02/2012 13:13:50:
Erwin H op 15/02/2012 13:05:05:
Hier gaat het mis denk ik:
De HTML die je uitspuugt klopt gewoon niet.
1 - je maakt een table aan voor elk record, maar sluit geen enkele table af (ik gok dat je maar een table wilt, dan moet je die aanmaken VOOR je de while loop in gaat, en afsluiten NA de while loop).
2 - Je maakt voor elk record 1 row aan met 2 cellen en dan nog 1 cell.... maar die staat niet in een row.
3 - een BR ook nog? wat doet die daar nog?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
while ($name_row = mysql_fetch_row($result)){
echo "<table border='1' width='25%' align='center'>
<tr>
<td colspan='1'>$name_row[0]</td>
<td colspan='1'>$name_row[2]</td>
</tr>
<td colspan='2' rowspan='2'><b>$name_row[1]</b></td>
<BR>";
}
?>
while ($name_row = mysql_fetch_row($result)){
echo "<table border='1' width='25%' align='center'>
<tr>
<td colspan='1'>$name_row[0]</td>
<td colspan='1'>$name_row[2]</td>
</tr>
<td colspan='2' rowspan='2'><b>$name_row[1]</b></td>
<BR>";
}
?>
De HTML die je uitspuugt klopt gewoon niet.
1 - je maakt een table aan voor elk record, maar sluit geen enkele table af (ik gok dat je maar een table wilt, dan moet je die aanmaken VOOR je de while loop in gaat, en afsluiten NA de while loop).
2 - Je maakt voor elk record 1 row aan met 2 cellen en dan nog 1 cell.... maar die staat niet in een row.
3 - een BR ook nog? wat doet die daar nog?
Ik zal het gelijk proberen, vreemd dat ik niet gezien heb dat ik m'n table niet afsluit. Die 'BR' heb ik in mijn ogen vast nodig gehad, omdat ik m'n table niet goed voor elkaar heb. Alvast heel erg bedankt voor de hulp, iedereen.
Het is gelukt. Het lag gewoon aan het feit dat ik m'n table niet goed had afgesloten. Bedankt voor het wijzen daarop. Tot de volgende (onbenullige) vraag.
Gewijzigd op 15/02/2012 13:34:45 door Richard Hansma