[PHP] validation d1 formulaire via phpmyadmin

Bonjour,

Voilà j'ai besoin que qq'un qui me dise où est-ce que mon code cloche.
Il permet d'enregistrer un eleve grâce à un formulaire dans la base de donnée phpmyadmin.
Mon problème l'enregistrement dans la base de données ne fonctionne pas.

FORMULAIRE :
<form method="post" action="inscription.php">
<table>
<tr>
<td>Nom</td>
<td><input type="text" name="nom"></td>
</tr>

<tr>
<td>Prenom</td>
<td><input type="text" name="prenom"></td>
</tr>

<tr>
<td>Date de naissance</td>
<td><input type="text" size="10" name="dat_naiss">(jj/mm/aaaa)</td>
</tr>
</table>

<input type="submit" value="Valider" name="Valid">

</form>

CODE PHP (dans la même page):
<?php
include("inclusion/connexion.php");

if(isset($Valid))
{
if (empty($_REQUEST['nom']) || empty($_REQUEST['prenom']) || empty($_REQUEST['dat_naiss']))
die("ERREUR : tous les champs doivent etre remplis.");

$sql="INSERT INTO eleve (nom_eleve, pnom_eleve, dat_naiss_eleve)
VALUES ('".$_REQUEST['nom']."','".$_REQUEST['prenom']."','".$_REQUEST['dat_naiss']."')";

mysql_query($sql);

if (mysql_query($sql) != false)
print("eleve < ".$_REQUEST['nom']." > enregistré.");
else
print("Echec lors de la création de la fiche.");

mysql_close();
}
?>

Merci d'avance
Configuration: Windows XP
Internet Explorer 6.0

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. et lorsque je clik sur Valider sans avoir saisi aucune information
    il est écrit "eleve < > enregistré."
    Pas de message d'erreur.
    Bon en tout cas vous m'avez bcp aidé et je vous remercie. Je ne vais pas vous emmebêter plus
    au revoir
    1. Cette erreur signifie que php ne comprend pas une varaible.

      C'est signe d'une erreur de syntaxe quelque part , en général ligne précédente.

      La je n'en vois pas mais regardes bien ton fichier connexion.php ou mets le code de ce fichier en masquant les codes d'accès à la base bien sûr.

      @lain
      1. J'ai 2/3 petites erreurs et maintenant qd je saisi nom, prenom et date de naissance et que je fais Valider ça me dit
        "eleve < toto > enregistré."
        Par contre qd je vais ds la base de données une ligne correspond à cet enregistrement mais sans les données (vide)
        1. J'ai rectifier pour les 2 $prenom, faute d'inattention mais ça fait toujours la même chose.
          Si il y avait eu une erreur au niveau de la requette il y aurait écrit "Pb avec la requette" mais ce n'est pas le cas
          pour mon inclusion tout est correct, il ne manque pas de ";" non plus.

          Savez-vous ce que signifie :
          "Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\wamp\www\directeur\inscription.php on line 77"
          (77 correspond toujours à la même ligne)
          ?
          1. Essayes avec:

            $sql="INSERT INTO eleve (nom_eleve, pnom_eleve, dat_naiss_eleve)  VALUES ('".$nom."','".$prenom."','".$date_naiss."')";
            


            J'avais mis deux fois $prenom
            et vérifies bien que tu n'ai pas une erreur dans la dernière ligne de ton fichier inclus "connexion.php"

            un ; qui manque par exemple
            1. Merci d'avoir pris le temps de résoudre mon problème mais j'ai encore un problème

              Il s'affiche :

              Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\wamp\www\directeur\inscription.php on line 75

              72 $form_ok=1;
              73 include("inclusion/connexion.php");
              74 $sql="INSERT INTO eleve (nom_eleve, pnom_eleve, dat_naiss_eleve)
              75 VALUES ('".$nom."','".$prenom."','".$prenom."')";
              76
              77 $enr=mysql_query($sql) or die ("Pb avec la requette :".mysql_error());
              1. Rebonjour,

                En complement à mon précedent post:

                essayes comme ça fichier inscription.php:

                <html>
                <?php
                //int variables
                $form_ok=0;
                //recup des valeurs postées en passant la fonction htmlentities (protection contre codes malicieux, on ne sait jamais)
                	// si tu ne comprends pas les 3 lignes ci dessous vas voir sur Google ou Exalead "PHP objet ternaire"
                	$nom=isset($_POST['nom']) ? htmlentities($_POST['nom']) : "";
                	$prenom=isset($_POST['prenom']) ? htmlentities($_POST['prenom']) : "";
                	$date_naiss=isset($_POST['dat_naiss']) ? htmlentities($_POST['dat_naiss']) : "";
                
                if(isset($_POST['Valid'])){
                	
                	
                	if ($nom=="" || $prenom =="" || $date_naiss ==""){// si au moins un des champs est vide
                		print "<font color=\"red\">ERREUR : tous les champs doivent etre remplis.</font>";
                		
                	}else{
                		$form_ok=1;
                		
                		include("inclusion/connexion.php");
                		$sql="INSERT INTO eleve (nom_eleve, pnom_eleve, dat_naiss_eleve)
                		VALUES ('".$nom."','".$prenom."','".$prenom."')";
                
                		$enr=mysql_query($sql) or die ("Pb avec la requette :".mysql_error());// rajouté trace erreur
                
                		//if (mysql_query($sql) != false)  //comme ça c'est pas bon car tu fais deux fois la commande mysql_query
                		if($enr){ // sous entendu $enr true
                			print("Eleve < ".$_POST['nom']." > enregistré.");
                		}else{
                			print("Echec lors de la création de la fiche.");
                		}
                		mysql_close();
                		
                		}
                }		
                if($form_ok==0){// si premier affichage ou si saisies  non comformes on affiche le formulaire
                ?> 
                
                	<form name="ma_form" method="post" action="inscription.php">
                	<table>
                	<tr>
                	<td>Nom</td>
                	<td><input type="text" name="nom" value="<?php print $nom; ?>"></td>
                	<!-- value=".........." c'est pour que si une des saisies est non comforme ça réaffiche celles déja saisie  -->
                	</tr>
                
                	<tr>
                	<td>Prenom</td>
                	<td><input type="text" name="prenom" value="<?php print $prenom; ?>"></td>
                	</tr>
                
                	<tr>
                	<td>Date de naissance</td>
                	<td><input type="text" size="10" name="dat_naiss" value="<?php print $date_naiss; ?>">(jj/mm/aaaa)</td>
                	</tr>
                	</table>
                
                	<input type="submit" value="Valider" name="Valid">
                
                	</form>
                <?php
                }
                ?>
                </html>
                
                1. Bonjour,

                  qqs erreurs: il faut récuperer par $_POST

                  Essayes comme ça:

                  <?php
                  include("inclusion/connexion.php");
                  
                  if(isset($_POST['Valid']))
                  {
                  if (empty($_POST['nom']) || empty($_POST['prenom']) || empty($_POST['dat_naiss'])){
                  
                  $sql="INSERT INTO eleve (nom_eleve, pnom_eleve, dat_naiss_eleve)
                  VALUES ('".$_POST['nom']."','".$_POST['prenom']."','".$_POST['d at_naiss']."')";
                  
                  $enr=mysql_query($sql) or die ("Pb avec la requette :".mysql_error());// rajouté trace erreur
                  
                  //if (mysql_query($sql) != false)  //comme ça c'est pas bon car tu fais deux fois la commande mysql_query
                  if($enr){ // sous entendu $enr true
                  	print("eleve < ".$_POST['nom']." > enregistré.");
                  }else{
                  	print("Echec lors de la création de la fiche.");
                  }
                  mysql_close();
                  }
                  }else{
                  	print "ERREUR : tous les champs doivent etre remplis.";
                  }
                  ?>