Page 1 sur 1

pb la réalisation d'un site web a accés réservé" php et

Posté : 18 nov. 2007, 19:25
par kacem25
Voilà depuis peu je me suis décidé de me mettre au php et mysql donc pour débuter je me suis acheter "PHP & MySQL pour les nuls"( livre critiquable sur bien des points), et je me suis lancé sur la réalisation d'un site web a accés réservé, et là je me suis heurté à un problème.
Mes formulaires créés, je les essais, je remplis les champs identifiant et mots de passe et valide en cliquant sur identifiez-vous j'ai le message d'erreur " Requête 1 en échec" et quand je remplis le formulaire et que je clique sur inscrivez-vous j'ai le message "Requête SELECT en échec case new" Je pense que je n'arrive pas à me connecter à la base de donner et j'ai essayé different truc que j'ai chopé dans les forum mais rien n'y fait. Mais pour être plus claire je vous poste le script. Si quelqu'un pouvait m'aider sa serait super sympa. Merci.
<?php
/* Programme :Login.php
* Description :Programme de login pour la section à accés réservé
* de l'animalerie. Il propose deux options :
* 1 - s'identifier par uin coupe de login/mot de passe
* 2 - créer un cnouveau compte
* Identificateurs et mots de passe sont conservés
* Dans une base de données MySQL.
*/
session_start();
include("chiens.inc");
switch (@$_POST['do'])
{
case "login";
$cxn = mysqli_connect($host, $user, $password, $memberdirectory)
or die("connexion impossible dans la case login");
$sql = "SELECT loginName FROM member WHERE loginName='$_POST[fusername]'";
$result = mysqli_query($cxn,$sql)
or die("Requête 1 en échec");
$num = mysqli_num_rows($result);
if($num > 0 ) // logiName non trouvé
{

Posté : 18 nov. 2007, 20:14
par Kaoteknik
Pour commencer remplace :
$result = mysqli_query($cxn,$sql) or die("Requête 1 en échec");


Par :
$result = mysqli_query($cxn,$sql) or die(mysql_error()); 
Mais aussi :
$cxn = mysqli_connect($host, $user, $password, $memberdirectory) or die("connexion impossible dans la case login"); 
Par :
$cxn = mysqli_connect($host, $user, $password, $memberdirectory) or die(mysql_error()); 
Cela te permettra d'avoir des indications bien plus précieuses pour comprendre l'origine de l'erreur.

Par contre pense à utiliser le bouton "PHP" au-dessus du champ de saisi de texte sur le forum afin de profiter de la coloration syntaxique dans le corps du message... Comme ceci :
<?php
/* Programme :Login.php
* Description :Programme de login pour la section à accés réservé
* de l'animalerie. Il propose deux options :
* 1 - s'identifier par uin coupe de login/mot de passe
* 2 - créer un cnouveau compte
* Identificateurs et mots de passe sont conservés
* Dans une base de données MySQL.
*/
session_start();
include("chiens.inc");
switch (@$_POST['do'])
{
case "login";
$cxn = mysqli_connect($host, $user, $password, $memberdirectory)
or die("connexion impossible dans la case login");
$sql = "SELECT loginName FROM member WHERE loginName='$_POST[fusername]'";
$result = mysqli_query($cxn,$sql)
or die("Requête 1 en échec");
$num = mysqli_num_rows($result);
if($num > 0 ) // logiName non trouvé
{
Je te conseillerai aussi de supprimer l'arobase que tu as mis sur le "switch". Placer un arobase permet en effet de masquer les éventuels messages d'erreur, ce qui n'est pas forcément pratique pour déboguer un script.

Enfin, pense également à placer des indentations dans ton code, tu y gagneras en lisibilité.

Edition : il me semble qu'il te manque une fonction pour établir la connexion avec ta base de données. Après :
$cxn = mysqli_connect($host, $user, $password, $memberdirectory) or die(mysql_error);
Ajoute la ligne suivante :
mysql_select_db($memberdirectory, $cxn) or die(mysql_error());
Mais pour que la connexion avec la base de données puisse s'établir, il te faut également un fichier externe contenant les informations de connexion.

Après :
session_start();
Ajoute :
include ('nom_du_fichier_contenant_les_infos_de_connexion.php');
Puis crée le fichier contenant les infos censées être récupérées dans tes variables de connexion ($host, $user, $password et $memberdirectory).