2012-01-02 1 views
0

Nous espérions avoir de nouveaux yeux à ce sujet. J'ai une page qui va ajouter un nouvel événement à une base de données. Tous les 3 champs sont obligatoires, donc s'ils sont vides lorsque le bouton Soumettre est appuyé, le message d'erreur devrait apparaître. Quelqu'un sait pourquoi il ne montre pas le message d'erreur? Merci d'avance!Message d'erreur de validation de formulaire ne pas afficher

Voici le code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <title>ADMIN - Repetative Strain Injury UK</title> 
    <meta http-equiv="content-type" content="application/xhtml; charset=utf-8" /> 
    <link href="/iis_project/view/css/mycss.css" rel="stylesheet" type="text/css" /> 
</head> 
<body> 
    <div class="container"> 
     <!-- wrapper div for positioning --> 
     <div class="grid10 first" id="header"> 
      <!-- Header Section --> 
      <img src="/iis_project/view/img/banner.jpg" alt="RSI UK Banner" width="1090" height="75"/> 
     </div> 
     <div class="grid11 first" id="date"> 
      <!-- Date Section --> 
      <?php 
      include ("date.php"); 
      ?> 
     </div> 
     <div class="grid2 first" id="col1"> 
      <!-- Left column Section --> 
      <h1>Navigation</h1> 
      <p> 
       <a href="index.php"><strong>Home</strong></a> 
      </p> 
      <p> 
       <a href="aboutus.php"><strong>About Us</strong></a> 
      </p> 
      <p> 
       <a href="register.php"><strong>Register</strong></a> 
      </p> 
      <p> 
       <a href="login.php"><strong>Log In</strong></a> 
      </p> 
      <p> 
       <a href="events.php"><strong>Events</strong></a> 
      </p> 
      <p> 
       <a href="acknowledgements.php"><strong>Acknowledgements</strong></a> 
      </p> 
     </div> 
     <div class="grid6" id="col2"> 
      <!-- Middle column Section --> 
      <h1>New Event</h1> 
      <p> 

       As an admin you have the right to create a new event. Simply fill out the form below and hit submit. 
      </p> 
      <?php 
// creates the new record form 
// since this form is used multiple times in this file, I have made it a function that   is easily reusable 
function renderForm($name, $date, $location, $error22) 
{ 

      ?> 

      <?php 
      // if there are any error22s, display them 
      if ($error22 != '') { 
       echo '<div style="padding:4px; border:1px solid  red; color:red;">' . $error22 . '</div>'; 
      } 
      ?> 

      <form action="" method="post"> 
       <div> 
        Name: 
        <input type="text" name="name" value="<?php echo $name;?>" /> 
        <br/> 
        Date: 
        <input type="text" name="date" value="<?php echo $date;?>" /> 
        <br/> 
        Location: 
        <input type="text" name="location" value="<?php echo $location;?>" /> 
        <br/> 
        <input type="submit" name="submit_event"  value="Submit"> 
       </div> 
      </form> 

<?php 
} 

    // connect to the database 
include ("home_connection.php"); 

    // check if the form has been submitted. If it has, start to process the form and save it to the database 
    if (isset($_POST['submit'])) 
{ 
// get form data, making sure it is valid 
$name = mysql_real_escape_string(htmlspecialchars($_POST['name'])); 
$date = mysql_real_escape_string(htmlspecialchars($_POST['date'])); 
$location = mysql_real_escape_string(htmlspecialchars($_POST['location'])); 
// check to make sure all fields are entered 
if ($name == '' || $date == '' || $location == '') 
{ 
// generate error22 message 
$error22 = 'error22: Please fill in all required fields!'; 

// if either field is blank, display the form again 
renderForm($name, $date, $location, $error22); 
} 
else 
{ 
// save the data to the database 
mysql_query("INSERT events SET name='$name', date='$date', location='$location'") 
or die(mysql_error22()); 

// once saved, redirect back to the view page 
header("Location: login_success_admin.php"); 
} 
} 
else 
// if the form hasn't been submitted, display the form 
{ 
renderForm('','','',''); 
} 
    ?> 
    </div> 
<div class="grid2" id="col3"> 
<!-- Right column Section --> 
<h1>Newsletter</h1> 
<h2>Sign up to our newsletter:</h2> 
<?php 
include ("newsletter.php"); 
?> 
    </div> 
    <div class="grid10 first" id="footer"> 
<!-- Footer Section --> 
<p> 
    Repetative Strain Injury UK &copy; West Street, Jubille Way, Leeds, LS6 3QW. Email: <a href="[email protected]">[email protected]</a> 
    Tel: 0113 658102. Reg charity no: 1032941 
</p> 
</div> 
</div> <!-- end container --> 
</body> 
</html> 
+0

Je suggère de séparer PHP de HTML pour une meilleure compréhension. –

+0

Essayez de répercuter les variables après que le formulaire a été soumis pour voir si elles contiennent bien quelque chose. Et vous pouvez toujours remplacer 'if ($ name == '' ||' etc par 'if (strlen ($ name) <1 ||' etc juste pour voir si cela fonctionne. – James

Répondre

0

Vous avez le nom soumettre comme "submit_event" Vous devez donc utiliser

if (isset($_POST['submit_event'])) { 
    . 
    . 
    . 
} 

Hope it helps

0

Essayez d'ajouter

<input type="hidden" name="submit" value="1" /> 

à votre formulaire. Le tableau $ _POST n'a pas de valeur 'submit' dans le code que vous avez fourni, donc il va juste afficher à nouveau le formulaire.

Questions connexes