login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Forum

Offline brechtjeu - 09/09/2005 19:01
Avatar van brechtjeuOnbekend hallo,
ik ben bezig met een forumpje in mysql aan het maken maar om de een of andere reden mancheert het niet als ik op submit druk
dit is mijn code:
  1. <?php
  2. if($_POST['TOPIC'])
  3. {
  4. if($_POST['naam'] == "")
  5. {
  6. $fout = "JE HEBT JOUW NAAM NIET INGEVULD";
  7. }
  8. if($_POST['emailadres'] == "")
  9. {
  10. $fout = "JE HEBT JOUW EMAILADRES NIET INGEVULD";
  11. }
  12. if($_POST['onderwerp'] == "")
  13. {
  14. $fout = "JE HEBT GEEN ONDERWERP INGEVULD";
  15. }
  16. if($_POST['bericht'] == "")
  17. {
  18. $fout = "JE HEBT GEEN BERICHT INGEVULD";
  19. }
  20. if($fout = "")
  21. {
  22. $inhoud ="<table align='center' width='75%' border='1' bordercolor='black' bgcolor='blue'>
  23. <tr><td>NAAM: $naam - EMAILADRES: $emailadres</td></tr>
  24. <tr><td>ONDERWERP: $onderwerp</td></tr>
  25. <tr><td>BERICHT:</td></tr>
  26. <tr><td> $bericht </td></tr>
  27. </table>";
  28.  
  29. // nieuwe topic aanmaken
  30. fopen("".$onderwerp.".htm", "x+");
  31. $maak = fopen("".$onderwerp.".htm", "w");
  32. fwrite($maak, $inhoud);
  33. fclose($maak);
  34. // link plaatsen in topics.php
  35. $opent = fopen("topics.php", "r");
  36. $inhoud = fgets($opent, 4096);
  37. $open = fopen("topics.php", "w");
  38. $invoegen = "$inhoud + <a href =".$onderwerp.".htm>".$onderwerp."</a>";
  39. fwrite($open, $invoegen);
  40. fclose($opent);
  41. fclose($open);
  42. }
  43. }
  44. ?>
  45. <html>
  46. <body bgcolor="black">
  47. <form method="post">
  48. <table align="center" width="75%" bgcolor="lightblue">
  49. <tr><td>NAAM:<input type="text" name="naam"></input>
  50. EMAILADRES:<input type="text" name="emailadres"></input></td></tr>
  51. <tr><td>ONDERWERP:<input type="text" name="onderwerp"></input></td></tr>
  52. <tr><td>BERICHT:</td></tr>
  53. <tr><td><textarea name="bericht" rows="7" cols="40"></textarea></td></tr>
  54. <tr><td>&nbsp;</td></tr>
  55. <tr><td><input type="submit" value="MAAK NIEUWE TOPIC AAN" name="TOPIC"></input>
  56. <input type="reset" value="VELDEN LEEGMAKEN"></input></td></td>
  57. </table>
  58. </form>
  59. </body>
  60. </html>


alleszins geen typfout, kweet neit wat er aan scheeld

24 antwoorden

Gesponsorde links
Offline Simon - 09/09/2005 19:10 (laatste wijziging 09/09/2005 19:10)
Avatar van Simon PHP expert gebruik
if(isset($_POST['topic'])) {
op die eerste lijn

Offline brechtjeu - 09/09/2005 19:13
Avatar van brechtjeu Onbekend @ Simon: dat had ik eerst maar dat lukte niet, heb het nu nog een keer geprobeerd en nee.

hij geeft zelfs geen error als ik een veld niet invul dus denk ik dat het toch aan de post ligt.

:s
Offline Ontani - 09/09/2005 19:22
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
logisch $fout wordt nergens geechood dus een foutmelding zal je niet zien 
Offline lasdesigner - 09/09/2005 19:24 (laatste wijziging 09/09/2005 19:26)
Avatar van lasdesigner PHP beginner hoezo doe je niet
  1. <?php
  2. if(empty($name))
  3. {
  4. }
  5. elseif(empty($test))
  6. {
  7. }
  8. ?>


Edit: Volges mij klopt je form tag niet, deze geeft niet weer of het gaat om post/get.. dat moet er wel in volges mij

Edit2: Nee weet ik, *(dat het niet helpt)* maar het is alleen een verbetering voor je script. zie mijn edit hierboven!
Offline brechtjeu - 09/09/2005 19:25 (laatste wijziging 09/09/2005 19:39)
Avatar van brechtjeu Onbekend @ ontani :^^:$ lol vergeten

@ lasdesigner dat helpt me geen stap verder met mijn probleem ;)

en euh mijn topic klopt niet sorry, ik bedoelde natuurlijk zonder mysql

EDIT: @ ontani zelfs met $fout te echoen gaat het niet hoor, het is gewoon ergens een fout in de post denkik maarja waar 
Offline Dolfje - 09/09/2005 20:05
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
doe eens boven je script:
echo $_POST['TOPIC'];

als je daar "MAAK NIEUWE TOPIC AAN" krijgt dan ligt het daar niet aan.
Anders moet je eens print_r(get_defined_vars()); en stuurt dat hier.

Offline lasdesigner - 09/09/2005 20:14
Avatar van lasdesigner PHP beginner Lol dom,, waar is je else?
  1. <?
  2. if(isset($_POST['TOPIC']))
  3. {
  4. }
  5. else
  6. {
  7. //hier je form!!!
  8. }
  9. ?>
Offline Ontani - 09/09/2005 20:17
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
hoeft toch niet, nu wordt z'n form gewoon altijd getoond
Offline lasdesigner - 09/09/2005 20:25
Avatar van lasdesigner PHP beginner hmm.. ja das waar.. maar probeer eens met else? Wie weet lukt het:D
Offline brechtjeu - 09/09/2005 20:33
Avatar van brechtjeu Onbekend :) nah niet met else want dan kan iedereen die erop komt direkt nieuwe topics aanmaken andrs jah,

kheb het geprobeerd met echo post enzo EN DAT GING NIET
Offline Rens - 09/09/2005 20:33
Avatar van Rens Gouden medaille

Crew algemeen
Kheb je code eens een stuk aangepast.

  1. <html>
  2. <body bgcolor="black">
  3. <?PHP
  4. if($_SERVER['REQUEST_METHOD'] == "POST")
  5. {
  6. $fout = "";
  7. if($_POST['naam'] == "")
  8. {
  9. $fout .= "JE HEBT JOUW NAAM NIET INGEVULD<br />";
  10. }
  11. if($_POST['emailadres'] == "")
  12. {
  13. $fout .= "JE HEBT JOUW EMAILADRES NIET INGEVULD<br />";
  14. }
  15. if($_POST['onderwerp'] == "")
  16. {
  17. $fout .= "JE HEBT GEEN ONDERWERP INGEVULD<br />";
  18. }
  19. if($_POST['bericht'] == "")
  20. {
  21. $fout .= "JE HEBT GEEN BERICHT INGEVULD<br />";
  22. }
  23. if(strlen($fout) < 1)
  24. {
  25. $inhoud ="<table align='center' width='75%' border='1' bordercolor='black' bgcolor='blue'>
  26. <tr><td>NAAM: $naam - EMAILADRES: $emailadres</td></tr>
  27. <tr><td>ONDERWERP: $onderwerp</td></tr>
  28. <tr><td>BERICHT:</td></tr>
  29. <tr><td> $bericht </td></tr>
  30. </table>";
  31.  
  32. // nieuwe topic aanmaken
  33. if(!$maak = fopen($onderwerp.".htm", "w"))
  34. {
  35. echo "Kan het bestand van dit onderwerp niet openen!";
  36. } else
  37. {
  38. if(!fwrite($maak, $inhoud))
  39. {
  40. echo "Kan de nieuwe inhoud niet wegschrijven!";
  41. } else
  42. {
  43. fclose($maak);
  44. // link plaatsen in topics.php
  45. if(!$opent = fopen("topics.php", "r"))
  46. {
  47. echo "Kan het bestand niet openen voor lezen!";
  48. } else
  49. {
  50. if(!$inhoud = fgets($opent, 4096))
  51. {
  52. echo "Kan de inhoud niet ophalen!";
  53. } else
  54. {
  55. if(!$open = fopen("topics.php", "w"))
  56. {
  57. echo "Kan het bestand niet openen voor schrijven!";
  58. } else
  59. {
  60. $invoegen = "$inhoud + <a href =".$onderwerp.".htm>".$onderwerp."</a>";
  61. if(!fwrite($open, $invoegen))
  62. {
  63. echo "Kan de nieuwe link er niet bij schrijven!";
  64. } else
  65. {
  66. fclose($opent);
  67. fclose($open);
  68. }
  69. }
  70. }
  71. }
  72. }
  73. }
  74. }
  75. } else
  76. {
  77. ?>
  78. <form method="post" action="<?=$_SERVER['REQUEST_URI'];?>">
  79. <table align="center" width="75%" bgcolor="lightblue">
  80. <tr><td>NAAM:<input type="text" name="naam"></input></td></tr>
  81. <tr><td>EMAILADRES:<input type="text" name="emailadres"></input></td></tr>
  82. <tr><td>ONDERWERP:<input type="text" name="onderwerp"></input></td></tr>
  83. <tr><td>BERICHT:</td></tr>
  84. <tr><td><textarea name="bericht" rows="7" cols="40"></textarea></td></tr>
  85. <tr><td>&nbsp;</td></tr>
  86. <tr><td><input type="submit" value="MAAK NIEUWE TOPIC AAN" name="TOPIC"></input>
  87. <input type="reset" value="VELDEN LEEGMAKEN"></input></td></td>
  88. </table>
  89. </form>
  90. <?PHP
  91. }
  92. ?>
  93. </body>
  94. </html>


Vooral datgene bij het wegschrijven en zo van het topic, paar if else loopjes toegevoegd voor error handling.
Offline brechtjeu - 09/09/2005 20:44
Avatar van brechtjeu Onbekend @ rensjuh, ik krijg nu het foutbericht: kan de inhoud niet ophalen?????
Offline Rens - 09/09/2005 20:44
Avatar van Rens Gouden medaille

Crew algemeen
Zie regel 50 van je script?
Offline brechtjeu - 09/09/2005 22:01
Avatar van brechtjeu Onbekend uh sorry, die regel begrijp ik niet kun je me die even uitleggen, heeft het te weinig CHMOD of zo?
Offline Rens - 09/09/2005 22:11
Avatar van Rens Gouden medaille

Crew algemeen
Die regel heb je zelf gemaakt, dus die hoor je eigenlijk te snappen.
Je gaat toch niet iets maken wat je zelf niet snapt?:s

Maar, ff voor de duidelijkheid dan.
PHP kan de inhoud van het bestand niet lezen.
http://nl2.php.net/fgets

Wat het verder betekend weet ik ook niet...
Ik maak nooit een forum met bestanden, maar met MySQL...
Offline brechtjeu - 09/09/2005 22:32
Avatar van brechtjeu Onbekend miljaar!, weet er dan niemand wat ik moet doen of wat dit veroorzaakt heeft.

ik denk dat hij fgets niet kan uitvoeren of zo mss aan de var-sharing
mss dat even oplossen
Offline Maarten - 09/09/2005 22:36
Avatar van Maarten Erelid Jij hebt echt wel iets met hoofdletters eh? Leer dat af, als je een bericht op je scherm krijgt à la
VUL EEN NAAM IN!!!!!!!!!
voel ik me al snel beledigd 

En bij variabelen en formuliervelden is het zeker handig om kleine letters te gebruiken, want als je script plots niet werkt zou dat wel eens kunnen aan die hoofdletter liggen.. als je kleine letterkens gebruikt kan je niet missen 
Offline brechtjeu - 09/09/2005 22:38
Avatar van brechtjeu Onbekend @ murfy: ik gebruik alleen caps voor het uitzicht niet voor het script, voor dat jij dat tegen me zei deed ik dat nog maar nu niet ;-) , maaruh weet je soms toevallig de oplossing niet of een tip ofzo dat zou handig zijn
Offline Rens - 09/09/2005 22:39
Avatar van Rens Gouden medaille

Crew algemeen
Ik snap eigenlijk niet goed waarvoor je het volgende stukje erin hebt gezet:

  1. if(!$inhoud = fgets($opent, 4096))
  2. {
  3. echo "Kan de inhoud niet ophalen!";
  4. } else
  5. {


Het doet niks, je gebruikt het niet, het staat daar maar te staan...
Verwijder dat stukje eens (en iets verderop natuurlijk ook een } anders krijg je een parse error:p )
Offline Maarten - 09/09/2005 22:47 (laatste wijziging 09/09/2005 22:49)
Avatar van Maarten Erelid Tips? Sure 

- Je kan beter iedere error in een array dumpen.
Vb:
  1. if(iets niet goed) {
  2. $error[] = "foutmelding";
  3. }
  4.  
  5. if(iets anders niet goed) {
  6. $error[] = "foutmelding 2";
  7. }

Uiteindelijk krijg je dus een array met foutmeldingen, die je bv. netjes in een opsommingslijst kan weergeven.

- Gebruik ook trim() om op lege velden te controleren. Als je nu in dat script een spatie invult zal hij dat accepteren. Als je trim() gebruikt neemt hij de waarde zonder spaties.
Dus:
  1. if(trim($_POST['veld']) == "") {
  2. $error[] = "veld is leeg";
  3. }


Tot zover de tips.

De oplossing:

Die tweede parameter (4096) kan onmogelijk juist zijn, volgens mij bevat je topics.php niet eens 30 regels, laat staan 4096.. gebruik misschien file_get_contents() ?
Offline brechtjeu - 09/09/2005 22:50 (laatste wijziging 09/09/2005 22:51)
Avatar van brechtjeu Onbekend
  1. if(!$inhoud = fgets($opent, 4096))
  2. {
  3. echo "Kan de inhoud niet ophalen!";
  4. } else
  5. {


heb jij erin gezet, zie vorige pagina
Offline Maarten - 09/09/2005 22:52
Avatar van Maarten Erelid IKKE? Ik heb nog niks toegevoegd aan dat script van jou 

$inhoud = fgets($opent, 4096);

Verander dat eens in

$inhoud = file_get_contents('topics.php');
Offline brechtjeu - 09/09/2005 22:54
Avatar van brechtjeu Onbekend @ MURFY: het werkt al sorry

YES YES ZAALAIG BEDANKT IEDREEN, lala lala la la lala la la la la lala la la la la la la la lalalala
Offline Maarten - 09/09/2005 22:57
Avatar van Maarten Erelid Ik ben gewoon goed, ook al had het wss niks met mijn uitleg te maken 

Topic mag dus dicht?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.286s