Question a propos de base de donné MySql
Résolu/Fermé
A voir également:
- Question a propos de base de donné MySql
- Formules excel de base - Guide
- Base de registre - Guide
- Formules mathématiques de base - Télécharger - Études & Formations
- Mysql community server - Télécharger - Bases de données
- Célia doit nettoyer le tableau ci-dessous pour l’ajouter à la base de données de son entreprise. les données sont ensuite traitées automatiquement. quelles sont les 4 cellules qui risquent de poser problème ? ✓ - Forum Excel
4 réponses
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.
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.
<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.
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)."','')";