INSERT INTO
Johnpisttg
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
Pitet Messages postés 2845 Statut Membre -
Pitet Messages postés 2845 Statut Membre -
Bonjour,
Je suis en train de concevoir un site de news, mais j'ai quelques problèmes avec mon formulaire d'enregistrement. Je constate que lors de l'inscription, les données ne s'insèrent pas dans la base de donnée. Je laisse mes codes pour vérifications. S'il vous plait, aidez-moi.
index_formulaire.html:
inscription.php:
login.php:
config.php:
Je suis en train de concevoir un site de news, mais j'ai quelques problèmes avec mon formulaire d'enregistrement. Je constate que lors de l'inscription, les données ne s'insèrent pas dans la base de donnée. Je laisse mes codes pour vérifications. S'il vous plait, aidez-moi.
index_formulaire.html:
<form name="form1" method="post" action="admin/inscription.php">
<input class="input_inscrit" type="hidden" name="monfichier" id="monfichier" required="required" />
<div class=" rubrique">
<label for="society" class="contenu">Nom de la société *:</label>
<input class="input_inscrit" type="text" name="society" id="society" autofocus required="required" />
</div> <br/>
<div class=" rubrique">
<label for="society" class="contenu">N° fiscal *:</label>
<input class="input_inscrit" type="text" name="fisc_order" id="fisc_order" required="required" />
</div> <br/>
<div class=" rubrique">
<label for="email" class="contenu">E-mail de la société *:</label>
<input class="input_inscrit" name="email" id=" email" autofocus placeholder="Entrer email" data-msg-required="Entrez un e-mail" data-msg-email="Entrer un email valide" type="email" required="required"/>
</div> <br/>
<div class=" rubrique">
<label for="pays" class="contenu">Pays *:</label>
<select name="country" style="float: left; display: inline-block; width: 180px; margin-left: 180px; margin-top:-15px; vertical-align: top; required="required">
<option value="">-</option>
<option value="AF">Afghanistan</option>
<option value="ZA">Afrique du Sud</option>
<option value="AL">Albanie</option>
<option value="DZ">Algérie</option>
<option value="DE">Allemagne</option>
</select>
</div> <br/>
<div class=" rubrique">
<label for="address" class="contenu">Adresses de la société *:</label>
<input class="input_inscrit" type="text" name="adresse" id="adresse" required="required" />
</div>
<div class=" rubrique">
<label for="ville" class="contenu">Ville *:</label>
<input class="input_inscrit" type="text" name="ville" id="ville" autofocus required="required" />
</div> <br/>
<div class=" rubrique">
<label for="code_postal" class="contenu">Code postal *:</label>
<input class="input_inscrit" type="text" name="postcode" id="code_postal" autofocus required="required" />
</div> <br/>
<div class=" rubrique">
<label for="secteur" class="contenu">Secteur d'activité *:</label>
<select name="sectory" style="float: left; display: inline-block; width: 180px; margin-left: 180px; margin-top:-15px; vertical-align: top; required="required">
<option value="">-</option>
<option value="ComPub">Communication, publicité</option>
<option value="BatConst">Bâtiment et construction</option>
<option value="Admin">Administrations</option>
<option value="Com">Commerces</option>
<option value="AutoMoto">Automobile/Auto</option>
<option value="Telecom">Télécommunications</option>
<option value="Immo">Immobilier</option>
</select>
</div> <br/>
<div class=" rubrique">
<label for="descriptif" class="contenu">Descriptif :</label>
<textarea class="input_inscrit" type="text" name="descriptif" id="descriptif" cols="40" rows="4" /></textarea>
</div> <br/>
<div class=" rubrique">
<label for="telephone" class="contenu">Téléphone *:</label>
<input class="input_inscrit" type="tel" name="phone" id="telephone" autofocus required="required" />
</div> <br/>
<div class=" rubrique">
<label for="society" class="contenu">Votre nom *:</label>
<input class="input_inscrit" type="text" name="user_name" id="user_name" autofocus required="required" />
</div> <br/>
<div class=" rubrique">
<label for="pseudo" class="contenu">Pseudo *:</label>
<input class="input_inscrit" type="text" name="login" value="" id="login" autofocus/>
</div> <br/>
<div class=" rubrique">
<label for="mot de passe" class="contenu">Mot de passe *:</label>
<input class="input_inscrit" type="password" name="pass" value="" id="pass" />
</div> <br/>
<div class=" rubrique">
<label for="mot de passe" class="contenu">Confirmation password *:</label>
<input class="input_inscrit" type="password" name="pass_confirm" value="" id="pass_confirm" />
</div> <br/>
<p style="float: left;vertical-align: left; display: inline-block; margin-left:5px; margin-top:5px; margin-bottom:7px; width: auto;color: #585656;">Question secrète: Quelle est la raison sociale de votre entreprise?</p>
<div class=" rubrique">
<input class="input_inscrit" placeholder="votre réponse" type="text" name="secret" value="" id="secret" required="required" />
</div> <br/>
<div class=" rubrique">
<label for="web" class="contenu">Site web :</label>
<input class="input_inscrit" type="url" placeholder=" exemple:https://www.monsite.com" name="siteweb" id="site_web" autofocus/>
</div> <br/><br/>
<div style="float: left; width: auto; margin-top: 15px; margin-left: 191px; text-align: center;">
<input type="submit" name="inscription" value="S'inscrire" style="background:url('images/news_background.png');"/>
<input type="reset" value="Annuler" style="background:url('images/news_background.png');"/>
</div>
</form>
inscription.php:
<?php
header('Content-type: text/html; charset=UTF-8');
ob_start();
try
{
// connexion au serveur
include('config.php');
$username= NULL;
$usercode= NULL;
$username = stripslashes(htmlspecialchars($_POST['login']));
$usercode = stripslashes(htmlspecialchars($_POST['pass']));
// on teste si le visiteur a soumis le formulaire
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
// on teste l'existence de nos variables. On teste également si elles ne sont pas vides
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {
// on teste les deux mots de passe
if ($_POST['pass'] != $_POST['pass_confirm']) {
$erreur = 'Les 2 mots de passe ne sont pas identiques.';
}
else {
// on recherche si ce login est déjà utilisé par un autre membre
$query = $bdd->prepare("SELECT * FROM inscription_societe WHERE login=:val1 and pass=:val2");
$donnees = array('val1' => $username, 'val2' => $usercode);
$query->execute($donnees);
$array_result = $query->fetchAll();
$nb = count($array_result);
print_r($array_result);
if ($nb[0] == 0) {
$societe = $_POST['society'];
$email = $_POST['email'];
$pays = $_POST['country'];
$adresse_de_societe = $_POST['adresse'];
$ville_d_activite = $_POST['ville'];
$code_postal = $_POST['postcode'];
$secteur_d_activite = $_POST['sectory'];
$descriptions = $_POST['descriptif'];
$telephone = $_POST['phone'];
$numero_fiscal = $_POST['fisc_order'];
$login = $_POST['login'];
$pass = $_POST['pass'];
$pass_confirm = $_POST['pass_confirm'];
$adresse_url = $_POST['siteweb'];
$nom = $_POST['user_name'];
$req = $bdd->prepare('INSERT INTO inscription_societe(societe,email,pays,adresse_de_societe,ville_d_activite,code_postal,secteur_d_activite,descriptions,telephone,numero_fiscal,login,pass,pass_confirm,adresse_url,nom ) VALUES(:val1,:val2, :val3, :val4, :val5,:val6, :val7,:val8, :val9, :val10, :val11, :val12, :val13, :val14, :val15)');
$donnees = array(
':val1' => $societe,
'val2' => $email,
'val3' => $pays,
'val4' => $adresse_de_societe,
'val5' => $ville_d_activite,
'val6' => $code_postal,
'val7' => $secteur_d_activite,
'val8' => $descriptions,
'val9' => $telephone,
'val10' => $numero_fiscal,
'val11' => $login,
'val12' => $pass,
'val13' => $pass_confirm,
'val14' => $adresse_url,
'val15' => $nom
);
include('session.php');
header('Location: ../www.espace_perso.php');
exit();
}
else {
$erreur = 'Un membre possède déjà ce login.';
}
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
login.php:
<?php
ob_start();
try
{
// Initialisation des variables
$username= NULL;
$usercode= NULL;
// Prévenir les erreurs d'injection sql
$username = stripslashes(htmlspecialchars($_POST['login']));
$usercode = stripslashes(htmlspecialchars($_POST['pass']));
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
// connexion au serveur
include('config.php');
// on teste si une entrée de la base contient ce couple login / pass
$query = $bdd->prepare("SELECT * FROM inscription_societe WHERE login=:val1 and pass=:val2");
$donnees = array('val1' => $username, 'val2' => $usercode);
$query->execute($donnees);
$array_result = $query->fetchAll();
// si on obtient une réponse, alors l'utilisateur est un membre
$nb = count($array_result);
print_r($array_result);
if (isset($nb[0]) && $nb[0] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: ../www.espace_perso.php');
exit();
}
// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
elseif (isset($nb[0]) && $nb[0]== 0) {
$erreur = 'Compte non reconnu.';
}
// sinon, alors la, il y a un gros problème :)
else {
$erreur = 'Problème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
config.php:
<?php
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO(
'mysql:
host=localhost;
dbname=mabase',
'user',
'user_pass',
$pdo_options);
A voir également:
- INSERT INTO
- Touche insert - Guide
- Disk boot failure insert system disk and press enter - Guide
- Insert boot media in selected boot device and press a key ✓ - Forum Windows 10
- Activer touche insert sur ASUS UX32A - Forum Clavier
- Monitor will go into standby mode traduction français ✓ - Forum Matériel & Système
2 réponses
Bonjour
1-
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
2- retire les redirections le temps des tests
1-
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
2- retire les redirections le temps des tests
Salut,
Il semble que tu es une première erreur sur la vérification de $_POST['inscription'].
Dans le fichier inscription.php, tu vérifies au début si $_POST['inscription'] == 'Inscription'.
Or dans ton formulaire html, l'input name="inscription" à pour valeur value="S'inscrire".
Donc à l'envoi de ton formulaire, $_POST['inscription'] ne sera jamais égale à 'Inscription' mais sera égale à "S'inscrire".
Tu peux remplacer cette vérification par un simple if (!empty($_POST['inscription'])) pour vérifier que $_POST['inscription'] est défini et non vide, peu importe la valeur (c-a-d le texte du bouton).
Ainsi, si plus tard tu veux modifier le texte du bouton Inscription, ton code marchera toujours.
Bonne journée,
Il semble que tu es une première erreur sur la vérification de $_POST['inscription'].
Dans le fichier inscription.php, tu vérifies au début si $_POST['inscription'] == 'Inscription'.
Or dans ton formulaire html, l'input name="inscription" à pour valeur value="S'inscrire".
Donc à l'envoi de ton formulaire, $_POST['inscription'] ne sera jamais égale à 'Inscription' mais sera égale à "S'inscrire".
Tu peux remplacer cette vérification par un simple if (!empty($_POST['inscription'])) pour vérifier que $_POST['inscription'] est défini et non vide, peu importe la valeur (c-a-d le texte du bouton).
Ainsi, si plus tard tu veux modifier le texte du bouton Inscription, ton code marchera toujours.
Bonne journée,
J'ai retiré les redirections selon votre conseil, mais j'ai constater qu'à l'envoie des données je reçois ce message d'erreur:
Array( ). S'il vous plait, je ne retrouve pas ce qu'il faut faire dans ce cas, j'ai besoin de votre aide, Jordane45.
Tu as mis un bloc try/catch à chaque requête ?
Ton "Array ()" il apparait où ? Tu as un message d'erreur ?
En fait mon "Array ()" apparait sur la page inscription.php.
En attendant que vous m'aidiez, je vais suivre le lien indiqué pour voir si j'y arriverai.
Merci Jordane45
print_r($array_result);
Et pourquoi les données ne s'incèrent pas dans la base? je vais essayer voir ce que ça va me donner
Merci Jordane45