Question a propos de base de donné MySql

[Résolu/Fermé]
Signaler
-
 le père -
Bonjour,
Voila j'ai un petit problème je sais pas si ces normale ou pas mais quand je crées une base de données du nom "bleedz" avec une table "membres" et dans cette table il a les champs : membre_id et membre_pseudo ! J'espère que vous suivez jusque là :) Bref...
Touts fonctionne correctement a partir d'un formulaire d'inscription simple, je sais inscrire un pseudo dans la table. Mais voila, le problème c'est que j'aimerai ajouter un champ dans la table "membre_mdp" mais une fois que je veux m'inscrire de nouveau la il ne ce passe plus rien ! Et quand je supprime le champ membre_mdp la je peux m'inscrire sans problème...
Que ce passe-t-il ? Je comprend pas !
Merci, bonne journée a vous.


4 réponses

Personne peut me dire comment je peux résoudre ce problème gênant ?
Bonjour

Il y a un tas de possibilité, pas facile de te répondre sans voir ton script d'inscription.
Une possibilité, c'est que tu n'as pas donné de valeur par défaut à ton nouveau champ, et que ton script ne fournit aucune valeur. Donc la base de données ne sait pas quelle valeur donner, d'où erreur et inscription pas faite.
Voici le code de ma page inscription : ( Je n'ai pas rajouter d'autre champ car j'aimerai résoudre ce problème avant de continuer )

<body>
<?php
session_start();
header('Content-type: text/html; charset=utf-8');
include('config.php');

/********Actualisation de la session...**********/

include('fonctions.php');
connexionbdd();
actualiser_session();

/********Fin actualisation de session...**********/

if(isset($_SESSION['membre_id']))
{
header('Location: '.ROOTPATH.'/index.php');
exit();
}
?>
<form action="index.php" method="post" name="Inscription">
<table width="300" border="0" align="center">
Inscription<br/><br/>

<label for="pseudo" class="float">Pseudo :</label> <input type="text" name="pseudo" id="pseudo" size="30" /><br /><br/>

<input type="submit" value="Envoyer" />
</table>
</form>
<?php
function checkpseudo($pseudo)
{
if($pseudo == '') return 'empty';
else if(strlen($pseudo) < 3) return 'tooshort';
else if(strlen($pseudo) > 32) return 'toolong';

else
{
$result = sqlquery("SELECT COUNT(*) AS nbr FROM membres WHERE membre_pseudo = '".mysql_real_escape_string($pseudo)."'", 1);
global $queries;
$queries++;

if($result['nbr'] > 0) return 'exists';
else return 'ok';
}
}
?>
<?php

$_SESSION['erreurs'] = 0;

//Pseudo
if(isset($_POST['pseudo']))
{
$pseudo = trim($_POST['pseudo']);
$pseudo_result = checkpseudo($pseudo);
if($pseudo_result == 'tooshort')
{
$_SESSION['pseudo_info'] = '<span class="erreur">Le pseudo '.htmlspecialchars($pseudo, ENT_QUOTES).' est trop court, vous devez en choisir un plus long (minimum 3 caractères).</span><br/>';
$_SESSION['form_pseudo'] = '';
$_SESSION['erreurs']++;
}

else if($pseudo_result == 'toolong')
{
$_SESSION['pseudo_info'] = '<span class="erreur">Le pseudo '.htmlspecialchars($pseudo, ENT_QUOTES).' est trop long, vous devez en choisir un plus court (maximum 32 caractères).</span><br/>';
$_SESSION['form_pseudo'] = '';
$_SESSION['erreurs']++;
}

else if($pseudo_result == 'exists')
{
$_SESSION['pseudo_info'] = '<span class="erreur">Le pseudo '.htmlspecialchars($pseudo, ENT_QUOTES).' est déjà pris, choisissez-en un autre.</span><br/>';
$_SESSION['form_pseudo'] = '';
$_SESSION['erreurs']++;
}

else if($pseudo_result == 'ok')
{
$_SESSION['pseudo_info'] = 'ok';
$_SESSION['form_pseudo'] = $pseudo;
}

else if($pseudo_result == 'empty')
{
$_SESSION['pseudo_info'] = '<span class="erreur">Vous n\'avez pas entré de pseudo.</span><br/>';
$_SESSION['form_pseudo'] = '';
$_SESSION['erreurs']++;
}
}
if($_SESSION['erreurs'] == 0)
{
$insertion = "INSERT INTO membres VALUES(NULL, '".mysql_real_escape_string($pseudo)."')";
if(mysql_query($insertion))
{
$queries++;
vidersession();
$_SESSION['inscrit'] = $pseudo;
/*informe qu'il s'est déjà inscrit s'il actualise, si son navigateur
bugue avant l'affichage de la page et qu'il recharge la page, etc.*/
}
}
if($_SESSION['erreurs'] > 0)
{
echo $_SESSION['pseudo_info'];
}
?>
</body>

Et voici ma table membres :

CREATE TABLE 'test'.'membres' (
'membre_id' INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
'membre_pseudo' VARCHAR( 32 ) NOT NULL ,
'membre_mdp' VARCHAR( 50 ) NOT NULL ,
UNIQUE (
'membre_pseudo'
)
) ENGINE = MYISAM ;

J'explique le problème pour être un peu plus claire !
A la base ma table comportait que membre_id et membre_pseudo et le code fonctionnait correctement. Mais voila, a fin d'améliorer ma fiche d'inscription, je veux rajouter le champ "membre_mdp" pour mettre un mot de passe a la Session.
Mais gros soucis j'ai rajouter le champ et quand je veux m'inscrire sans mettre le mot de passe biensur plus rien ne sans registre... Et quand je supprime "membre_mdp" de la table, le code fonctionne !
Quelqu'un pourrais m'aider a trouver l'erreur dans ma page ou dans autre chose ?
Car si par après je rajoute des champs par exemple : "membre_activiter" mais qui ne sont pas a remplir directement sur la page d'inscription ca va me poser soucis !
Grand merci a toi de m'aider !!! Bonne soirée.
C'est bien ce que je disais : tu n'as pas défini de valeur par défaut pour ton champ membre_mdp, mais tu ne fournis pas de valeur pour ce champ.
Parmi les 378 manières possibles de régler ça, ajoute à ta requête d'insertion une chaîne vide pour la valeur de membre_mdp.
$insertion = "INSERT INTO membres VALUES(NULL, '".mysql_real_escape_string($pseudo)."','')";