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

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
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
le père
 
Et il manque un "return true;" à la fin du script de validation.
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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
le père
 
est-ce que le print_r ($_POST); affiche quelque chose ?
0
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
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
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
le père
 
est-ce que le print_r ($_POST); affiche quelque chose ?
0
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
le père
 
Tu as une virgule en trop dans ta requête après pwd et $pwd
0
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
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
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
le père
 
alors je suis content moi aussi
bonne chance pour la suite, car il te reste du travail quand même
0
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
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
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
marwa_h
 
ok c'est clair et une grande merci pour vous.
0
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
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