PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 30-07-2014 14:53:22

karima
Membre
Inscription : 30-07-2014
Messages : 5

Problème de connexion à la base de données!

Bonjour,
Je viens de réaliser mon site web pour une société, et tout ce qui me reste c'est de terminer la partie d'espace membre.
En fait, je veux que les coordonnées de l'utilisateur seront enregistrer dans une base de données au cours de son inscription au site.
Malheureusement, j'arrive pas à me connecter à la base de données, toujours il fais que le premier test du code php puis il sort, c'est ce que je comprend pas.
J'ai essayé de vérifier mes tests plus les instructions nécessaire pour la connexion à la base de données, mais j'arrive à détecter l'erreur où exactement;
Je sais que j'ai pas bien expliqué le problème, mais je vous serai reconnaissante si quelqu'un accepte à m'aider.
Je vous laisse voire alors avec ce que j'ai fais et j'espère bien qu'il y aura quelqu'un pour m'aider smile
Merci d'avance.
Le code html du formulaire

<?php
  session_start(); // DEMARRE LA SESSION
  // SAUVGARDE LA VARIABLE hits DANS LE FICHIER DE SESSION
  $hits =0;
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Mon site</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" href="style.css" />
    <!--[if lt IE 9]>
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
    <!--[if lte IE 7]>
    <link rel="stylesheet" href="style_ie.css" />
    <![endif]-->
    </head>
    <body>
    <?php include("menu.php"); ?>
    <form action="valide.php" method="POST">
      <fieldset>
        <legend>Authentification</legend>
        <p>Veuillez saisir <b style="color: red;">les informations obligatoires</b> qui permettront de vous authentifier.</p>
        <table>
        <tr>
          <td><label for="sexe">sexe</label></td><td colspan=2><select name="sexe" id="sexe" required><option value="h" selected>Homme</option><option value="f">Femme</option></select></td>
        </tr>
        <tr>
          <td><label for="login">Login</label></td><td><input type="text" name="login" id="login" size=20 maxlength=25 required></td>
          <td style="color: red;">
           
          </td>
        </tr>
        <tr>
          <td><label for="pass">Mot de passe</label></td><td><input type="password" name="pass" id="pass" size=20 maxlength=25 required></td>
          <td style="color: red;">
         
          </td>
        </tr>
        <tr>
          <td><label for="confirm">Confirmation</label></td><td><input type="password" name="password" id="confirm" size=20 maxlength=25 required></td>
          <td style="color: red;">
           
          </td>
        </tr>
        <tr>
          <td><label for="email">Courriel</td><td><input type="email" id="email" required></td>
          <td style="color: red;">
           
          </td>
        </tr>
        <tr>
          <td><label for="cour2">Confirmation</td><td><input type="email" name="email2" id="cour2" required></td>
          <td style="color: red;">
           
          </td>
        </tr>
        <tr>
          <td>Date de naissance<label for="date"><label for="date"></td>
          <td>
            <input type="date" name="date" id="date" placeholder="Ex: 05/08/1985" required>
          </td>
          <td>
           
          </td>
        </tr>
        <tr>
          <td><label for="q">Question secrète</label></td><td><input type="text" size="100" maxlength="150" name="question" id="q" required></td>
          <td style="color: red;">
           
            </td>
        </tr>
        <tr>
          <td><label for="r">Réponse secrète</label></td><td><input type="text" size="100" maxlength="150" name="reponse" id="r" required></td>
          <td style="color: red;">
           
          </td>
        </tr>
        <tr>
          <td colspan=3><p><b style="color: red;"><u>Attention:</u></b> La question et réponse secrète vous seront nécessaires pour récupérer votre mot de passe en cas de perte.</p></td>
        </tr>
      </table>
    </fieldset>
    <fieldset>
      <legend>Informations personnelles</legend>
      <p>Vous avez la possibilité de saisir <b style="color: green;">des information facultatives</b> à votre inscription.</p>
      <table>
        <tr>
          <td><label for="nom">Nom</label></td><td><input type="text" name="nom" maxlength="25" size="20" id="nom"></td>
        </tr>
        <tr>
          <td><label for="prenom">Prénom</label></td><td><input type="text" name="prenom" maxlength="25" size="20" id="prenom"></td>
        </tr>
        <tr>
          <td><label for="adresse">Adresse</label></td><td><textarea name="adresse" cols="25" rows="3" id="adresse" placeholder="Ecrivez ici Votre Adresse..."></textarea></td>
        </tr>
        <tr>
          <td><label for="ville">Ville</label></td><td><input type="text" name="ville" maxlength="25" size="20" id="ville"></td>
        </tr>
        <tr>
          <td><label for="code">Code postal</label></td><td><input type="text" name="code" maxlength="25" size="20" id="code"></td>
        </tr>
      </table>
    </fieldset>
    <table width=100%>
      <tr>
        <td align=center><input type="submit" name="Envoyer" value="Envoyer"></td><td align=center><input type="reset" name="Rénitialiser" value="Rénitialiser"></td>
      </tr>
    </table>
  </form>
  <br><br>
  <?php include("pied_de_page.php"); ?>
</body>
</html>

Le code php

<?php
  define('DB_SERVER', 'localhost'); // serveur mysql
  define('DB_SERVER_USERNAME', 'root'); // nom d utilisateur
  define('DB_SERVER_PASSWORD', '*******'); // mot de passe
  define('DB_DATABASE', 'bd'); // nom de la base
?>
<?php
  $DATE = Date("d/m/Y H:i:s");
?>
<?php
  // On commence par récupérer les champs
  /*if(isset($_POST['sexe']))      $sexe=$_POST['sexe'];
  else      $sexe="";*/
 
  if(isset($_POST['login']))      $login=$_POST['login'];
  else      $login="";
 
  if(isset($_POST['pass']))      $pass=$_POST['pass'];
  else      $pass="";

  if(isset($_POST['email']))      $email=$_POST['email'];
  else      $email="";

  if(isset($_POST['date']))      $date=$_POST['date'];
  else      $date="";

  if(isset($_POST['q']))      $q=$_POST['q'];
  else      $q="";

  if(isset($_POST['r']))      $r=$_POST['r'];
  else      $r="";

  // On vérifie si les champs sont vides
  if(empty($login) OR empty($pass) OR empty($email) OR empty($date) OR empty($q) OR empty($r))
    {
    echo '<font color="red">Attention, seul les champs <b>facultatifs</b> peuvent rester vide !</font>';
    }
  // Aucun champ n'est vide, on peut enregistrer dans la table
  else      
    {
    $db = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD);  // connexion à la base
    mysql_select_db(DB_DATABASE,$db);                  // sélection de la base

    // on regarde dans la table CompteUtilisateur si le login existe déjà
    $sql = "SELECT id FROM compeutilisateur WHERE login='$login'";
    $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    $res= mysql_num_rows($req);

    if($res!=0)  // si le login existe déjà, on affiche un message d'erreur
      {
      echo '<font color="red">Désolé, mais ce login existe déjà.</font>';
      }
    else  // Le login n'existe pas, on insère d'abord les infos dans compeutilisateur
      {
      $sql = "INSERT INTO compeutilisateur(id_compte, login, passwd) VALUES('','$login','$pass')";
      mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

      // on récupère l'id qui vient d'être généré
      $id= mysql_insert_id();

      // ci-dessous on insère les infos dans inscription
      $sql = "INSERT INTO inscription(id, login, passwd, email, date, question, reponse, date_inscription) VALUES('','$login','$pass','$email','$date', '$q', '$r', '')";
      mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
      }
    mysql_close($db);  // on ferme la compeutilisateur
  }
?>

Hors ligne

#2 30-07-2014 17:15:14

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Problème de connexion à la base de données!

SAluton,

Ne jamais mettre les infos de connexion en clair sur le web. (j'ai corrigé, si ce n'est pas déjà trop tard).


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 30-07-2014 17:18:40

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Problème de connexion à la base de données!

<?php
  session_start(); // DEMARRE LA SESSION
  // SAUVGARDE LA VARIABLE hits DANS LE FICHIER DE SESSION
  $hits =0;
?>

Alors ça, ça m'étonnerait !

$_SESSION['hits']=$hits;

éventuellement sinon ????


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#4 30-07-2014 19:17:19

karima
Membre
Inscription : 30-07-2014
Messages : 5

Re : Problème de connexion à la base de données!

#Maljuna Kris merci beaucoup, je vais corriger ça. mais pouvez m'aider à régler mon problème j'arrive pas à m'en sortir hmm
D'ailleurs, je veux isérer les infos du form dans deux tables simultanément.

Hors ligne

#5 30-07-2014 19:46:01

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Problème de connexion à la base de données!

La première chose serait d'être sûr que le code PHP affiché ici correspond bien au script action du form, soit valide.php.

Est-ce que cette ligne s'affiche :

    echo '<font color="red">Attention, seul les champs <b>facultatifs</b> peuvent rester vide !</font>';

A quoi te sert-il de récupérer mysql_insert_id() puisqu'ensuite tu ne l'utilises pas ?


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#6 30-07-2014 21:43:50

karima
Membre
Inscription : 30-07-2014
Messages : 5

Re : Problème de connexion à la base de données!

Maljuna Kris a écrit :

La première chose serait d'être sûr que le code PHP affiché ici correspond bien au script action du form, soit valide.php.

Est-ce que cette ligne s'affiche :

    echo '<font color="red">Attention, seul les champs <b>facultatifs</b> peuvent rester vide !</font>';

A quoi te sert-il de récupérer mysql_insert_id() puisqu'ensuite tu ne l'utilises pas ?

Oui oui il l'affiche même si les champs sont tous remplis.
mysql_insert_id() je l'ai utilisé pour récupérer l'id du premier utilisateur inscrit puis l'insérer dans la table connexion qui sert à connecter les utilisateurs déjà inscrit.

Hors ligne

#7 31-07-2014 05:22:10

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Problème de connexion à la base de données!

karima a écrit :

Oui il l'affiche même si les champs sont tous remplis.

Bon, alors il faudrait dans ce cas que tu vérifies ce que reçoit valide.php de HTTP, par exemple en faisant

var_dump($_POST);

Car comme tu utilises les deux attributs name et id (pas toujours d'ailleurs, par exemple pas pour le champ email) avec parfois des valeurs différentes il m'est difficile prévoir ce qui va être transmis par HTTP.

karima a écrit :

mysql_insert_id() je l'ai utilisé pour récupérer l'id du premier utilisateur inscrit puis l'insérer dans la table connexion qui sert à connecter les utilisateurs déjà inscrit.

      // on récupère l'id qui vient d'être généré
      $id= mysql_insert_id();

      // ci-dessous on insère les infos dans inscription
      $sql = "INSERT INTO inscription(id, login, passwd, email, date, question, reponse, date_inscription)
                                     VALUES('','$login','$pass','$email','$date', '$q', '$r', '')";
      mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

Ça n'apparaît pas dans le code présenté.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#8 31-07-2014 11:09:01

karima
Membre
Inscription : 30-07-2014
Messages : 5

Re : Problème de connexion à la base de données!

quand j'ai ajouté var_dump($_POST); coilà ce qui m'a donné

array (size=14)
  'sexe'array (size=14)
  'sexe' => string 'f' (length=1)
  'login' => string 'el.karima' (length=9)
  'pass' => string '12ABC' (length=5)
  'password' => string '12ABC' (length=5)
  'email2' => string 'email@exemple.fr' (length=16)
  'date' => string '1989-03-14' (length=10)
  'question' => string 'votre ville?' (length=12)
  'reponse' => string 'ville' (length=5)
  'nom' => string '' (length=0)
  'prenom' => string '' (length=0)
  'adresse' => string '' (length=0)
  'ville' => string '' (length=0)
  'code' => string '' (length=0)
  'Envoyer' => string 'Envoyer' (length=7)
Attention, seul les champs facultatifs peuvent rester vide !

Hors ligne

#9 31-07-2014 11:10:09

karima
Membre
Inscription : 30-07-2014
Messages : 5

Re : Problème de connexion à la base de données!

en fait j'arrive pas à insérer les deux id en même temps hmm

Hors ligne

#10 01-08-2014 06:45:00

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Problème de connexion à la base de données!

karima a écrit :

en fait j'arrive pas à insérer les deux id en même temps hmm

????

De toutes façon, par définition, une id doit être unique dans un document HTML.

J'observe que tu testes

if(empty($login) OR empty($pass) OR empty($email) OR empty($date) OR empty($q) OR empty($r))
    {
    echo '<font color="red">Attention, seul les champs <b>facultatifs</b> peuvent rester vide !</font>';
    }
  // Aucun champ n'est vide, on peut enregistrer dans la table

Mais

array (size=14)
  'sexe'array (size=14)
  'sexe' => string 'f' (length=1)
  'login' => string 'el.karima' (length=9)
  'pass' => string '12ABC' (length=5)
  'password' => string '12ABC' (length=5)
  'email2' => string 'email@exemple.fr' (length=16)
  'date' => string '1989-03-14' (length=10)
  'question' => string 'votre ville?' (length=12)
  'reponse' => string 'ville' (length=5)
  'nom' => string '' (length=0)
  'prenom' => string '' (length=0)
  'adresse' => string '' (length=0)
  'ville' => string '' (length=0)
  'code' => string '' (length=0)
  'Envoyer' => string 'Envoyer' (length=7)

Es-tu sûr que tu as bien là-dedans de quoi vérifier toutes les conditions de ton if ?
le début du var_dump ne me semble pas cohérent.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums