Bonjour
Je me doute que le titre n'est pas très explicite
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!
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....
Voici le code (avant le doctype):
et voici le formulaire :
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)
Je me doute que le titre n'est pas très explicite

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!

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....

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)