Accés a la base de donnée

marwa_h Messages postés 31 Statut Membre -  
 marwa_h -
Bonjour,
je suis entrain de préparer mon pfe et j'ai rencontré beaucoup de problèmes s'il vous plait aidez moi,mon premier problème et que suite a l'inscription les données ne s'enregistre pas dans la base de donnée donc j'ai un problème d'accès a la base.mon code et le suivant :
<html>
<head>
<script language="javascript" type="text/javascript">
include ("connexion.php");
<form name="form" action="Inscription.php" method="post" onSubmit="return validation_inscription();">
.
.
.
</script>
</head>
<body>

</form>

<?php

if(isset($_POST['nom']))
{
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$login=$_POST['login'];
$ntel=$_POST['ntel'];
$dn=$_POST['dn'];
$sexe=$_POST['sexe'];
$e_mail=$_POST['e_mail'];
$pwd=md5($_POST['pwd']);

$id=mysql_insert_id();
$sql="INSERT INTO client-abonne(nom,prenom,login,ntel,dn,sexe,e_mail,pwd,) VALUES('$nom','$prenom','$login','$ntel','$dn','$sexe','$e_mail','$pwd',)";
$req = mysql_query($sql) or die ("Erreur requete ".mysql_error());

?>

<?php
}
?>
</body>
</html>
dans la page connexion.php j'ai ecris :
<?

$host = "localhost";
$user = "login";
$pass = "pwd";
$bdd = "smart";
// connexion
@mysql_connect($host,$user,$pass)
or die("Impossible de se connecter");
@mysql_select_db("$bdd")
or die("Impossible de se connecter");
?>
j'espère que vous m'aidez et merci

18 réponses

Résumé de la discussion

Problème d'inscription : les données ne s'enregistrent pas dans la base de données après l'envoi du formulaire, ce qui empêche l'enregistrement des nouveaux comptes et la continuité du processus d'inscription. Des conseils portent sur le placement correct de l'inclusion du fichier connexion.php, l'usage des requêtes MySQL et l'activation des messages d'erreur pour diagnostiquer les échecs éventuels. Les discussions évoquent des causes possibles, notamment une syntaxe SQL invalide due à une virgule superflue, l'obsolescence de mysql_* au profit de mysqli ou PDO, et une validation JavaScript sans return true. En parallèle, certains soulignent l'importance des messages d'erreur et des corrections recommandées comme déplacer l'inclusion, retirer print_r et éviter les doublons dans les données, afin d'améliorer la fiabilité du processus.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. le père
     
    Bonjour

    Commençons par ça :

    Ton <form> doit être entre <body> et </body>, surtout pas entre <head> et </head> ni entre <script> et </script>
    Le include est bien à sa place dans le <head> , mais pas dans le <script> !
    De plus, le include étant du php au milieu du htlm, il faut l'entourer de <?php ?>
    0
  2. le père
     
    le include ("connexion.php") ne devrait pas être entre <script> et </script> : c' est illogique et ça risque de masquer d'éventuels message d'erreurs. Il faut mieux le mettre avant <html>
    et l'ouverture de balise php pour cet include c'est <?php et non pas seulement <?

    Sinon, y a-t-il un message d'erreur ?
    0
  3. le père
     
    Et il manque un "return true;" à la fin du script de validation.
    0
  4. marwa_h Messages postés 31 Statut Membre
     
    le problème est que aucun message d'erreur n'ai affiché mais après avoir appuyer sur le bouton inscription le formulaire devient de neveau vide et il y pas stockage des informations qu'on a saisi dans la base.j'ai pas compris ou je vais mettre return true?? mercie beaucoup pou votre aide
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. le père
     
    le return true : juste avant
    }
    </script> 


    d'autre part, le $id=mysql_insert_id(); aussi est mal placé et de toutes façons ne sert à rien ici

    C'est normal que le formulaire revienne vide, il n'y a rien pour le remplir. Comment vérifies-tu si les données sont entrées dans la base ?

    Pour savoir si elles sont bien reçues par ton script, il faudrait faire

    print_r ($_POST);
    juste avant
    if(isset($_POST['nom']))
    0
    1. marwa_h
       
      j'accède a la base pour voir si les données sont stocker ou non mais a chaque fois je trouve qu'ils ne sont pas enregistré.toujours le meme probleme il ya pas enregistrements des donnés dans la base :'(
      0
  7. le père
     
    est-ce que le print_r ($_POST); affiche quelque chose ?
    0
    1. marwa_h
       
      j'ai supprimer le $id=mysql_insert_id(); et j'ai la remplacé par print_r ($_POST); et j'ai efféctué tt les modifications que vous m'avez dis mais quand j'exécute le code s'affiche dans la page web au lieu du champs de formulaire.merci pour votre aide
      0
  8. le père
     
    j'ai supprimer le $id=mysql_insert_id(); et j'ai la remplacé par print_r ($_POST);
    Je n'ai pas dit ça !
    J'ai dit que le $id=mysql_insert_id(); était mal placé et inutile, je n'ai pas dit de le remplacer par quelque chose.
    Et le print_r ($_POST);
    je t'avais dit de le mettre juste avant
    if(isset($_POST['nom']))

    Si tu vois le code au lieu du formulaire, c'est qu'en faisant tes manips tu as ajouté accidentellement un ?> ou supprimé un <?php quelque part
    0
    1. marwa_h Messages postés 31 Statut Membre
       
      c bon le formulaire s'affichera mais malheureusement le problème existe encore il n' y a pas stockage des données dans la base :'''''''(
      0
  9. le père
     
    est-ce que le print_r ($_POST); affiche quelque chose ?
    0
    1. marwa_h
       
      non elle n'affiche rien.svp ya t'il une autre méthode pour faire la connexion a la base autre que celle que j'ai utilisé??? je suis très en retard et ce problème me fait perdre beaucoup de temps.je vous remercie de toute mon coeur pour votre aide et patience.merci beaucoup le père vous êtes le seul qui me répond merci
      0
  10. le père
     
    Cette méthode de connexion est très bonne. De plus, avec le or die(... elle te signale les problèmes de connexion s'il y en avait.

    Peux-tu remettre le code complet de Inscription.php, il a été en partie effacé de ton 1er message. Je vais l'essayer chez moi pour voir.
    0
  11. le père
     
    Voici les problèmes que j'ai trouvés :
    <? php include("connexion.php"); ?> il ne faut pas d'espace entre <? et php

    $sexe=$_POST['sexe']; : mais il n'y a pas de champ sexe dans le formulaire !

    à la fin
    <?php
    }}
    ?>
    il faut une seule }

    Pour la connexion, les deux méthodes sont équivalentes, pas de problème.
    0
    1. marwa_h
       
      oui vous avez raison j'ai supprimer le champ sexe et j'ai oublié de supprimé $sexe=$_POST['sexe']; svp je veux savoir comment je vérifier que les donnés sont stocker dans la base ou non toujours j'accède a la base et je consulte le tables client abonnée je trouve rien est ce qu'il y a une autre méthode???.merci
      0
  12. le père
     
    Je viens de me rendre compte qu'il y a un espace dans le nom de ta table. Ce n'est pas une bonne idée, il faut éviter les espaces et les caractère accentués. Renomme-la Client_abonne et corrige les requêtes en conséquence. Ce qui m'étonne, c'est que tu n'aies pas de message d'erreur.
    je veux savoir comment je vérifier que les donnés sont stocker dans la base Comment consultes-tu la table Client abonne ? Si c'est avec phpMyAdmin, pas de problème, tu peux faire confiance.

    Je pense à un truc beaucoup plus bête : comment fais-tu pour afficher ta page Inscription.php ? Tu tapes son nom dans la barre d'adresse de ton navigateur, ou tu double-cliques sur le fichier dans l'explorateur de windows ?
    0
  13. le père
     
    Plus je relis les messages depuis le début, et plus je suis sûr que ça ne marche pas parce que tu n'accèdes pas à ta page à travers un serveur. Donc le PHP est complètement ignoré : ça ne fait pas de message d'erreur, et ça n'insère rien dans la base.
    As-tu Apache (easyphp, WAMP) installé sur ta machine ? Ouvres-tu ta page en tapant http://localhost/Inscription.php dans la barre d'adresse de ton internet explorer (ou Firefox ou autre) ?
    0
    1. marwa_h
       
      oui j'ai des espaces dans les tables mais c'est bon j'ai evité tous les espaces et tous les caractéres spéciaux , je consulte la table client abonné aves php MyAdmin et pour afficher la page inscription.php je fais double cliques sur le fichier.oui j'ai wamp server installé sur ma machine
      0
    2. marwa_h
       
      quand je tape http://localhost/Inscription.php une message d'erreur s'affichera : The requested URL /inscription.php was not found on this server.
      0
  14. le père
     
    pour afficher la page inscription.php je fais double cliques sur le fichier Alors ça, c'est sûr c'est mauvais. Tu ne passes pas par le serveur, donc le PHP est ignoré.
    Nous avons fait un grand pas.
    Dans quel répertoire est ton fichier Inscription.php?
    0
    1. marwa_h
       
      le fichier inscription.php est dans un fichier sur le bureau je sais qu'il faut être sous le 3w mais je pense pas que c'est le problème!!
      0
    2. marwa_h
       
      j'ai remplacé les pages inscription.php et connexion.php sous le 3w et j'ai tapé http://localhost/Inscription.php un message d'erreur a été affiché: Notice: Undefined variable: host in C:\wamp\www\connexion.php on line 10

      Notice: Undefined variable: user in C:\wamp\www\connexion.php on line 10

      Notice: Undefined variable: pass in C:\wamp\www\connexion.php on line 10

      Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'SYSTEM'@'localhost' (using password: NO) in C:\wamp\www\connexion.php on line 10
      Could not connect: Access denied for user 'SYSTEM'@'localhost' (using password: NO)
      0
  15. le père
     
    je sais qu'il faut être sous le 3w mais je pense pas que c'est le problème!!
    Mais si justement c'est le problème !!!
    Ton problème c'est que le PHP n'est pas pris en compte parce que tu ne passes pas par le serveur
    Et tu ne peux pas passer par le serveur parce qu'il n'a pas accès à ton fichier
    Donc commence par mettre ton fichier dans le répertoire www ou un sous répertoire de www et tape dans la barre d'adresse de ton navigateur
    http://localhost/Inscription.php ou
    http://localhost/sousrépertoire/Inscription.php
    0
  16. le père
     
    Ça y est ! Tu fais enfin du PHP ! On va pouvoir corriger les problèmes.

    ton fichier connexion commence par <? - il devrait commencer par <?php
    et il ne devrait pas y avoir un deuxième <?php dedans.
    tu as bien toujours les lignes
    $host = "localhost";
    $user = "root";
    $pass = "";
    $bdd = "smart";
    au début ?
    0
    1. marwa_h Messages postés 31 Statut Membre
       
      oui au début je garde les lignes $host = "localhost";
      $user = "root";
      $pass = "";
      $bdd = "smart"; .vraiment merci beaucoup que dieu te garde et te protégé.
      j'ai encore quelques erreurs quand j'exécute inscription.php a la fin du formulaire et au dessous de bouton inscription j'ai un array() qui est affiché et je sais pas pourquoi et quand je rempli le formulaire et je valide un message d'erreur s'affiche:Array ( [nom] => marwa [prenom] => mm [login] => marwa_h [ntel] => 111222 [dn] => 26/04/2001 [e_mail] => mmmaaa@live.com [pwd] => 999888 [c_pwd] => 999888 ) Erreur requete You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-abonne(nom,prenom,login,ntel,dn,e_mail,pwd,) VALUES('marwa','mm','marwa_h','111' at line 1
      0
    2. marwa_h Messages postés 31 Statut Membre
       
      j'ai trouvé le problème :le problème est que j'ai pas changer le nom de table dans inscription.php c'est bon j'ai modifié mais toujours il existe des problèmes un autre message d'erreur s'affichera :
      Array ( [nom] => marwa [prenom] => mm [login] => marwa_h [ntel] => 111222 [dn] => 26/04/2001 [e_mail] => mmmaaa@live.com [pwd] => 999888 [c_pwd] => 999888 ) Erreur requete You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') VALUES('marwa','mm','marwa_h','111222','26/04/2001','mmmaaa@live.com','3c5aabf' at line 1
      0
  17. le père
     
    Tu as une virgule en trop dans ta requête après pwd et $pwd
    0
    1. marwa_h Messages postés 31 Statut Membre
       
      j'ai éliminé les virgules après pwd et $pwd mais il y'a une erreur Array ( [nom] => marwa [prenom] => mm [login] => marwa [ntel] => 111222 [dn] => 26/04/2001 [e_mail] => mmmaaa@live.com [pwd] => 111111 [c_pwd] => 111111 ) Erreur requete Duplicate entry 'marwa' for key 'PRIMARY'. je sais que je vous dérange beaucoup svp excusez moi mais je vous donne confiance parce que vous ma vraiment aidez.merci
      0
  18. le père
     
    retire la ligne print_r ($_POST). Ça enlèvera le Array( etc...
    Ton erreur Duplicate entry signifie deux choses :
    D'abord, tu as réussi à entrer quelque chose dans ta base
    ensuite, tu essayes de rentrer une autre personne avec le même login ou le même nom (marwa) mais comme tu as défini ce champ comme un clé primaire, il est normal qu'il l'interdise.
    Il ne faut pas entrer deux fois la même valeur pour le champ qui est la clé primaire.
    0
    1. marwa_h Messages postés 31 Statut Membre
       
      merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii enfin ça marche je vous souhaite tous le bonheur de monde, la joie et la réussite merci beaucoup merci merciii merciiii j suis trés contente
      0
    2. le père
       
      alors je suis content moi aussi
      bonne chance pour la suite, car il te reste du travail quand même
      0
    3. marwa_h Messages postés 31 Statut Membre
       
      une dernière question s'il vous plait comment je peux indiquer aux utilisateurs que l'inscription est terminé avec succès ou bien qu'il y a problème au niveau d'un telle champ c'est a dire si l'inscription est terminé avec succès un message s'affichera"inscription terminé" ou bien les champs dont il y a un problème deviennent rouges par exemple.vous avez compris qu'est ce que je veux ou non??
      0
    4. marwa_h Messages postés 31 Statut Membre
       
      oui il me reste beaucoup de travail a faire ce n'est que le début mais quand même ça me donne une énergie pour travailler merci une autre fois et si j'ai d'autres questions est ce que je peux vous contacter? si vous voulez bien sur.dans tous les cas vous m'a beaucoup aidez merci.
      0
  19. le père
     
    Pour indiquer que l'inscription a réussi :
    juste après
    $req = mysql_query($sql) or die ("Erreur requete ".mysql_error());
    ajouter
    echo '<br />Inscription réussie<br />';

    Pour mettre en rouge les champs qui ont un problème, comme tu fais les contrôles en javascript, il faudrait modifier la couleur en javascript et je ne m'y connais pas beaucoup.
    0
    1. marwa_h
       
      ok c'est clair et une grande merci pour vous.
      0
    2. marwa_h
       
      bonjour le père alors je re avec un autre question maintenant je veux faire une page authentification le problème est que après avoir remplir le login et le mot de passe j'ai toujours un message "mauvaise identification" même si le login et le mot de passe existe je pense qu'il y a pas comparaison entre les valeurs saisies et les valeurs enregistrés.s'il vous aidez moi pour trouver l'erreur et merci.
      1- le formulaire est le suivant :
      <html>
      <body>
      <p>Saisissez vos login et mot de passe pour vous identifier: </p>
      <form action="validation.php" method="post">
      <table border="0">
      <tr>
      <td>Login:</td>
      <td><input type="text" name="login" size="25" /></td>
      </tr>
      <tr>
      <td>Mot de passe:</td>
      <td><input type="password" name="pwd" size="10"/></td>
      </tr>
      </table>
      <p><input type="submit" name="Valider" value="Valider"/></p>
      </form>
      </body>
      </html>
      2- la page validation.php :
      <?php
      //on crée les variables en provenance du formulaire
      extract ($_POST) ;
      //la connexion a la bdd
      $host = "localhost";
      $user = "root";
      $pass = "";
      $bdd = "smart";
      $con= mysql_connect($host,$user,$pass);
      if (!$con)
      {
      die('impossible de se connecter: ' . mysql_error());
      }

      $db_selected =mysql_select_db($bdd, $con);
      if (!$db_selected) {
      die ('Impossible de sélectionner la base de données : ' . mysql_error());
      }
      $pwd=md5($_POST['pwd']);
      $login=($_POST['login']);

      $Sql="SELECT login,pwd FROM clientabonne where login='$login' AND pwd='$pwd'";
      //on envoi la requete
      $Reponse = mysql_query($Sql, $con);
      $donnees=mysql_fetch_array($Reponse);
      //comparaison du mot de passe entré et du mot de passe bdd
      if($pwd==$donnees['pwd'])
      header("Location: succes.php" );
      else
      {
      echo "Mauvaise identification";
      include("formulaire.php" );
      }
      ?>
      0
    3. marwa_h
       
      je sais que se sont des questions bêtes mais je suis débutante et je ne connais pas le php. aidez moi s'il vous plait et merci
      0