Nieuws postscript post niet alles

Status
Niet open voor verdere reacties.

sanderbutterman

Gebruiker
Lid geworden
3 aug 2007
Berichten
68
Onderstaand script post alleen een datum in mijn database. Het onderwerp en bericht komen niet in de database. iemand een idee waar mijn fout zit?
PHP:
<?php  
//Eerst connecten we met de database 
mysql_connect ("***","***","***"); //host, username, password 
mysql_select_db("***"); //database 

//Dit gebruiken we om de datum op te stellen in het Nederlands 
$arraymaand = array("Januari","Februari","Maart","April",  
"Mei","Juni", "Juli","Augustus","September","Oktober",  
"November","December");  
$datum = date("j") . $arraymaand[date(" n") - 1] . date(" Y");  
$bericht= addslashes($bericht); //slashes toevoegen voor de ' de " en de / om parse errors te vermijden 

//Als er is gedrukt op de submit knop van het formulier checken we eerst of alle velden wel zijn ingevuld... 
if ($_POST['submit'])  
{  
if ($_POST['onderp'] == "")  
$error="Je moet een onderp invullen!";  
elseif ($_POST['bericht'] =="")  
$error="Je moet een bericht invullen!";  
if ($error)  
{ //als er geen error is kunnen we een query opstellen en een record toevoegen in de database 
//query opstellen 
$query = "INSERT INTO nieuws (datum,bericht,onderwerp) VALUES ('$datum','$bericht','$onderwerp')";  
//query toepassen 
mysql_query($query) or die (mysql_error());  
echo "Het nieuws is toegevoegd!";  
}  
elseif (!$error) 
{ //als er een error is dan laten we die zien met een knop terug naar de vorige pagina 
echo "  
<div align=\"center\"><table width=\"50%\" border=\"1\"  
cellspacing=\"0\" cellpadding=\"2\"> 
<tr bordercolor=\"#000000\"> 
<td bordercolor=\"#000000\" bgcolor=\"#e2e2e2\" height=\"36\"> 
<div align=\"center\"><div align=center>$error<br> 

<form method=\"post\" action=\"javascript:history.go(-1)\"> 
<div align=center><input type=\"submit\" 
name=\"Terug\" value=\"Terug\"> 
</form></td></tr></table>";  
}  
}  
else  
{ //als er nog niet op de submit knop is gedrukt dan laten we het formulier zien 
?>  
<BODY BGCOLOR="#E7F4AE" style="scrollbar-face-color: #AFCD2D; scrollbar-shadow-color: #FFFFFF; scrollbar-highlight-color: #80971F; scrollbar-3dlight-color: #000000; scrollbar-darkshadow-color: #000000; scrollbar-track-color: #E0E0E0; scrollbar-arrow-color: #ffffff; scrollbar-base-color: #FDFBFF">
<div align="center">
  <p><font color="627319" size="2" face="Verdana, Arial, Helvetica, sans-serif">Hieronder kunt u een nieuw nieuwsbericht toevoegen.</font></p>
  </div>
<form action="" method="post">
  <TABLE align="center" BGCOLOR="#E7F4AE">
    <TR>
      <TD><font color="627319" size="2" face="Verdana, Arial, Helvetica, sans-serif">Titel:</font></TD>
      <TD><INPUT TYPE="text" NAME= "onderwerp"></TD>
    </TR>
    <TR>
      <TD valign="top"><font color="627319" size="2" face="Verdana, Arial, Helvetica, sans-serif">Bericht:</font></TD>
      <TD><textarea name="bericht" cols="45" rows="10"></textarea></TD>
    </TR>
  </TABLE>
  <div align="center">
    <INPUT name="submit" TYPE="submit" style="background-color:#AFCD2D" VALUE="Voeg toe">
    <input type="reset" name="Submit" value="Wissen" style="background-color:#AFCD2D">
  </div>
</form> 
<div align="center">
  <?php } ?>  
  
</div>
</body>
 
Laatst bewerkt door een moderator:
Ik zie dat je $bericht= addslashes($bericht); doet, maar de variabele $bericht is daarvoor helemaal niet bekend. Je doet dus addslashes over iets leegs en dat blijft dus leeg.

Daarnaast is de variabele $onderwerp ook niet bekend.

ik denk dat je $_POST['onderwerp'] en $_POST['bericht'] bedoelt, in dat geval zul je dit eerst in een variabele moeten zetten.
 
zo werkt het wel

Hoi Sander,

Je had een foutje hier:
if ($_POST['onderp'] == "")
$error="Je moet een onderp invullen!";

en deze:
if ($error)
{ //als er geen error is

dit betekend eigenlijk dat er wel een error is.
en wat aaajeetee al zei,
je moet wel goed je vars definieren.

zie hieronder de aangepaste en verbeterde code,
heb alleen de database niet getest, wel met echo van de vars.
vergeet ook niet de accolades bij de if 's, het werkte nu wel maar staat wat netter.
Heb ook ff de body hoger gezet, nu heb je kleur op je volgende pagina.
vriendelijke groet,
Ron


Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<BODY BGCOLOR="#E7F4AE" style="scrollbar-face-color: #AFCD2D; scrollbar-shadow-color: #FFFFFF; scrollbar-highlight-color: #80971F; scrollbar-3dlight-color: #000000; scrollbar-darkshadow-color: #000000; scrollbar-track-color: #E0E0E0; scrollbar-arrow-color: #ffffff; scrollbar-base-color: #FDFBFF">
<?php   
//Eerst connecten we met de database  
//mysql_connect ("***","***","***"); //host, username, password  
//mysql_select_db("***"); //database  

//Dit gebruiken we om de datum op te stellen in het Nederlands  
$arraymaand = array("Januari","Februari","Maart","April",   
"Mei","Juni", "Juli","Augustus","September","Oktober",   
"November","December");   
$datum = date("j") . $arraymaand[date(" n") - 1] . date(" Y");   
$bericht= addslashes($_POST['bericht']); //slashes toevoegen voor de ' de " en de / om parse errors te vermijden  

//Als er is gedrukt op de submit knop van het formulier checken we eerst of alle velden wel zijn ingevuld...  
if ($_POST['submit'])   
{   
if (!$_POST['onderwerp']) {   // als de geposte var onderwerp leeg is
                            $error="Je moet een onderwerp invullen!";
						  }
elseif (!$_POST['bericht']) {  // als de geposte var bericht leeg is
                              $error="Je moet een bericht invullen!";
							}
if (!$error)   // let op het uitroepteken zegt dat de waarde leeg is, dus hier géén error
{ //als er geen error is kunnen we een query opstellen en een record toevoegen in de database  
//query opstellen  
$bericht=$_POST['bericht'];  // deze vars waren nog niet gedefinieerd, 
$onderwerp=$_POST['onderwerp'];
// zo wel, je kunt ze ook rechtstreeks in de query zetten zie hieronder:
//$query = "INSERT INTO nieuws (datum,bericht,onderwerp) VALUES ('$datum','".$_POST['bericht']."','".$_POST['onderwerp']."')";   


$query = "INSERT INTO nieuws (datum, bericht, onderwerp) VALUES ('$datum', '$bericht', '$onderwerp')";   
//query toepassen  
mysql_query($query) or die (mysql_error());   
echo "Het nieuws is toegevoegd!";   

}   
elseif ($error)  
{ //als er een error is dan laten we die zien met een knop terug naar de vorige pagina  
echo "   
<div align=\"center\"><table width=\"50%\" border=\"1\"   
cellspacing=\"0\" cellpadding=\"2\">  
<tr bordercolor=\"#000000\">  
<td bordercolor=\"#000000\" bgcolor=\"#e2e2e2\" height=\"36\">  
<div align=\"center\"><div align=center>$error<br>  

<form method=\"post\" action=\"javascript:history.go(-1)\">  
<div align=center><input type=\"submit\"  
name=\"Terug\" value=\"Terug\">  
</form></td></tr></table>";   
}   
}   
else   
{ //als er nog niet op de submit knop is gedrukt dan laten we het formulier zien  
?>   
 
<div align="center"> 
  <p><font color="627319" size="2" face="Verdana, Arial, Helvetica, sans-serif">Hieronder kunt u een nieuw nieuwsbericht toevoegen.</font></p> 
  </div> 
<form action="" method="post"> 
  <TABLE align="center" BGCOLOR="#E7F4AE"> 
    <TR> 
      <TD><font color="627319" size="2" face="Verdana, Arial, Helvetica, sans-serif">Titel:</font></TD> 
      <TD><INPUT TYPE="text" NAME= "onderwerp"></TD> 
    </TR> 
    <TR> 
      <TD valign="top"><font color="627319" size="2" face="Verdana, Arial, Helvetica, sans-serif">Bericht:</font></TD> 
      <TD><textarea name="bericht" cols="45" rows="10"></textarea></TD> 
    </TR> 
  </TABLE> 
  <div align="center"> 
    <INPUT name="submit" TYPE="submit" style="background-color:#AFCD2D" VALUE="Voeg toe"> 
    <input type="reset" name="Submit" value="Wissen" style="background-color:#AFCD2D"> 
  </div> 
</form>  
<div align="center"> 
  <?php } ?>   
   
</div> 
</body> 
</html>
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan