IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MySQL Discussion :

Gestion de base de donnée


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Par défaut Gestion de base de donnée
    Bonjour.

    Mon but est de faire une gestion d'utilisateur pour un site (inscription/connexion/suppression de profil etc...).
    Pour ce faire j'ai créer une database, et puis une table users (lastname CHAR(20), firstname CHAR(20), nickname CHAR(20), birth DATE, mail CHAR(30))

    J'ai ensuite fais un fichier php pour pouvoir s'inscrire dans la table avec un formulaire en post, j'ai fais cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <body>
       <?php
       echo "<form class=\"sign\" action=\"".$next."\" method=\"post\">";?>
         Nom : <input type="text" name="nom"/>
         Prenom :<input type="text" name="prenom"/>
         Pseudo :<input type="text" name="pseudo"/>
         Date de naissance <input type="text" name="date" value="AAAA-MM-JJ"/>
         E-mail: <input type="text" name="mail"/>
         <input type="submit" value="Valider Inscription"/>
         </form>
         
         <?php
         //connection au serveur
         $conn = mysql_connect("localhost", "root", "azqswx");
    
         if(!$conn){
           echo "Echec de connexion";
         }
         //selection de la base de donnees
         $db  = mysql_select_db("users");
    
    
         //recuperation des valeurs des champs
    
         $nom=$_POST['nom'];
         $prenom=$_POST['prenom'];
         $pseudo=$_POST['pseudo'];
         $date=$_POST['date'];
         $mail=$_POST['mail'];
    
    //test : voir si c'est vide
    if($nom=='null' || $prenom=null || $pseudo==null || $date==null || $mail==null){
               $next='redirerror.php?cause=vide'; exit;}
    
    else{
              //requete pour inserer donnees dans table
               $sql2="SELECT * FROM users";
               $req2=mysql_query($sql2,$conn);
    
              while($ligne=mysql_fetch_array($req2)){
                     if($ligne['nickname']==$pseudo){
                     $next='redirerror.php?cause=pseudo';
                      }
                      else{
                      $sql="INSERT INTO users (lastname, firstname, nickname, birth, mail)
                                VALUE ('$nom','$prenom', '$pseudo', '$date', '$mail')";
                      $req=mysql_query($sql, $conn); 
                     $next='valide.php';
                       }
                  }
    }
    
    ?>
    </body>
    Le but de ce code étant :

    -de proposer un formulaire afin de remplir une ligne dans le tableau users (de s'inscrire en fait)
    - de tester si les données entrées ne sont pas vide:
    - si elles sont vides, j'affecte $next (variable qui représente la page qui va s'afficher quand on va cliquer sur le submit) à une page de redirection avec un message d'erreur
    -sinon, je veux tester si le pseudo rentré n'est pas déjà utiliser (boucle while + if rouge), si le pseudo est déjà utiliser je redirige vers la page d'erreur ($next='redirerror.php'). Sinon je crééer une ligne dans le tableau, ce qui validera l'inscription (du coup $next='valide.php').


    Tout avait l'air bien pourtant... mais ça marche pas:
    - ça ne me redirige pas vers les pages voulut
    - ça créer quand même un user du meme pseudo

    Une solution ?

    Merci d'avance à ceux qui auront le courage de lire ça ><

  2. #2
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Salut.

    Il s'agit plus d'un problème de php dans ce cas ...

    Voici comment je te propose de procéder :

    1 - Un fichier formulaire.html qui sert d'interface (un simple formulaire en HTML).

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <html> 
        <body>
            <--! On envoie les informations saisies, par méthode post au fichier transfert_db.php //--> 
            <form method="post" action="transfert_db.php">
                <table>
                    <tr>
                        <td>Nom :</td>
                        <td><input type="text" name="nom"/></td>
                    </tr>
                    <tr>
                             <td>Prenom :</td>
                        <td><input type="text" name="prenom"/></td>
                    </tr>
                    <tr>                     
                        <td>Pseudo :</td>
                        <td><input type="text" name="pseudo"/></td>
                    </tr>
                    <tr>                    
                        <td>Date de naissance :</td>
                        <td><input type="text" name="date" value="AAAA-MM-JJ"/></td>
                    </tr>
                    <tr>                     
                        <td>E-mail: 
                        <td><input type="text" name="mail"/></td>
                    </tr>
                    <tr>
                             <td><input type="submit" value="Valider Inscription"/></td>
                    </tr>
                </table>
                 </form>
        </body>
    <html>

    2 - Un script transfert_db.php de transfert des informations en base (codé assez simple, en reprenant ton script, et non testé mais l'idée est là) :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php
        // redirection (URL à adapter)
        header ("Refresh: 3 ; URL='http://localhost/formulaire.php'");
     
        // variables de connexion (à remplir)
        $server = "";
        $user = "";
        $password = "";
        $database = "";
     
         // Connexion au serveur MySQL
        $db=mysql_connect($server,$user,$password) or die ("Connexion impossible à MySQL<br />");
     
        // Ouverture de la bdd
        mysql_select_db($database, $db) or die ("Selection de la base impossible<br />");
     
        //recuperation des valeurs des champs
        extract($_POST); 
     
        //test : voir si c'est vide
        if($nom==null || $prenom=null || $pseudo==null || $date==null || $mail==null)
            echo "Un ou plusieurs champs est/sont vide(s)";
        else
        {
                   //requete pour inserer donnees dans table
                   $sql2="SELECT * FROM users";
                   $req2=mysql_query($sql2,$conn);
     
                  while($ligne=mysql_fetch_array($req2))
                  {
                         if($ligne['nickname']==$pseudo)
                             echo "Le pseudo est d&eacute;j&agrave; utilis&eacute";
                          else
                          {
                               // Insertion
                              $sql="INSERT INTO users VALUES ('$nom','$prenom', '$pseudo', '$date', '$mail')";
                              $req=mysql_query($sql) or die ("Insertion impossible : ".mysql_error(); 
                           }
                  }
        }
        echo "<br />Vous allez &ecirc;tre redirig&eacute; dans trois secondes ...";
    ?>

    Cordialement,
    Idriss

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Par défaut
    Salut.

    Merci pour ta proposition.

    Mais je me demandais s'il était possible de se rediriger (une fois dans transfert_db.php) vers : soit une page d'erreur (si un des deux if est "activé") soit vers ma page d'index.

    J'ai essayé de modifier le header avec une variable $next qui change si le if est vérifié mais ça ne marche pas ^^ J'ai aussi mis un header dans le if et le else (ceux de la boucle while) mais là aussi ça ne marche pas.

  4. #4
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Re

    As-tu une erreur du type "already sent by ..." ?

    Si c'est le cas, c'est parce que la fonction header doit être écrite avant tout code HTML (les messages d'erreur des requêtes SQL ou les messages avec echo y sont compris).

    Cordialement,
    Idriss

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Par défaut
    Oui je crois bien que c'était ça, j'ai mis un lien de redirection à la place. C'est moins joli que la redirection automatique mais je vois pas comment faire sinon :s

    Encore merci pour tes réponses, ça m'a beaucoup aidé.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/05/2007, 16h58
  2. Réponses: 5
    Dernier message: 06/05/2007, 15h33
  3. java et la gestion des bases de donnée access
    Par alita dans le forum JDBC
    Réponses: 1
    Dernier message: 24/03/2007, 19h21
  4. Réponses: 2
    Dernier message: 31/05/2006, 15h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo