Forum
brechtjeu - 09/09/2005 19:01
Onbekend
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:
<?php
if($_POST['TOPIC'])
{
if($_POST['naam'] == "")
{
$fout = "JE HEBT JOUW NAAM NIET INGEVULD";
}
if($_POST['emailadres'] == "")
{
$fout = "JE HEBT JOUW EMAILADRES NIET INGEVULD";
}
if($_POST['onderwerp'] == "")
{
$fout = "JE HEBT GEEN ONDERWERP INGEVULD";
}
if($_POST['bericht'] == "")
{
$fout = "JE HEBT GEEN BERICHT INGEVULD";
}
if($fout = "")
{
$inhoud ="<table align='center' width='75%' border='1' bordercolor='black' bgcolor='blue'>
<tr><td>NAAM: $naam - EMAILADRES: $emailadres</td></tr>
<tr><td>ONDERWERP: $onderwerp</td></tr>
<tr><td>BERICHT:</td></tr>
<tr><td> $bericht </td></tr>
</table>";
// nieuwe topic aanmaken
fopen("".$onderwerp.".htm", "x+");
$maak = fopen("".$onderwerp.".htm", "w");
fwrite($maak, $inhoud);
fclose($maak);
// link plaatsen in topics.php
$opent = fopen("topics.php", "r");
$inhoud = fgets($opent, 4096);
$open = fopen("topics.php", "w");
$invoegen = "$inhoud + <a href =".$onderwerp.".htm>".$onderwerp."</a>";
fwrite($open, $invoegen);
fclose($opent);
fclose($open);
}
}
?>
<html>
<body bgcolor="black">
<form method="post">
<table align="center" width="75%" bgcolor="lightblue">
<tr><td>NAAM:<input type="text" name="naam"></input>
EMAILADRES:<input type="text" name="emailadres"></input></td></tr>
<tr><td>ONDERWERP:<input type="text" name="onderwerp"></input></td></tr>
<tr><td>BERICHT:</td></tr>
<tr><td><textarea name="bericht" rows="7" cols="40"></textarea></td></tr>
<tr><td> </td></tr>
<tr><td><input type="submit" value="MAAK NIEUWE TOPIC AAN" name="TOPIC"></input>
<input type="reset" value="VELDEN LEEGMAKEN"></input></td></td>
</table>
</form>
</body>
</html>
<?php
if ( $_POST [ 'TOPIC' ] )
{
if ( $_POST [ 'naam' ] == "" )
{
$fout = "JE HEBT JOUW NAAM NIET INGEVULD" ;
}
if ( $_POST [ 'emailadres' ] == "" )
{
$fout = "JE HEBT JOUW EMAILADRES NIET INGEVULD" ;
}
if ( $_POST [ 'onderwerp' ] == "" )
{
$fout = "JE HEBT GEEN ONDERWERP INGEVULD" ;
}
if ( $_POST [ 'bericht' ] == "" )
{
$fout = "JE HEBT GEEN BERICHT INGEVULD" ;
}
if ( $fout = "" )
{
$inhoud = "<table align='center' width='75%' b order='1' bordercolor='black' bgcolor='blue'>
<tr><td>NAAM: $naam - EMAILADRES: $emailadres </td></tr>
<tr><td>ONDERWERP: $onderwerp </td></tr>
<tr><td>BERICHT:</td></tr>
<tr><td> $bericht </td></tr>
</table>" ;
// nieuwe topic aanmaken
fopen ( "" . $onderwerp . ".htm" , "x+" ) ; $maak = fopen ( "" . $onderwerp . ".htm" , "w" ) ; // link plaatsen in topics.php
$opent = fopen ( "topics.php" , "r" ) ; $inhoud = fgets ( $opent , 4096 ) ; $open = fopen ( "topics.php" , "w" ) ; $invoegen = "$inhoud + <a href =" . $onderwerp . ".htm>" . $onderwerp . "</a>" ;
}
}
?>
<html>
<body bgcolor="black">
<form method="post">
<table align="center" width="75%" bgcolor="lightblue">
<tr><td>NAAM:<input type="text" name="naam"></input>
EMAILADRES:<input type="text" name="emailadres"></input></td></tr>
<tr><td>ONDERWERP:<input type="text" name="onderwerp"></input></td></tr>
<tr><td>BERICHT:</td></tr>
<tr><td><textarea name="bericht" rows="7" cols="40"></textarea></td></tr>
<tr><td> </td></tr>
<tr><td><input type="submit" value="MAAK NIEUWE TOPIC AAN" name="TOPIC"></input>
<input type="reset" value="VELDEN LEEGMAKEN"></input></td></td>
</table>
</form>
</body>
</html>
alleszins geen typfout, kweet neit wat er aan scheeld
24 antwoorden
Gesponsorde links
Simon - 09/09/2005 19:10 (laatste wijziging 09/09/2005 19:10)
PHP expert
gebruik
if(isset($_POST['topic'])) {
op die eerste lijn
brechtjeu - 09/09/2005 19:13
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
lasdesigner - 09/09/2005 19:24 (laatste wijziging 09/09/2005 19:26)
PHP beginner
hoezo doe je niet
<?php
if(empty($name))
{
}
elseif(empty($test))
{
}
?>
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!
lasdesigner - 09/09/2005 20:14
PHP beginner
Lol dom,, waar is je else?
<?
if(isset($_POST['TOPIC']))
{
}
else
{
//hier je form!!!
}
?>
<?
if ( isset ( $_POST [ 'TOPIC' ] ) ) {
}
else
{
//hier je form!!!
}
?>
lasdesigner - 09/09/2005 20:25
PHP beginner
hmm.. ja das waar.. maar probeer eens met else? Wie weet lukt het:D
brechtjeu - 09/09/2005 20:33
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
Rens - 09/09/2005 20:33
Crew algemeen
Kheb je code eens een stuk aangepast.
<html>
<body bgcolor="black">
<?PHP
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$fout = "";
if($_POST['naam'] == "")
{
$fout .= "JE HEBT JOUW NAAM NIET INGEVULD<br />";
}
if($_POST['emailadres'] == "")
{
$fout .= "JE HEBT JOUW EMAILADRES NIET INGEVULD<br />";
}
if($_POST['onderwerp'] == "")
{
$fout .= "JE HEBT GEEN ONDERWERP INGEVULD<br />";
}
if($_POST['bericht'] == "")
{
$fout .= "JE HEBT GEEN BERICHT INGEVULD<br />";
}
if(strlen($fout) < 1)
{
$inhoud ="<table align='center' width='75%' border='1' bordercolor='black' bgcolor='blue'>
<tr><td>NAAM: $naam - EMAILADRES: $emailadres</td></tr>
<tr><td>ONDERWERP: $onderwerp</td></tr>
<tr><td>BERICHT:</td></tr>
<tr><td> $bericht </td></tr>
</table>";
// nieuwe topic aanmaken
if(!$maak = fopen($onderwerp.".htm", "w"))
{
echo "Kan het bestand van dit onderwerp niet openen!";
} else
{
if(!fwrite($maak, $inhoud))
{
echo "Kan de nieuwe inhoud niet wegschrijven!";
} else
{
fclose($maak);
// link plaatsen in topics.php
if(!$opent = fopen("topics.php", "r"))
{
echo "Kan het bestand niet openen voor lezen!";
} else
{
if(!$inhoud = fgets($opent, 4096))
{
echo "Kan de inhoud niet ophalen!";
} else
{
if(!$open = fopen("topics.php", "w"))
{
echo "Kan het bestand niet openen voor schrijven!";
} else
{
$invoegen = "$inhoud + <a href =".$onderwerp.".htm>".$onderwerp."</a>";
if(!fwrite($open, $invoegen))
{
echo "Kan de nieuwe link er niet bij schrijven!";
} else
{
fclose($opent);
fclose($open);
}
}
}
}
}
}
}
} else
{
?>
<form method="post" action="<?=$_SERVER['REQUEST_URI'];?>">
<table align="center" width="75%" bgcolor="lightblue">
<tr><td>NAAM:<input type="text" name="naam"></input></td></tr>
<tr><td>EMAILADRES:<input type="text" name="emailadres"></input></td></tr>
<tr><td>ONDERWERP:<input type="text" name="onderwerp"></input></td></tr>
<tr><td>BERICHT:</td></tr>
<tr><td><textarea name="bericht" rows="7" cols="40"></textarea></td></tr>
<tr><td> </td></tr>
<tr><td><input type="submit" value="MAAK NIEUWE TOPIC AAN" name="TOPIC"></input>
<input type="reset" value="VELDEN LEEGMAKEN"></input></td></td>
</table>
</form>
<?PHP
}
?>
</body>
</html>
<html>
<body bgcolor="black">
<?PHP
if ( $_SERVER [ 'REQUEST_METHOD' ] == "POST" )
{
$fout = "" ;
if ( $_POST [ 'naam' ] == "" )
{
$fout .= "JE HEBT JOUW NAAM NIET INGEVULD<br />" ;
}
if ( $_POST [ 'emailadres' ] == "" )
{
$fout .= "JE HEBT JOUW EMAILADRES NIET INGEVULD<br />" ;
}
if ( $_POST [ 'onderwerp' ] == "" )
{
$fout .= "JE HEBT GEEN ONDERWERP INGEVULD<br />" ;
}
if ( $_POST [ 'bericht' ] == "" )
{
$fout .= "JE HEBT GEEN BERICHT INGEVULD<br />" ;
}
{
$inhoud = "<table align='center' width='75%' b order='1' bordercolor='black' bgcolor='blue'>
<tr><td>NAAM: $naam - EMAILADRES: $emailadres </td></tr>
<tr><td>ONDERWERP: $onderwerp </td></tr>
<tr><td>BERICHT:</td></tr>
<tr><td> $bericht </td></tr>
</table>" ;
// nieuwe topic aanmaken
if ( ! $maak = fopen ( $onderwerp . ".htm" , "w" ) ) {
echo "Kan het bestand van dit onderwerp niet openen!" ; } else
{
{
echo "Kan de nieuwe inhoud niet wegschrijven!" ; } else
{
// link plaatsen in topics.php
if ( ! $opent = fopen ( "topics.php" , "r" ) ) {
echo "Kan het bestand niet openen voor lezen!" ; } else
{
if ( ! $inhoud = fgets ( $opent , 4096 ) ) {
echo "Kan de inhoud niet ophalen!" ; } else
{
if ( ! $open = fopen ( "topics.php" , "w" ) ) {
echo "Kan het bestand niet openen voor schrijven!" ; } else
{
$invoegen = "$inhoud + <a href =" . $onderwerp . ".htm>" . $onderwerp . "</a>" ;
{
echo "Kan de nieuwe link er niet bij schrijven!" ; } else
{
}
}
}
}
}
}
}
} else
{
?>
<form method="post" action="<?= $_SERVER [ 'REQUEST_URI' ] ; ?> ">
<table align="center" width="75%" bgcolor="lightblue">
<tr><td>NAAM:<input type="text" name="naam"></input></td></tr>
<tr><td>EMAILADRES:<input type="text" name="emailadres"></input></td></tr>
<tr><td>ONDERWERP:<input type="text" name="onderwerp"></input></td></tr>
<tr><td>BERICHT:</td></tr>
<tr><td><textarea name="bericht" rows="7" cols="40"></textarea></td></tr>
<tr><td> </td></tr>
<tr><td><input type="submit" value="MAAK NIEUWE TOPIC AAN" name="TOPIC"></input>
<input type="reset" value="VELDEN LEEGMAKEN"></input></td></td>
</table>
</form>
<?PHP
}
?>
</body>
</html>
Vooral datgene bij het wegschrijven en zo van het topic, paar if else loopjes toegevoegd voor error handling.
brechtjeu - 09/09/2005 20:44
Onbekend
@ rensjuh, ik krijg nu het foutbericht: kan de inhoud niet ophalen?????
brechtjeu - 09/09/2005 22:01
Onbekend
uh sorry, die regel begrijp ik niet kun je me die even uitleggen, heeft het te weinig CHMOD of zo?
brechtjeu - 09/09/2005 22:32
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
Rens - 09/09/2005 22:39
Crew algemeen
Ik snap eigenlijk niet goed waarvoor je het volgende stukje erin hebt gezet:
if(!$inhoud = fgets($opent, 4096))
{
echo "Kan de inhoud niet ophalen!";
} else
{
if ( ! $inhoud = fgets ( $opent , 4096 ) ) {
echo "Kan de inhoud niet ophalen!" ; } else
{
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 )
Maarten - 09/09/2005 22:47 (laatste wijziging 09/09/2005 22:49)
Erelid
Tips? Sure
- Je kan beter iedere error in een array dumpen.
Vb:
if(iets niet goed) {
$error[] = "foutmelding";
}
if(iets anders niet goed) {
$error[] = "foutmelding 2";
}
if ( iets niet goed) {
$error [ ] = "foutmelding" ;
}
if ( iets anders niet goed) {
$error [ ] = "foutmelding 2" ;
}
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:
if(trim($_POST['veld']) == "") {
$error[] = "veld is leeg";
}
if ( trim ( $_POST [ 'veld' ] ) == "" ) { $error [ ] = "veld is leeg" ;
}
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() ?
brechtjeu - 09/09/2005 22:50 (laatste wijziging 09/09/2005 22:51)
Onbekend
if(!$inhoud = fgets($opent, 4096))
{
echo "Kan de inhoud niet ophalen!";
} else
{
if ( ! $inhoud = fgets ( $opent , 4096 ) ) {
echo "Kan de inhoud niet ophalen!" ; } else
{
heb jij erin gezet, zie vorige pagina
brechtjeu - 09/09/2005 22:54
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
Gesponsorde links
Dit onderwerp is gesloten .