8791 sujets

Développement web côté serveur, CMS

Bonjour
Je me doute que le titre n'est pas très explicite Smiley lol mais je vais essayer d'être plus clair maintenant.
J'avais un formulaire d'inscription sur un site qui fonctionnait très bien.
Je le reprends pour un nouveau client, en ne changeant que des nom de variables, pas la fonction.Et là...plus rien! Smiley eek Exemples: Si je teste mon 1er formulaire vide, il me renvoie bien les infos attendues (nombre de champs vide); si je le remplis avec des erreurs (nombre de chiffres dans un numéro de tel ou erreur dans l'adresse email), pas de problème, il me signale aussi. Et cerise sur le gâteau, quand tout est bien renseigné, les données sont bien insérées dans la base...
Quand je teste mon 2eme formulaire (le même que le 1er à l'exception du nom de certaines variables donc), quelque soit le type d'erreur, il ne me renvoie rien...mais alors, rien de rien, et si je le remplis complètement et sans erreur...il ne remplis pas la base.... Smiley biggol
Voici le code (avant le doctype):
<?php
include ('includes/connect.inc.php');
include ('includes/creat_pass.php'); //Génération automatique du mot de passe qui sera crypé dans la base - md5

?>
<?php

$DebugResultat = 0; // Affichage résultat : Mettre 0 quand les tests sont terminés
$NePasVerifier = array(); // Le nom des champs à exclure du test champs vides ( Ex : $NePasVerifier = array('tel','cp'); )

#################### Fonctions

function VerifForm ( $DonneesForm, $NePasVerifier )
{
	#################### Préparation
	// Dans ce tableau on stockera les messages d'erreurs
	$Erreurs = array();
	// On construit un tableau : Clé = nom du champ, valeur = valeur du champ
	$formulaire = array();
	foreach( $DonneesForm as $cle => $valeur )
	{
		$formulaire[$cle] = $valeur;
	}
	#################### Vérification du formulaire
	// On recherche les valeurs NULL( champs vides )
	$NbChampsVides = 0;
	foreach ( $formulaire as $cle => $valeur )
	{
	if ( !in_array( $cle, $NePasVerifier ) )
		{
			if ( $valeur == NULL )
			{
				$NbChampsVides ++;
			}
		}
	}
	if ( $NbChampsVides != 0 )
	{
		$Erreurs[1] = $NbChampsVides.' champ(s) obligatoire(s) non rempli(s)';
	}
	// On vérifie que le code postal soit bien une chaîne numérique et qu'il comporte 5 chiffres
	if ( ( isset( $formulaire['cp'] ) ) && ( !is_numeric( $formulaire['cp'] ) || strlen( $formulaire['cp'] ) != 5 ) )
	{
		$Erreurs[2] = 'Le code postal doit être composé de 5 chiffres !';
	}
	// On vérifie que le téléphone soit bien une chaîne numérique et qu'il comporte 10 chiffres
	if ( ( isset( $formulaire['telephone'] ) ) && ( !is_numeric( $formulaire['telephone'] ) || strlen( $formulaire['telephone'] ) != 10 ) )
	{
		$Erreurs[3] = 'Le numéro de téléphone doit être composé de 10 chiffres !';
	}

	// On vérifie la structure de l'email
	if ( ( isset( $formulaire['email'] ) ) && ( !ereg( '.+(@.+)(\.[[:alpha:]]{2}([[:alpha:]]?))$', $formulaire['email'] ) ) )
	{
		$Erreurs[4] = 'Le format de l\'adresse email ne semble pas valide !';
	}
	#################### Fin
	// On construit la liste des erreurs s'il y en a
	if ( $Erreurs != NULL )
	{
		$ErreursForm = '<ul class="erreurs">';
		foreach( $Erreurs as $cle => $valeur )
		{
			$ErreursForm .= '<li>'.$valeur.'</li>';
		}
		$ErreursForm .= '</ul>';
	}
	else {
		$ErreursForm = NULL;
	}
	// On retourne le tableau $formulaire et la liste des erreurs
	return array( $formulaire, $ErreursForm ) ;
}

#################### Traitement

$ErreursForm = NULL;
$formulaire = NULL;
$resultat = NULL;
if ( isset( $_POST['nom'] ) )
{
	// Appel de la fonction de vérification
	list( $formulaire, $ErreursForm ) = VerifForm( $_POST, $NePasVerifier );
	// Si la fonction ne retourne pas d'erreurs, on envoi les données
	if ( $ErreursForm == NULL )
	{
		// Debugage : résultat
		if ( $DebugResultat == 1 )
		{
			$resultat = '<ul>';
			foreach( $formulaire as $cle => $valeur )
			{
				$resultat .= '<li>'.$cle.' : '.$valeur.'</li>';
			}
			$resultat .= '</ul>';
		}
		//définition de variables
		$prenom = $_POST['prenom'];
		$nom = $_POST['nom'];
		$adresse = $_POST['adresse'];
		$ville = $_POST['ville'];
		$cp= $_POST['cp'];
		$telephone = $_POST['telephone'];
		$pays = $_POST['pays'];
		$email = $_POST['email'];
		$mdp = $motdepasse;
		$mdp_mess = $mdp;
		$mdp = md5($_POST['mdp']);
		$dpt = substr($cp, 0, 2);
		if(!get_magic_quotes_gpc())
		{
		$prenom = addslashes($prenom);
		$nom = addslashes($nom);
		$adresse= addslashes($adresse);
		$ville = addslashes($ville);
		}
		//verification si le client n'est pas déjà inscrit
	$sql = 'SELECT * FROM clients WHERE nom="'.mysql_real_escape_string($_POST['nom']).'" AND prenom="'.mysql_real_escape_string($_POST['prenom']).'" AND email = "'.mysql_escape_string($_POST['email']).'"';
	$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
	$data = mysql_fetch_array($req);
	 if ($data[0] == 0) {
	 		// on enregistre les données dans la bdd, dans la table
   $sql = "INSERT INTO clients (idclient, date, nom, prenom, email, adresse, cp, ville, dpt, pays, telephone, mdp) VALUES ('', NOW(), '" .$nom. "', '" .$prenom. "', '" .$email. "', '" .$adresse. "', '" .$cp. "', '" .$ville. "', '" .$dpt. "', '" .$pays. "', '" .$telephone. "', '" .$mdp. "') ";
//signalement si pb lors de l'insertion	
  mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
  //récupération de l'id client
  $id = mysql_insert_id();

	  include ('code_boutik/mail_inscript.php');
    session_start();
    $_SESSION['idclient'] = $id;
    $_SESSION['nom'] = $nom;
    $_SESSION['prenom'] = $prenom;
    $_SESSION['email'] = $email;
	$_SESSION['mdp'] = $mdp;
    header('Location: cpte_client.php');
    exit();
		// Fin de l'action
		        mysql_close();
   }
		
    else{
    $erreur = " <b>$prenom $nom</b> est déjà inscrit dans notre base. Si vous avez perdu votre mort de passe, contactez le webmaster. Merci, et à bientôt.
	<br />
	<a href=\"acc_boutik.php\">Cliquez ici pour revenir à l'accueil de la boutique</a>, ou <a href=\"identif.php\">ici pour vous identifier</a>.";    }

  

	}
}
?>

et voici le formulaire :
		  <p>
<?php
echo $resultat;
echo $ErreursForm;
?>	  
		  </p>
		  <br /><br /><br /><br />
		  <form action="#" id="enreg" method="post">

		  
		  
	<p class="double">
		<label for="nom">Nom</label>
		<input type="text" id="nom" value="<?php $formulaire['nom']; ?>" />
	</p>
	<p class="double">
		<label for="prenom">Prénom</label>
		<input type="text" id="prenom" value="<?php $formulaire['prenom']; ?>" />
	</p>
	<p class="double">
		<label for="adresse">Adresse
		<span class="info">(Numéro et rue)</span></label>
		<input type="text" id="adresse" value="<?php $formulaire['adresse']; ?>" />
	</p>
	<p class="double">
		<label for="cp">Code postal
		<span class="info"></span></label>
		<input type="text" id="cp" value="<?php $formulaire['cp']; ?>" />
	</p>
	<p class="double">
		<label for="ville">Ville
		<span class="info"></span></label>
		<input type="text" id="ville" value="<?php $formulaire['ville']; ?>" />
	</p>
	<p class="double">
		<label for="pays">Pays
		<span class="info">(uniquement pour l'étranger)</span></label>
		<input type="text" id="pays" value="<?php $formulaire['pays']; ?>" />
	</p>
	<p class="double">
		<label for="telephone">Téléphone</label>
		<input type="text" id="telephone" value="<?php $formulaire['telephone']; ?>" />
	</p>
	<p class="double">
		<label for="email">Votre email
		<span class="info"></span></label>
		<input type="text" id="email" value="<?php $formulaire['email']; ?>" />
	</p>
	<p class="simple">
		<input class="soumi" type="submit" name="enregistrement" value="Envoyer" />
	</p>
</form>
<p>
		<?php
		if (isset($erreur)) echo '<br />',$erreur;  
		?>
</p>

Voilà...Si quelqu'un(e) voyait où est le(s) problème(s), je suis très intéressé, parce que là, je ne comprends plus (ou ne vois plus rien...)
D'avance merci!
Tchô
Modifié par boro64 (15 Dec 2010 - 18:55)
Bonsoir Heyoan
J'ai vérifié, aucune incidence...Remplacé par le nom de la page, même non-résultat.
Pour info, je teste les 2 formulaires simultanément sur le même hébergement, donc pas de différence d'environnement/BDD.
Une autre idée? Smiley lol
boro64 a écrit :
Une autre idée?
Yep ! Dans tes éléments INPUT tu as bien renseigné l'attribut id mais pas name : du coup aucune variable n'est transmise ce qui explique pourquoi if ( isset( $_POST['nom'] ) ) n'est jamais vérifié.

Dans tous les cas de problèmes avec des formulaires il faut commencer par vérifier ce qu'on reçoit :
if($_SERVER['REQUEST_METHOD']=='POST') {
	echo '<pre>';
	print_r($_POST);
	echo '</pre>';
	echo '<pre>';
	print_r($_FILES);
	echo '</pre>';
}

Modifié par Heyoan (15 Dec 2010 - 18:50)
Smiley ola Un IMMENSE MERCI à toi Heyoan !!!!! Smiley prie
Bon, on mettre ça sur le compte de la fatigue et de l'âge !
Merci encore Smiley clapclap
A bientôt ! Smiley lol