login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Reactiesysteem

Offline avickum - 05/09/2009 19:33
Avatar van avickumNieuw lid IK heb een reactiesysteem script en een reactie ziet er zo uit:

Iemand schreef:

Maar ik wil graag dat het er zo uit ziet:

Iemand schreef op 05.09.2009 19:40

Dat er dus de datum en de tijd bij komt te staan van wanneer het is gepost, het lukt mij niet dus zou iemand dat willen maken? Dit is het script:


  1. <?
  2. if(empty($_GET['pagina']))
  3. header("location: ../../index.php?pagina=binnenplaats/binnenplaats");
  4.  
  5. beveiliging(4);
  6.  
  7. mysql_connect('...........');
  8. mysql_select_db('...............');
  9. $result = mysql_query('SELECT id FROM leden_binnenplaats_paginas '.
  10. 'WHERE url="'.
  11. mysql_escape_string($_SERVER['REQUEST_URI']).'";');
  12. if (mysql_num_rows($result)==1) {
  13. $row = mysql_fetch_array($result);
  14. $pagina_id = $row['id'];
  15. } else {
  16. mysql_query('INSERT INTO leden_binnenplaats_paginas SET url="'.
  17. $_SERVER['REQUEST_URI'].'";');
  18. $pagina_id = mysql_insert_id();
  19. }
  20. ?>
  21. <font face=\"Tahoma\"><b>Binnenplaats</b></font><br>
  22. <hr>
  23. <form method="post">
  24. <input type="hidden" name="naam" value="<?php echo "$list->gebruikersnaam"; ?> " />
  25. <input type="hidden" name="email" value="<?php echo "$list->status"; ?>" />
  26. Welkom in de Binnenplaats, hier kun je lekker kletsen met al je mede studenten, veel plezier, maar houd je aan de regels<br><br>
  27. <input maxlength="200" size="100" name="reactie" type="text">
  28. <input type="submit" value="Bericht Plaatsen">
  29. </p>
  30. </form><?
  31. if (isset($_POST['naam'])) { mysql_query('INSERT INTO leden_binnenplaats SET pagina="'.
  32. $pagina_id.'", naam="'.$_POST['naam'].
  33. '", email="'.$_POST['email'].'", '.
  34. 'reactie="'.$_POST['reactie'].'";');
  35. echo '<p>Je bericht is opgeslagen.</p> ';
  36. header("Location: http://avickum.nl/ledensysteem/index.php?pagina=binnenplaats/bericht");
  37. }
  38. ?>font face=\"Tahoma\"><b></b></font><br><?php
  39. $result = mysql_query('SELECT * FROM leden_binnenplaats WHERE pagina='.$pagina_id.' ORDER BY id DESC LIMIT 10');
  40. if (mysql_num_rows($result)==0) {
  41. echo 'Er zijn geen berichten in de Binnenplaats.<br><br>';
  42. } else {
  43. while ($row = mysql_fetch_array($result)) {
  44. // deze reactie weergeven
  45.  
  46. if ($row['email']== "Schoolhoofd")
  47. echo "<font color=\"#FF0000\"><b>".$row['naam']."</b></font> schreef: <hr> ".$row['reactie']."<br><br><br>";
  48.  
  49. if ($row['email']== "Pleinwachter")
  50. echo "<font color=\"#008800\"><b>".$row['naam']."</b></font> schreef: <hr> ".$row['reactie']."<br><br><br>";
  51.  
  52. if ($row['email']== "Terreinwachter")
  53. echo "<font color=\"#A08060\"><b>".$row['naam']."</b></font> schreef: <hr> ".$row['reactie']."<br><br><br>";
  54.  
  55. if ($row['email']== "Afdelingshoofd")
  56. echo "<font color=\"#00b2FF\"><b>".$row['naam']."</b></font> schreef: <hr> ".$row['reactie']."<br><br><br>";
  57.  
  58. if ($row['email']== "Automessage")
  59. echo "<font color=\"#FF0000\"><b>Automessage van Avickum:</b></font> ".$row['reactie']."<br><br><br>";
  60.  
  61. if ($row['email']== "Lid")
  62. echo "<b>".$row['naam']." </b> schreef: <hr> ".$row['reactie']."<br><br><br>";
  63.  
  64. }
  65. }
  66. ?>

20 antwoorden

Gesponsorde links
Offline NTS64 - 05/09/2009 20:00 (laatste wijziging 05/09/2009 20:05)
Avatar van NTS64 PHP gevorderde Je moet dan een extra veld maken in je database waarin je je datum(en tijd) kan in opslaan.
Maak dus een veld van het type datetime aan en sla dan bij het posten van een bericht daarin de huidige datum en tijd op.
  1. INSERT INTO berichten (datum) VALUES (NOW())

Bij het ophalen van je data kan je deze gegevens dan ook gewoon weergeven. Je kan de datum en tijd indien nodig naar believen formatteren mbv DATE_FORMAT
  1. SELECT DATE_FORMAT(datum, '%d-%m-%Y %T') as datum FROM berichten

http://dev.mysq...tions.html
Offline avickum - 05/09/2009 21:32
Avatar van avickum Nieuw lid Het lukt me niet =( Zou iemand het er voor me in kunnen monteren..?
Offline NTS64 - 06/09/2009 12:38
Avatar van NTS64 PHP gevorderde Neen. Zo werkt het hier niet.
Als je zegt wat er precies niet lukt kunnen we je wel verder helpen.
Offline Koen - 06/09/2009 12:42
Avatar van Koen PHP expert Met zo'n ingesteldheid ga je nooit ergens komen in de wereld van webdevelopment, als je er zelf geen moeite voor wil doen hoef je ook niet meer op dit forum te komen.

De reactie van Woedi bevat een prima uitleg en zou je, mits enige inspanning, volledig op moeten helpen.
Offline avickum - 06/09/2009 16:19 (laatste wijziging 06/09/2009 18:11)
Avatar van avickum Nieuw lid Dit:

  1. INSERT INTO berichten (datum) VALUES (NOW())


moet nu hier in verwerkt worden:

  1. <?
  2. if (isset($_POST['naam'])) { mysql_query('INSERT INTO leden_binnenplaats SET pagina="'.
  3. $pagina_id.'", naam="'.$_POST['naam'].
  4. '", email="'.$_POST['email'].'", '.
  5. 'reactie="'.$_POST['reactie'].'";');
  6. echo '<p>Je bericht is opgeslagen.</p> ';
  7. header("Location: http://avickum.nl/ledensysteem/index.php?pagina=binnenplaats/bericht");
  8. }
  9. ?>


maar hoe, ik krijg het maar niet voor elkaar..
Offline denniseik - 06/09/2009 18:21 (laatste wijziging 06/09/2009 18:23)
Avatar van denniseik Lid
  1. <?
  2. if (isset($_POST['naam'])) {
  3. mysql_query('INSERT INTO leden_binnenplaats (pagina, naam, email, reactie, datum) VALUES ('"$pagina_id"', 'enz', '"$datum"') ');
  4.  
  5. echo '<p>Je bericht is opgeslagen.</p> ';
  6. header("Location: http://avickum.nl/ledensysteem/index.php?pagina=binnenplaats/bericht");
  7. }
  8. ?>


Dit moet werken. Ik raad je aan om gewoon je eigen reactiesysteem te maken. Het is helemaal niet moeilijk en je leert er alleen maar van.
Offline avickum - 06/09/2009 18:34
Avatar van avickum Nieuw lid Ok, ik heb nu dit:

  1. <?
  2. if (isset($_POST['naam'])) {
  3. mysql_query('INSERT INTO leden_binnenplaats (pagina, naam, email, reactie, tijd) VALUES ('"$pagina_id"', '".$row['naam']."', '".$row['email']."', '".$row['reactie']."', '"$tijd"')');
  4.  
  5. echo '<p>Je bericht is opgeslagen.</p> ';
  6. header("Location: http://avickum.nl/ledensysteem/index.php?pagina=binnenplaats/bericht");
  7. }


Maar dan krijg ik deze error:

Parse error: syntax error, unexpected '"' in /home/vnzgposr/domains/avickum.nl/public_html/ledensysteem/paginas/binnenplaats/binnenplaats.php on line 46

en ik weet niet welke " of ' nou verkeerd is..
Offline Martijn - 06/09/2009 18:36
Avatar van Martijn Crew PHP gaat sowieso niet werken een header() werkt niet meer na output, en een echo is toch wel zeer duidelijk een output

je fout is dat je dit doet
' " $pagina " '

wat dit moet zijn

" '.$pagina.' "
twee fouten in 1 dus
Offline NTS64 - 06/09/2009 18:45
Avatar van NTS64 PHP gevorderde Zoals DeviourSoul al aangaf, houdt je variabelen buiten de quotes.
En waarom gebruik je een variabele $tijd?
De mysql functie MySQL.com: NOW() doet het even goed, zelfs sneller...
Offline avickum - 06/09/2009 18:56
Avatar van avickum Nieuw lid Nu krijg ik dit:

Parse error: syntax error, unexpected T_VARIABLE in /home/vnzgposr/domains/avickum.nl/public_html/ledensysteem/paginas/binnenplaats/binnenplaats.php on line 45

en zo heb ik het:

  1. <?
  2. if (isset($_POST['naam'])) {
  3. mysql_query('INSERT INTO leden_binnenplaats (pagina, naam, email, reactie, tijd) VALUES ("'$pagina_id'", "'.$row['naam'].'", "'.$row['email'].'", "'.$row['reactie'].'", "'.$tijd.'")');
  4.  
  5. echo '<p>Je bericht is opgeslagen.</p>';
  6. header("Location: http://avickum.nl/ledensysteem/index.php?pagina=binnenplaats/bericht");
  7. }
  8. ?>
Offline Martijn - 06/09/2009 18:59
Avatar van Martijn Crew PHP $pagina_id heeft nogsteeds geen punten, en nogsteeds heb je de single en double quotes verkeerd om. Je moet nauwkeuriger lezen ;)
Offline NTS64 - 06/09/2009 18:59
Avatar van NTS64 PHP gevorderde Je moet wel ALLE variabelen buiten de quotes houden, dus ook $pagina_id, dat wordt dan "'.$pagina_id."'
Offline avickum - 06/09/2009 19:08
Avatar van avickum Nieuw lid Ik heb nu dit:

  1. <?
  2. if (isset($_POST['naam'])) {
  3. mysql_query('INSERT INTO leden_binnenplaats (pagina, naam, email, reactie, tijd) VALUES ("'.$pagina_id.'", "'.$row['naam'].'", "'.$row['email'].'", "'.$row['reactie'].'", "'.$tijd.'")');
  4.  
  5. header("Location: http://avickum.nl/ledensysteem/index.php?pagina=binnenplaats/bericht");
  6. }
  7. ?>


Kheb geen errors maar mijn berichten verschijnen niet, en kan iemand nu duidelijk zeggen hoe het nou moet:

" ' ... ' " of ' " ... " '

want nu snap ik ut niet meer
Offline Martijn - 06/09/2009 19:32
Avatar van Martijn Crew PHP je doet
echo 'tekst tekst';
escapen doe je dus zo
echo 'tekst '.$var.' tekst';
maar om die var wil je nog quotes
echo 'tekst " '.$var.' " tekst'
Offline NTS64 - 06/09/2009 19:43
Avatar van NTS64 PHP gevorderde Je kan in php én mysql kiezen wat voor quotes je rond een string zet.
De functie PHP.net: mysql_query verwacht een string als parameter.
Je kan dus kiezen of je mysql_query(' ... ') of mysql_query(" ... ") doet.
Maar het is dus wel het ene of het andere ;)
Als je je query met single quotes omringt, gebruik je dus single quotes voor je php strings. Dan schieten er enkel nog de double quotes over voor mysql strings.

Je maakt ook best gebruik van PHP.net: mysql_error om mySQL te debuggen.

  1. <?php
  2. mysql_query('INSERT INTO leden_binnenplaats (pagina, naam, email, reactie, tijd) VALUES ("'.$pagina_id.'", "'.$row['naam'].'", "'.$row['email'].'", "'.$row['reactie'].'", NOW())') or die(mysql_error());
  3. ?>
Offline avickum - 06/09/2009 19:43
Avatar van avickum Nieuw lid De chat werkt alleen staat er niet bij wanneer et bericht is gepost..
Zo is het nu:

  1. <?
  2. /*
  3. ••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
  4. © Alle rechten voorbehouden - Arne De Muyter - http://www.phpscripting.be
  5. ••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
  6. */
  7.  
  8. if(empty($_GET['pagina']))
  9. header("location: ../../index.php?pagina=binnenplaats/binnenplaats");
  10.  
  11. beveiliging(4);
  12.  
  13. mysql_connect('.......','..............','.............');
  14. mysql_select_db('..................................');
  15. $result = mysql_query('SELECT id FROM leden_binnenplaats_paginas '.
  16. 'WHERE url="'.
  17. mysql_escape_string($_SERVER['REQUEST_URI']).'";');
  18. if (mysql_num_rows($result)==1) {
  19. $row = mysql_fetch_array($result);
  20. $pagina_id = $row['id'];
  21. } else {
  22. mysql_query('INSERT INTO leden_binnenplaats_paginas SET url="'.
  23. $_SERVER['REQUEST_URI'].'";');
  24. $pagina_id = mysql_insert_id();
  25. }
  26. ?>
  27.  
  28. <font face=\"Tahoma\"><b>Binnenplaats</b></font><br>
  29. <hr>
  30. <form method="post">
  31. <input type="hidden" name="naam" value="<?php echo "$list->gebruikersnaam"; ?>" />
  32. <input type="hidden" name="email" value="<?php echo "$list->status"; ?>" />
  33. Welkom in de Binnenplaats, hier kun je lekker kletsen met al je mede studenten, veel plezier, maar houd je aan de regels<br><br>
  34. <input maxlength="200" size="100" name="reactie" type="text">
  35. <input type="submit" value="Bericht Plaatsen">
  36. </p>
  37. </form>
  38.  
  39.  
  40. <?
  41. if (isset($_POST['naam'])) {
  42. mysql_query('INSERT INTO leden_binnenplaats (pagina, naam, email, reactie, tijd) VALUES ("'.$pagina_id.'", "'.$_POST['naam'].'", "'.$_POST['email'].'", "'.$_POST['reactie'].'", "'.$tijd.'")');
  43.  
  44. header("Location: http://avickum.nl/ledensysteem/index.php?pagina=binnenplaats/bericht");
  45. }
  46. ?>
  47.  
  48.  
  49.  
  50.  
  51.  
  52. <font face=\"Tahoma\"><b></b></font><br>
  53. <?php
  54. $result = mysql_query('SELECT * FROM leden_binnenplaats WHERE pagina='.$pagina_id.' ORDER BY id DESC LIMIT 10');
  55. if (mysql_num_rows($result)==0) {
  56. echo 'Er zijn geen berichten in de Binnenplaats.<br><br>';
  57. } else {
  58. while ($row = mysql_fetch_array($result)) {
  59. // deze reactie weergeven
  60.  
  61. $select2 = "SELECT * FROM leden_gegevens WHERE gebruikersnaam = '".$row['naam']."'";
  62. $query2 = mysql_query($select2)or die(mysql_error());
  63. $list2 = mysql_fetch_object($query2);
  64.  
  65.  
  66. if ($row['email'] == "Schoolhoofd")
  67. echo "<a href=\"?pagina=leden/profiel&id=".$list2->id."\"><font color=\"#FF0000\"><b> ".$row['naam']." </b></font></a> <img src=\"http://avickum.nl/ledensysteem/afbeeldingen/toverhoed.gif\"> schreef op ".$tijd.": <hr> ".$row['reactie']."<br><br><br>";
  68.  
  69. if ($row['email']== "Pleinwachter")
  70. echo "<a href=\"?pagina=leden/profiel&id=".$list2->id."\"><font color=\"#008800\"><b>".$row['naam']."</b></font></a> <img src=\"http://avickum.nl/ledensysteem/afbeeldingen/toverhoed.gif\"> schreef: <hr> ".$row['reactie']."<br><br><br>";
  71.  
  72. if ($row['email']== "Terreinwachter")
  73. echo "<a href=\"?pagina=leden/profiel&id=".$list2->id."\"><font color=\"#A08060\"><b>".$row['naam']."</b></font></a> <img src=\"http://avickum.nl/ledensysteem/afbeeldingen/toverhoed.gif\"> schreef: <hr> ".$row['reactie']."<br><br><br>";
  74.  
  75. if ($row['email']== "Afdelingshoofd")
  76. echo "<a href=\"?pagina=leden/profiel&id=".$list2->id."\"><font color=\"#00b2FF\"><b>".$row['naam']."</b></font></a> <img src=\"http://avickum.nl/ledensysteem/afbeeldingen/toverhoed.gif\"> schreef: <hr> ".$row['reactie']."<br><br><br>";
  77.  
  78. if ($row['email']== "Automessage")
  79. echo "<font color=\"#FF0000\"><b>Automessage van Avickum:</b></font> ".$row['reactie']."<br><br><br>";
  80.  
  81. if ($row['email']== "Lid")
  82. echo "<a href=\"?pagina=leden/profiel&id=".$list2->id."\"><b>".$row['naam']."</b></a> <img src=\"http://avickum.nl/ledensysteem/afbeeldingen/toverhoed.gif\"> schreef: <hr> ".$row['reactie']."<br><br><br>";
  83.  
  84. }
  85. }
  86. ?>
Offline NTS64 - 06/09/2009 21:19
Avatar van NTS64 PHP gevorderde vervang op regel 67 $tijd door $row['tijd'].
En ga daarna alsjeblieft PHP leren... 
Offline ArieMedia - 07/09/2009 09:05
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Dan heb ik nog een paar puntjes...



Dit slaat nergens op:
  1. "<?php echo "$list->gebruikersnaam"; ?>" />

Dit is voldoende:
  1. "<?php echo $list->gebruikersnaam; ?>" />


  1. if(empty($_GET['pagina'])

Bedoel je hier niet
  1. if(!isset($_GET['pagina'])) {}

Verschil, bij het bovenste voorbeeld dan bestaat $_GET['pagina'] maar dan bevat het niks (DUs in de header ?pagina=) met if(!isset()) bestaat de $_GET['pagina'] niet.

  1. ($row = mysql_fetch_array($result))

gebruik beter mysql_fetch_assoc(), array kan je problemen mee krijgen met bijv. dubbele resultaten. Overigens gebruik je een andere keer mysql_fetch_object(). Erg onoverzichterlijk

Daarnaast, je gebruikt hidden inputfields, die zijn erg gemakkelijk te misbruiken voor hackers. En je controle

  1. #
  2. if (isset($_POST['naam'])) {
  3. // rest van de zooi
  4. }
  5. ?>

Deze waarde vul je zelf in DMV een hidden inputfield, in het formulier met het type "submit" moet je een naam geven, en hierop controleren..

Heb je weer even genoeg om te verbeteren aan je script 
PS: Leer inspringen..
Offline Stevie31 - 07/09/2009 19:39
Avatar van Stevie31 Nieuw lid Goeie raad die ik je kan geven: Bij het coden van je pagina's, zet bij elk klein stukje dat je schrijft:

// Onderdeelnaam

Is wat overzichtelijker en zet wat meer spacies   
Maar komt goed!

Groetjes!

Offline TotempaaltJ - 08/09/2009 16:56
Avatar van TotempaaltJ PHP interesse Hmm, dit is heel erg basic PHP, dus ik raad je ten eerste aan om meer PHP te leren voor je te grote dingen gaat doen.

En als je sowieso niks weet van PHP moet je niet hier vragen hoe het moet en daarna zeggen dat het niet lukt, want dit forum is niet gemaakt om alles voor jou te doen. Je zult zelf de moeite moeten doen 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.379s