Probleme SQL site web

Résolu/Fermé
makamine16 Messages postés 40 Date d'inscription vendredi 2 janvier 2009 Statut Membre Dernière intervention 3 avril 2011 - Modifié par makamine16 le 2/04/2011 à 18:01
makamine16 Messages postés 40 Date d'inscription vendredi 2 janvier 2009 Statut Membre Dernière intervention 3 avril 2011 - 2 avril 2011 à 23:21
Bonjour,
j'ai un problème dans le script de mon site web, car quand je vaut qu'un client crée un session et qu'il clic sur inscription voici le message d'erreur qui s'affiche

[ Erreur SQL !
SELECT * FROM memb WHERE pseudo="fifou"
No database selected ]

et voici mon script:

[ <?php
// 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['pseudo']) && !empty($_POST['pseudo'])) && (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 sont différents.';
}
else {
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('memb', $base);

// on recherche si ce login est déjà utilisé par un autre membre
$sql = 'SELECT * FROM memb WHERE pseudo="'.mysql_escape_string($_POST['pseudo']).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);

if ($data[0] == 0) {
$sql = 'INSERT INTO memb VALUES("", "'.mysql_escape_string($_POST['pseudo']).'", "'.mysql_escape_string(md5($_POST['pass'])).'")';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

session_start();
$_SESSION['pseudo'] = $_POST['pseudo'];
header('Location: membre.php');
exit();
}
else {
$erreur = 'Un membre possède déjà ce login.';
}
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?> ]

et le script du formulaire:

[ Inscription :<br />
<form action="inscription.php" method="post">
Nom : <input type="text" name="nom" value="<?php if (isset($_POST['nom'])) echo htmlentities(trim($_POST['nom'])); ?>"><br />
Prenom : <input type="text" name="prenom" value="<?php if (isset($_POST['prenom'])) echo htmlentities(trim($_POST['prenom'])); ?>"><br />
Pseudo : <input type="text" name="pseudo" value="<?php if (isset($_POST['pseudo'])) echo htmlentities(trim($_POST['pseudo'])); ?>"><br />
Adresse e-mail : <input type="text" name="email" value="<?php if (isset($_POST['email'])) echo htmlentities(trim($_POST['email'])); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
Profil : <input type="text" name="profil" value="<?php if (isset($_POST['profil'])) echo htmlentities(trim($_POST['profil'])); ?>"><br />
<input type="submit" name="inscription" value="Inscription">
</form>
<?php
if (isset($erreur)) echo '<br />',$erreur;
?> ]

désoler je c que c'est extrêmement lange, mais pauvez vous m'aider



A voir également:

10 réponses

Il ne faudrait pas confondre nom de base de données et nom de table.

Une base de données contient des tables, une table est structurée par des champs.
1
Il faut effectivement que ça devienne
mysql_select_db ('test', $base);

Le nom des tables à consulter est précise dans la requête SQL.
SELECT * FROM memb WHERE pseudo="fifou"

On pourrait même éventuellement se passer d'un "mysql_select_db" en faisant :
SELECT * FROM test.memb WHERE pseudo="fifou"

En passant, "test" est une base de données par défaut dans MySQL. S'il est possible de créer une nouvelle base de données, il vaudrait mieux le faire.
1
Non, il faut adapter cette partie là :
$sql = 'INSERT INTO memb VALUES("", "'.mysql_escape_string($_POST['pseudo']).'", "'.mysql_escape_string(md5($_POST['pass'])).'")';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

Le NULL devrait pouvoir être remplacé "" puisque id est un champ auto-incrémenté.

Bonne chance pour la suite
1
La base de données s'appelle-t-elle vraiment "memb" ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
makamine16 Messages postés 40 Date d'inscription vendredi 2 janvier 2009 Statut Membre Dernière intervention 3 avril 2011
2 avril 2011 à 18:16
oui elle s'appelle memb et elle contient "id" comme clé primaire "nom" "prenom" "pseudo" "email" "pass" et "profil"
0
makamine16 Messages postés 40 Date d'inscription vendredi 2 janvier 2009 Statut Membre Dernière intervention 3 avril 2011
2 avril 2011 à 18:26
ma base de données s'appelle test mais dedans il y'a deux tables une "memb" et l'autre "news"
donc il faut que je met à la place de "memb", "test" dans ""mysql_select_db ('memb', $base);""
mais sa ne risque pas de confondre entre les deux tables ????
0
makamine16 Messages postés 40 Date d'inscription vendredi 2 janvier 2009 Statut Membre Dernière intervention 3 avril 2011
Modifié par makamine16 le 2/04/2011 à 18:49
effectivement je vient de le faire mais maintenant un autre probleme est apparue

[ Erreur SQL !INSERT INTO memb VALUES("", "fifou", "6f8f57715090da2632453988d9a1501b")
Column count doesn't match value count at row 1]

j'ai fais la traduction est sa donne [ Nombre de colonnes ne correspond pas au nombre de valeur à la ligne 1]

alors j'ai vus dans la base de donnée et j'ai vue que la colonnes "pass-confirm" manquée, je l'ai ajouter mais j'ai tjr le mm message d'erreur
0
La table "memb" a plus de champs que cette requête insère.
Il y a 2 choses à faire :
- définir éventuellement des valeurs par défaut pour certains champs
- faire l'INSERT en précisant quelles sont les correspondances "champs"/"valeurs"

INSERT INTO memb (id, login, pass) VALUES(NULL, "fifou", "6f8f57715090da2632453988d9a1501b");

Mais cette requête ne peut être exécutée que si tous les autres champs ont des valeurs par défaut (d'ailleurs, même "id" et NULL pourraient être enlevés, puisque id est un INT AUTO_INCREMENT)
0
makamine16 Messages postés 40 Date d'inscription vendredi 2 janvier 2009 Statut Membre Dernière intervention 3 avril 2011
2 avril 2011 à 19:42
j'ai pas bien compris tt les valeur son a défaut dans ma table, et ce NULL et fifou je doit les écrire dans mon script ??????
0
makamine16 Messages postés 40 Date d'inscription vendredi 2 janvier 2009 Statut Membre Dernière intervention 3 avril 2011
2 avril 2011 à 23:21
merci pour ton aide ça marche.
0