Gastenboek reacties in een pagina verwerken.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Richard Hansma

Richard Hansma

15/02/2012 12:51:28
Quote Anchor link
Beste PHP-ers,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<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">&copy; All rights reserved.</div>
</body>
</html>


CSS:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#gastenboek {
width : 50%;
height : auto;
border : 0 solid #000;
border-width : 1px;
float : left;
position : relative;
left : 5%;
}
#footer {
width : auto;
height : auto;
margin : 0 auto;
border : 0 solid #000;
border-width : 0px;
border-top : none;
}
 
PHP hulp

PHP hulp

21/09/2021 19:19:13
 
- SanThe -

- SanThe -

15/02/2012 12:59:31
Quote Anchor link
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.
 
Richard Hansma

Richard Hansma

15/02/2012 13:02:33
Quote Anchor link
- SanThe - op 15/02/2012 12:59:31:
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<div id="footer" align="center">&copy; All rights reserved.</div>

Dit staat onder de PHP closing tag.
 
Reshad F

Reshad F

15/02/2012 13:04:48
Quote Anchor link
divjes tellen?
 
Erwin H

Erwin H

15/02/2012 13:05:05
Quote Anchor link
Hier gaat het mis denk ik:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>"
;
}

?>

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?
 
- SanThe -

- SanThe -

15/02/2012 13:06:11
Quote Anchor link
Kijk eens of in de broncode alles goed staat.
Zo ja, dan zal je de CSS moeten aanpasen.
 
Richard Hansma

Richard Hansma

15/02/2012 13:10:01
Quote Anchor link
Reshadd farid op 15/02/2012 13:04:48:
divjes tellen?


Doel je op
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
</div></div></div>

?

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>"
;
}

?>

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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.