Inscription => ecriture dans table - Archange - 12-11-2006
CC, donc voila je rencontre a petit probleme sur lequel sa fait 1/4 d'heure je planche je m'explique, j'ai crée deux table une membres et une autre ressources,
Table membres
Code : id
pseudo
mot_passe
confirmation
confirmation_code
email
cash
point
timestamp
Table ressources
Code : id
metal
timestamp
joueur
Je souhaiterais qu'a linscription, les entrées de la table ressources soit crée en concordance avec celle de la table membres cad id = id, pseudo = joueur et pr le reste une valeur defini dans un fichier de config ( bref donc la table membres se crée tres bien mais pas la table ressources je vous mais mon code pr que vous voyez de vous meme
Code PHP : <?php
//Identifiants de connexion à la base de données.
require("config.inc.php");
//Connexion à la base de données.
mysql_connect($host,$username,$password);
mysql_select_db($bdd_name);
//On vérifie que la variable $_POST['inscription'] existe
if (isset($_POST['inscription']))
{
//Si les variables contenant le pseudo, le mot de passe et l'email existent et contiennent quelque chose.
if (isset($_POST['pseudo'], $_POST['mot_passe'], $_POST['email']) && !empty($_POST['pseudo']) && !empty($_POST['mot_passe']) && !empty($_POST['email']))
{
//Si le pseudo est supérieur à 3 caractères et inférieur à 35 caractères.
if (strlen(trim($_POST['pseudo'])) > 3 && strlen(trim($_POST['pseudo'])) < 35)
{
//Si le mot de passe est supérieur à 4 caractères.
if (strlen(trim($_POST['mot_passe'])) > 4)
{
//Mesure de sécurité.
$pseudo = htmlspecialchars($_POST['pseudo']);
$mot_passe = htmlspecialchars($_POST['mot_passe']);
$email = htmlspecialchars($_POST['email']);
//On vérifie que le pseudo n'existe pas.
$sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM membres WHERE pseudo='".$pseudo."'");
if (mysql_result($sql, 0, 'nb_pseudo') == 0)
{
//Hashage du mot de passe avec md5().
$mot_passe = md5($mot_passe);
//Génération du code de confirmation.
$lettres_chiffres = 'abcdefghijklmnopqrstuvwxyz0123456789';
$lettres_chiffres_melanges = str_shuffle($lettres_chiffres);
$code_confirmation = substr($lettres_chiffres_melanges, 1, 10);
//Envoi du mail de confirmation.
$message = '
Bonjour '.$pseudo.'<br />
Vous venez de vous inscrire sur "nom_du_site" et pour valider votre inscription, vous devez cliquer sur le lien suivant : <a href="http://s.free.fr/confirmation.php?code='.$code_confirmation.'&pseudo='.$pseudo.'">http://s.free.fr/confirmation.php?code='.$code_confirmation.'&pseudo='.$pseudo.'</a>
';
//Si le mail a été envoyé on peut enregistrer le membre
if (mail($email, 'Confirmation de l\'inscription sur [Nom_du_site]', $message))
{
//On éxécute la requête qui enregistre un nouveau membre.
mysql_query("INSERT INTO membres (pseudo, mot_passe, confirmation, confirmation_code, email, cash, point, timestamp) VALUES ('".$pseudo."', '".$mot_passe."', '0', '".$code_confirmation."', '".$email."', '". $cash ."', '". $point ."', '". $timestamp ."')");
$pseudo == $joueur;
mysql_query("INSERT INTO ressources (metal, timestamp, joueur,) VALUES ('".$metal."', '".$timestamp.", '".$joueur.")");
echo 'Message : votre compte a bien été créé ! Un e-mail vient de vous être envoyé contenant un lien de confirmation de votre inscription.';
}
else
{
echo 'Erreur : echec lors de l\'envoi du mail ! veuillez vous ré-inscrire';
}
}
else
echo 'Erreur : le pseudo existe déjà !';
}
else
echo 'Erreur : le mot de passe est trop court !';
}
else
echo 'Erreur : le pseudo est soit trop court, soit trop long !';
}
else
echo 'Erreur : vous avez oublié d\'entrer votre pseudo ou votre mot de passe ou votre adresse email !';
}
//Déconnection de la base de données.
mysql_close();
?>
c'est cette partie du code qui ne veu pas fonctionner
Code PHP : <?php
//On éxécute la requête qui enregistre un nouveau membre.
mysql_query("INSERT INTO membres (pseudo, mot_passe, confirmation, confirmation_code, email, cash, point, timestamp) VALUES ('".$pseudo."', '".$mot_passe."', '0', '".$code_confirmation."', '".$email."', '". $cash ."', '". $point ."', '". $timestamp ."')");
$pseudo == $joueur;
mysql_query("INSERT INTO ressources (metal, timestamp, joueur,) VALUES ('".$metal."', '".$timestamp.", '".$joueur.")");
donc j'espere trouver de l'aide aupres de vous
Merci
RE: Inscription => ecriture dans table - Helifyl - 12-11-2006
Moi aussi je galère avec ma BDD en ce moment. Mais bon déjà je peux te dire que ta structure n'est pas bonne: tu ne peux pas faire concorder ton id de ta table membres et ton id de la table ressources, ce sont deux identifiants indépendants.
Ce que tu peux faire par contre c'est joueur (table ressources) = id_joueur (table membres) pour établir un lien. Ensuite pour ton code je ne comprends pas trop ta requête, essaies:
Code : mysql_query('INSERT INTO ressources VALUES (""," '.$metal.' ", " '.$timestamp.' ", " '.$id_joueur.' ")');
Le "" est pour l'id_ressources, que tu auras fixé en auto_increment et clé primaire. Le problème est que tu dois faire un accès à la table membres pour sortir id_joueur avant de l'insérer dans ressources.
Pense à lire le tuto de gtsoul: http://www.jeuweb.org/board/showthread.php?tid=559
RE: Inscription => ecriture dans table - Archange - 12-11-2006
Donc voila j'ai fais les seconde modif que tu as dit sa me donne sa
Code PHP : <?php
mysql_query("INSERT INTO membres VALUES ("",'".$pseudo."', '".$mot_passe."', '0', '".$code_confirmation."', '".$email."', '". $cash ."', '". $point ."', '". $timestamp ."')");
mysql_query('INSERT INTO ressources VALUES (""," '.$metal.' ", " '.$timestamp.' ", " '.$id_joueur.' ")');
Et donc pr Citation :joueur (table ressources) = id_joueur (table membres) pour établir un lien
tu veu dire que je doi faire apres mon premier insert_into Code PHP : <?php
$user = mysql_query("SELECT * FROM membres ");
while ($donnees = mysql_fetch_array($user) )
{
$pseudo = $donnees['pseudo];
Et apres le second
Code PHP : <?php
$user_2 = mysql_query("SELECT * FROM ressources ");
while ($donnees = mysql_fetch_array($user_2) )
{
$joueur = $donnees['joueur];
et enfin lié comme ceci ?
RE: Inscription => ecriture dans table - Helifyl - 12-11-2006
Fais attention avec les " et les ', ta première ligne devra être:
Code PHP : <?php
mysql_query("INSERT INTO membres VALUES ('','".$pseudo."', '".$mot_passe."', '0', '".$code_confirmation."', '".$email."', '".$cash."', '". $point ."', '".$timestamp."')");
ou
Code PHP : <?php
mysql_query('INSERT INTO membres VALUES ("","'.$pseudo.'", "'.$mot_passe.'", "0", "'.$code_confirmation.'", "'.$email.'", "'.$cash.'", "'.$point.'", "'.$timestamp.'")');
suivant que tu utilises ' ou ".
Pour le lien entre les deux en fait tu enregistres en premier ton joueur dans la table membres puis tu récupères l'id que lui a attribué l'auto_increment comme ceci:
Code PHP : <?php
$user = mysql_query('SELECT * FROM membres WHERE pseudo="'.$pseudo.'" ');
while ($donnees = mysql_fetch_array($user) )
{
$id_joueur=$donnees['id'];
}
Et ensuite tu fais ton insertion dans la table ressources, en connaissant cette fois la valeur de id_joueur.
Code PHP : <?php
mysql_query('INSERT INTO ressources VALUES ("","'.$metal.'", "'.$timestamp.'", "'.$id_joueur.'")');
Comme ça tu pourras retrouver le joueur dans la table membres à partir de la valeur de l'attribut id_joueur de ta table ressources, ce qui est ce que tu voulais au départ si j'ai bien tout compris.
RE: Inscription => ecriture dans table - Archange - 12-11-2006
Je vais testé tout a l'heure, mais je pense que c'est sa, et pour les ' et " en relisant mes lignes j'avai remarqué mais je savais pas trop quoi mettre ^^
Merci en tous cas
RE: Inscription => ecriture dans table - Helifyl - 12-11-2006
Y a pas de quoi ^^
Par contre si je peux te donner un conseil c'est de bien créer ta BDD dès le départ. Moi quand j'ai commencé j'ai créé les tables au fur et à mesure que j'en avais besoin et c'est pas bon du tout (vraiment pas même)....
Bon courage pour la suite !
RE: Inscription => ecriture dans table - Archange - 12-11-2006
dacord merci du conseil, bon courage a toi aussi
|