INSERT INTO

Fermé
Johnpisttg Messages postés 4 Date d'inscription lundi 2 octobre 2017 Statut Membre Dernière intervention 9 octobre 2017 - 2 oct. 2017 à 21:47
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 11 oct. 2017 à 16:55
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 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
2 oct. 2017 à 21:51
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 lundi 2 octobre 2017 Statut Membre Dernière intervention 9 octobre 2017
4 oct. 2017 à 21:45
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 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649 > Johnpisttg Messages postés 4 Date d'inscription lundi 2 octobre 2017 Statut Membre Dernière intervention 9 octobre 2017
5 oct. 2017 à 00:11
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 lundi 2 octobre 2017 Statut Membre Dernière intervention 9 octobre 2017 > jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024
9 oct. 2017 à 21:21
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 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649 > Johnpisttg Messages postés 4 Date d'inscription lundi 2 octobre 2017 Statut Membre Dernière intervention 9 octobre 2017
9 oct. 2017 à 21:23
Ce "Array ()" apparaît à cause (grâce. ..) à la ligne
print_r($array_result);
0
Johnpisttg Messages postés 4 Date d'inscription lundi 2 octobre 2017 Statut Membre Dernière intervention 9 octobre 2017 > jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024
Modifié le 9 oct. 2017 à 21:45
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 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
11 oct. 2017 à 16:55
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