Partage
  • Partager sur Facebook
  • Partager sur Twitter

une information dans 2 tables

creation de compte : info transmises dans 2 tables

    2 septembre 2010 à 4:44:05


    dans mon script de création de compte je doit créer le 'ID' dans 2 tables mais seulement après plusieurs essait je ne trouve pas comment le faire (je sait que cela se situe dans la portion "insert into membre...." mais il y a création d'un ID et ce ID il faudrait que il soit transmis dans une autre table aussi exemple : le ID créer doit se retrouver a la fois dans la table membre et la table users tout les 2 sur la meme bdd) donc je vous laisse le code en espérant avoir de l'aide :

    <?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['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 sont différents.';
    		}
    		else {
    			$base = mysql_connect ('xxxxxxxxxxx', 'xxxxxxxx', 'xxxxxxxxx');
    			mysql_select_db ('xxxxxxxxxx', $base);
    
    			// on recherche si ce login est déjà utilisé par un autre membre
    			$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"';
    			$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 membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string(md5($_POST['pass'])).'")';
    				mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
    
    				session_start();
    				$_SESSION['login'] = $_POST['login'];
    				header('Location: membre.php');
    				exit();
    			}
    			else {
    				$erreur = 'Un membre possède déjà ce login.';
    			}
    		}
    	}
    	else {
    		$erreur = 'Au moins un des champs est vide.';
    	}
    }
    ?>
    <html>
    <head>
    <title>Inscription</title>
    </head>
    
    <body>
    Inscription à l'espace membre :<br />
    <form action="inscription.php" method="post">
    Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><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 />
    <input type="submit" name="inscription" value="Inscription">
    </form>
    <?php
    if (isset($erreur)) echo '<br />',$erreur;
    ?>
    </body>
    </html>
    


    et voici la structure des 2 tables :
    CREATE TABLE `pub` (
      `IDMEMBRE` bigint(10) NOT NULL,
      `CLIC_INCENTIVE` int(2) NOT NULL,
      `DATE` date NOT NULL default '0000-00-00',
      `ETAT` int(11) NOT NULL default '0'
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
    


    CREATE TABLE `membre` (
      `id` int(11) NOT NULL auto_increment,
      `login` text collate latin1_general_ci NOT NULL,
      `pass_md5` text collate latin1_general_ci NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=3 ;
    


    il faudrait que le id de la création du compte (dans la table membre) soit automatiquement ajoutés aussi comme IDMEMBRE (dans la table pub)lors de la création du compte
    • Partager sur Facebook
    • Partager sur Twitter
      2 septembre 2010 à 9:05:07

      boujour,
      vous exécutez votre insert sur la table parent ie la table membre,
      vous récupérez l'id auto_increment après une insertion avec mysql_insert_id().
      http://dev.mysql.com/doc/refman/5.0/fr [...] nsert-id.html
      Ensuite vous exécutez l'insert sur l'autre table - la table enfant, celle qui dépend de la première -, ie la table pub.
      Au passage il serait mieux d'utiliser des tables InnoBD puisque là vous êtes entrain de gérer une transaction sur 2 tables.
      • Partager sur Facebook
      • Partager sur Twitter
        4 septembre 2010 à 16:07:31

        hummm cest un peu la confusion ici jai modifier mes tables et ca galèe encore + que avant jai donc remis comme originale mais là jsuis pas + avancé jai le meme probleme encore ....
        • Partager sur Facebook
        • Partager sur Twitter

        une information dans 2 tables

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown