Envoi formulaire vers base de donnée ?

Résolu
Utilisateur anonyme -  
Nhay Messages postés 838 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai créé un BDD en ligne et j'ai fais un formulaire qui permetterait d'envoyer des infos vers cette BDD. Toutes fois, mon code ne fonctionne pas...
Il y a deux pages PHP. La 1ère c'est "form.php" (c'est le formulaire), la 2ème c'est "php-form-processor.php" (c'est l'action qu'execute le bouton "Submit" dans le formulaire et qui est censé inscrire les infos dans la BDD. Malheureusement ça ne le fait pas... voici le code de "form.php" :

<!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>Formulaire</title>
</head>
<body>
<form action="php-form-processor.php" method="post">
  <p>Quel est votre film préféré ?</p>
    <input type="text" name="formMovie" maxlength="50" value="<?=$varMovie;?>" />
  <p>Quel est votre nom ?</p>
    <input type="text" name="formName" maxlength="50" value="<?=$varName;?>" />
  <p>Selectionnez votre sexe</p>
    <select name="formGender">
      <option value="">Selectionnez...</option>
      <option value="M">Masculin</option>
      <option value="F">Féminin</option>
    </select>
  <br />
  <br />
    <input type="submit" name="formSubmit" value="Submit" />
</form>
</body>
</html>



Et voici le code de "php-form-processor.php" :

<?php
	if($_POST['formSubmit'] == "Submit") 
    {
		$errorMessage = "";
		
		if(empty($_POST['formMovie'])) 
        {
			$errorMessage .= "<li>You forgot to enter a movie!</li>";
		}
		if(empty($_POST['formName'])) 
        {
			$errorMessage .= "<li>You forgot to enter a name!</li>";
		}
		if(empty($_POST['formGender'])) 
        {
			$errorMessage .= "<li>You forgot to select your Gender!</li>";
		}

        $varMovie = $_POST['formMovie'];
		$varName = $_POST['formName'];
		$varGender = $_POST['formGender'];

		if(empty($errorMessage)) 
        {
			$db = mysql_connect("**********","**********","************");
			if(!$db) die("Error connecting to MySQL database.");
			mysql_select_db("***************" ,$db);

			$sql = "INSERT INTO **************** (moviename,yourname,gender) VALUES (".
							PrepSQL($varMovie) . ", " .
							PrepSQL($varName) . ", " .
							PrepSQL($varGender) . ")";
			mysql_query($sql);
			
			header("Location: thank-you.html");
			exit();
		}
	}
            
    // function: PrepSQL()
    // use stripslashes and mysql_real_escape_string PHP functions
    // to sanitize a string for use in an SQL query
    //
    // also puts single quotes around the string
    //
    function PrepSQL($value)
    {
        // Stripslashes
        if(get_magic_quotes_gpc()) 
        {
            $value = stripslashes($value);
        }

        // Quote
        $value = "'" . mysql_real_escape_string($value) . "'";

        return($value);
    }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
	<title>PHP Form processing example</title>
<!-- define some style elements-->
<style>
label,a 
{
	font-family : Arial, Helvetica, sans-serif;
	font-size : 12px; 
}

</style>	
</head>

<body>

       <?php
		    if(!empty($errorMessage)) 
		    {
			    echo("<p>There was an error with your form:</p>\n");
			    echo("<ul>" . $errorMessage . "</ul>\n");
            }
        ?>

		<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
			<p>
				<label for='formMovie'>Which is your favorite movie?</label><br/>
				<input type="text" name="formMovie" maxlength="50" value="<?=$varMovie;?>" />
			</p>
			<p>
				<label for='formName'>What is your name?</label><br/>
				<input type="text" name="formName" maxlength="50" value="<?=$varName;?>" />
			</p>
			<p>
				<label for='formGender'>What is your Gender?</label><br/>
				<select name="formGender">
					<option value="">Select...</option>
					<option value="M"<? if($varGender=="M") echo(" selected=\"selected\"");?>>Male</option>
					<option value="F"<? if($varGender=="F") echo(" selected=\"selected\"");?>>Female</option>
				</select>
			</p>
			<input type="submit" name="formSubmit" value="Submit" />
		</form>
		
<p>
<a href='http://www.html-form-guide.com/php-form/php-form-processing.html'
>'PHP form processing' article page</a>
</p>

</body>
</html>



Donc voilà tout ça ne marche pas... HELP PLEASE !


MERCI D'AVANCE !!!
Chris.


1 réponse

Nhay Messages postés 838 Date d'inscription   Statut Membre Dernière intervention   126
 
Hum, le plus simple pour chercher l'erreur, c'est déjà d'essayer de faire un echo sur ta requête ($sql) (Il faut donc enlever le header location temporairement), tu verra donc si tu arrive bien jusque là, et si ta requête n'est pas mauvaise.
ça permettra aussi aux erreur de s'afficher.
0
Utilisateur anonyme
 
J'enlève quelle ligne donc ?
0
Nhay Messages postés 838 Date d'inscription   Statut Membre Dernière intervention   126
 
tu enlève le exit et le header location, juste le temps de faire un echo $sql;
tu verra ainsi si comment php interprète ta requête, si elle s'affiche, met là dans phpmyadmin pour savoir ce qui cloche, si rien ne s'affiche, c'est que tu n'arrive même pas à la requête et que l'un des if avant n'est pas bon.
0
Utilisateur anonyme
 
Ca marche dans phpmyadmin...
1
Nhay Messages postés 838 Date d'inscription   Statut Membre Dernière intervention   126
 
Hum, alors là, je ne vois pas, si l'écho fonctionne, que le requête une fois interprété par php est bonne il ne devrait pas y avoir de soucis pour l'insertion :/
0