INSERT INTO

Johnpisttg Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
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:

<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);

2 réponses

jordane45 Messages postés 40050 Statut Modérateur 4 753
 
Bonjour

1-
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

2- retire les redirections le temps des tests
1
Johnpisttg Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Merci infiniment de votre aide, Jordane45.
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.
0
jordane45 Messages postés 40050 Statut Modérateur 4 753 > Johnpisttg Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Tu modifié ton code comme recommandé dans le lien que je t'ai donné ?
Tu as mis un bloc try/catch à chaque requête ?
Ton "Array ()" il apparait où ? Tu as un message d'erreur ?
0
Johnpisttg Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 40050 Statut Modérateur
 
Bonsoir Jordane45,
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
0
jordane45 Messages postés 40050 Statut Modérateur 4 753 > Johnpisttg Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Ce "Array ()" apparaît à cause (grâce. ..) à la ligne
print_r($array_result);
0
Johnpisttg Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 40050 Statut Modérateur
 
Ok, .

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
0
Pitet Messages postés 2845 Statut Membre 527
 
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,
0