prob de code

Eléphanteau du PHP | 13 Messages

17 janv. 2006, 20:10

Bonjour, dans mon site, il y a une page où les nouveaux membres doivent impérativement passer, on ne peut y accéder qu'une fois (grave à la base, on enregistre si il a déja visité la page) cette page sert à initialiser les données le concernant. le code me donne comme résultat quand je l'essaie "Etape 1 : Procédure de démarrage OK.Vous avez déjà cliqué sur ce lien"
donc je comprend pas comment ca ne peut pas marcher :(
<?
require("conf.php3");

// CONNEXION MYSQL
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}

// SELECTION DE L'ENREGISTREMENT CONTENANT L'ID EN COURS
$requete=mysql_db_query($sql_bdd,"select * from membre where id=\"$id\"",$db_link) or die(mysql_error());

// SI L'ID N'EXISTE PAS
if(mysql_num_rows($requete)==0)
	{
	// REDIRECTION PAGE ERREUR
	header("Location:$url_erreur");
	exit;
	}

// LIGNE FACULTATIVE : RECUPERATION DU PSEUDO
$pseudo_membre=mysql_result($requete,0,"pseudo");
// CHAMPS SUPLEMENTAIRES
// Si vous avez ajouté des champs dans la table SQL, inspirez-vous de la ligne précédente pour récupérer leur valeur. Exemple :
$email=mysql_result($requete,0,"email");
$ville=mysql_result($requete,0,"ville");
	
// DECONNEXION MYSQL	
mysql_close($db_link);





{
echo "Etape 1 : Procédure de démarrage OK";
}
// ON vérifie que le membre n'a pas déja crédité son compte

$pseudo_membre = $pseudo ;

mysql_connect("localhost", "*****", "*****");
mysql_select_db("*****");

$a = mysql_query("SELECT credit FROM creditercompte WHERE pseudo='$pseudo'");
if(mysql_num_rows($a) > 0) {

//Si jamais le pseudo n'est pas dans la table, on le rajoute

mysql_query("INSERT INTO creditercompte VALUES('$pseudo', 'oui')");

mysql_close();
?>
<?
mysql_connect("localhost", "*****", "*****");
mysql_select_db("*****");
// Ensuite, on crédite son compte perso de 2000 $


{
echo "Etape 2 : Compte crédité de 2000 dollars OK";
}

// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO stock VALUES(".$pseudo_membre.", '2000', '0', '0', '0', '0')");


// Ensuite, on met ses paramètres pour la ville 1

{
echo "Etape 3 : Production et besoins Ville 1 OK";
}

// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO ville1 VALUES(".$pseudo_membre.", 'fruits', 'viande', '50', '50')");


// De même avec la ville 2

{
echo "Etape 4 : Production et besoins Ville 2 OK";
}

// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO ville2 VALUES(".$pseudo_membre.", 'viande', 'fruits', '50', '50')");



// on le refait pour la ville 3

{
echo "Etape 5 : Production et besoins Ville 3 OK";
}

// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO ville3 VALUES(".$pseudo_membre.", 'meubles', 'jouets', '50', '50')");


// et encore pour finir avec la ville 4

{
echo "Etape 6 : Production et besoins Ville 4 OK";
}

// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO ville4 VALUES(".$pseudo_membre.", 'jouets', 'meubles', '50', '50')");

// message de fin, tout s'est bien passé !

echo "Fini avec Succès, cliquez <a href='zonemembre.php3?id=$id'>ici</a> pour revenir à l'accueil";

// mais si jamais il à déja cliqué...

}
else {
// accès refusé !
echo "Vous avez déjà cliqué sur ce lien !";
}
?>


merci de m'aider ! ! !
(ps j'ai changé les mots de passe de la bdd)

EDIT c'est bon pour la concaténation
Modifié en dernier par prophecy le 17 janv. 2006, 20:30, modifié 2 fois.

Eléphant du PHP | 440 Messages

17 janv. 2006, 20:22

hello ,

regarde bien :
requete="select * from membre where id=".$id." ";
Regarde bien la syntaxe et reprends toutes tes requettes sur cette base la !
C'est en faisant des erreurs et en osant demander de l'aide qu'on apprend ! Il n'est pas ridicule de ne pas savoir !

Eléphanteau du PHP | 13 Messages

17 janv. 2006, 20:24

aaah merci !
tu pense que c'est la concaténation qui marche pas ? arf je retourne travailler !
non sérieux je vais essayer merci !
EDIT
je viens d'essayer mais il me met toujours :"Etape 1 : Procédure de démarrage OKVous avez déjà cliqué sur ce lien ! "
les textes sont collés c'est pas grave avec un <br> ca devrait aller, mais c'est qu'il ne fasse pas les ajouts dans la BDD :?
Modifié en dernier par prophecy le 17 janv. 2006, 20:27, modifié 1 fois.

Eléphant du PHP | 440 Messages

17 janv. 2006, 20:26

Bah a premiere vu deja c est un peu mal ecris oui , la preuve la coloration syntaxique du forum te le montre .... tes variable devraient aparaitrent en bleu et pas en rouge !
C'est en faisant des erreurs et en osant demander de l'aide qu'on apprend ! Il n'est pas ridicule de ne pas savoir !

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

17 janv. 2006, 20:34

Salut,

1. à quoi servent les accolades dans ces cas?
{
echo "Etape 2 : Compte crédité de 2000 dollars OK";
}
.........à rien, donc tu peux les enlever :wink:

2. Tu dis que le membre arrive une seule fois sur cette page, s'il y est déjà passé il est redirigé automatiquement, ça c'est OK. MAIS si tu fait ça:
// ON vérifie que le membre n'a pas déja crédité son compte
$a = mysql_query("SELECT credit FROM creditercompte WHERE pseudo='$pseudo'");
if(mysql_num_rows($a) > 0) 
Le test ne serait pas mal construit ? =>
if(mysql_num_rows($a) == 0)
3. Combiens de fois fait tu appel à :
mysql_connect("localhost", "*****", "*****");
mysql_select_db("*****");
beaucoup trop, imagines que tu change d'hébergement tu devras alors changer les paramètres de connexion dans tous les fichiers et ce autant de fois que tu a fait appel à ces lignes de code. Il serait plus judicieux de faire un fichier de configuration avec ces paramètres que tu inclus a chaue fois que tu en as besoin comme ça en cas de changement tu ne changes qu'un seul fichier.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 13 Messages

17 janv. 2006, 20:35

oups je n'avais pas lu ton message.
merci je vais essayer ca tout de suite :) tu veux dire omme tout en haut zvec conf.php3 ?
(au fait l'utilisateur n'est pas redirigé, il y a simplement un message qui s'affiche : vous avez déjà cliqué sur ce lien, la redirection c'est pour si le membre est identifié ou pas)

pour le test je sais pas c'est un ami qui m'a conseillé ca

Eléphant du PHP | 353 Messages

17 janv. 2006, 20:39

as-tu un message d'erreur avec ce nouveau code ?

EDIT: la page à changé oups !! lol
Modifié en dernier par Tictac le 17 janv. 2006, 20:39, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

17 janv. 2006, 20:39

oups je n'avais pas lu ton message.
merci je vais essayer ca tout de suite :) tu veux dire omme tout en haut zvec conf.php3 ?
voila en plus qu'il y en a déjà un :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 13 Messages

17 janv. 2006, 20:40

il y en a un car j'ai suivi un tutorial pour un espace membre mais j'avais pas tilté que je pouvais l'utiliser pour tout ;)

Eléphanteau du PHP | 13 Messages

17 janv. 2006, 20:45

voici mon nouveau code que je vais tester :
<?
require("conf.php3");

// CONNEXION MYSQL
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}

// SELECTION DE L'ENREGISTREMENT CONTENANT L'ID EN COURS
$requete=mysql_db_query($sql_bdd,"select * from membre where id=\"$id\"",$db_link) or die(mysql_error());

// SI L'ID N'EXISTE PAS
if(mysql_num_rows($requete)==0)
	{
	// REDIRECTION PAGE ERREUR
	header("Location:$url_erreur");
	exit;
	}

// LIGNE FACULTATIVE : RECUPERATION DU PSEUDO
$pseudo_membre=mysql_result($requete,0,"pseudo");
// CHAMPS SUPLEMENTAIRES
// Si vous avez ajouté des champs dans la table SQL, inspirez-vous de la ligne précédente pour récupérer leur valeur. Exemple :
$email=mysql_result($requete,0,"email");
$ville=mysql_result($requete,0,"ville");
	
// DECONNEXION MYSQL	
mysql_close($db_link);





{
echo "Etape 1 : Procédure de démarrage OK";
}
// ON vérifie que le membre n'a pas déja crédité son compte

$pseudo_membre = $pseudo ;

require("conf.php3");

// CONNEXION MYSQL
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}



$a = mysql_query('SELECT credit FROM creditercompte WHERE pseudo=".$pseudo."');
if(mysql_num_rows($a) > 0) {

//Si jamais le pseudo n'est pas dans la table, on le rajoute

mysql_query("INSERT INTO creditercompte VALUES(".$pseudo.", 'oui')");

mysql_close();
?>
<?
require("conf.php3");

// CONNEXION MYSQL
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}


// Ensuite, on crédite son compte perso de 2000 $


{
echo "Etape 2 : Compte crédité de 2000 dollars OK";
}

// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO stock VALUES(".$pseudo_membre.", '2000', '0', '0', '0', '0')");


// Ensuite, on met ses paramètres pour la ville 1

{
echo "Etape 3 : Production et besoins Ville 1 OK";
}

// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO ville1 VALUES(".$pseudo_membre.", 'fruits', 'viande', '50', '50')");


// De même avec la ville 2

{
echo "Etape 4 : Production et besoins Ville 2 OK";
}

// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO ville2 VALUES(".$pseudo_membre.", 'viande', 'fruits', '50', '50')");



// on le refait pour la ville 3

{
echo "Etape 5 : Production et besoins Ville 3 OK";
}

// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO ville3 VALUES(".$pseudo_membre.", 'meubles', 'jouets', '50', '50')");


// et encore pour finir avec la ville 4

{
echo "Etape 6 : Production et besoins Ville 4 OK";
}

// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO ville4 VALUES(".$pseudo_membre.", 'jouets', 'meubles', '50', '50')");

// message de fin, tout s'est bien passé !

echo "Fini avec Succès, cliquez <a href='zonemembre.php3?id=$id'>ici</a> pour revenir à l'accueil";

// mais si jamais il à déja cliqué...

}
else {
// accès refusé !
echo "Vous avez déjà cliqué sur ce lien !";
}
?>
d'accord merci beaucoup ca aide bien pour la lisibilité et pour les différents problèmes que tu a annoncé, mais ca n'a toujours pas résolu mon problème : le code n'est pas faux, il n'y a pas d'erreurs, et pourtant ca ne marche pas :cry:
et puis c'est bizarre, il n'enregistre rien dans la base, comme si le résultat de la condition était à la fois oui et non

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

17 janv. 2006, 20:47

Oui mais il faut aussi lire les messages au complet hein :wink:
1. à quoi servent les accolades dans ces cas?
{
echo "Etape 2 : Compte crédité de 2000 dollars OK";
}
.........à rien, donc tu peux les enlever :wink:

Pas fait ça.
si tu fait ça:
// ON vérifie que le membre n'a pas déja crédité son compte
$a = mysql_query("SELECT credit FROM creditercompte WHERE pseudo='$pseudo'");
if(mysql_num_rows($a) > 0) 
Le test ne serait pas mal construit ? =>
if(mysql_num_rows($a) == 0)

le test est toujours pareil.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 13 Messages

17 janv. 2006, 20:49

d'accord pour les accolades, je vais me mettre une baffe.
mais sinon pour le test je vois pas du tout quoi mettre à la place
:?: :?: :?:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

17 janv. 2006, 22:25

mais sinon pour le test je vois pas du tout quoi mettre à la place
:?: :?: :?:
Le test ne serait pas mal construit ? =>
if(mysql_num_rows($a) == 0)
ce que j'ai indiqué ni plus ni moins, avec un "==" au lieu de ">" :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 13 Messages

18 janv. 2006, 09:26

je vais me mettre DEUX baffes je croyais que tu me conseillais de trouver une autre formule.
mais pour ne pas embrouiller les esprits je vais remettre le code sans celui du début qui vérifie si on est bien inscrit.
<?

echo "Etape 1 : Procédure de démarrage OK";

// ON vérifie que le membre n'a pas déja crédité son compte

$pseudo_membre = $pseudo ;

require("conf.php3");

// CONNEXION MYSQL
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}



$a = mysql_query('SELECT credit FROM creditercompte WHERE pseudo=".$pseudo."');
if(mysql_num_rows($a) == 0) {

//Si jamais le pseudo n'est pas dans la table, on le rajoute

mysql_query("INSERT INTO creditercompte VALUES(".$pseudo.", 'oui')");

mysql_close();
?>
<?
require("conf.php3");

// CONNEXION MYSQL
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}


// Ensuite, on crédite son compte perso de 2000 $



echo "Etape 2 : Compte crédité de 2000 dollars OK";


// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO stock VALUES(".$pseudo_membre.", '2000', '0', '0', '0', '0')");


// Ensuite, on met ses paramètres pour la ville 1


echo "Etape 3 : Production et besoins Ville 1 OK";


// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO ville1 VALUES(".$pseudo_membre.", 'fruits', 'viande', '50', '50')");


// De même avec la ville 2


echo "Etape 4 : Production et besoins Ville 2 OK";


// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO ville2 VALUES(".$pseudo_membre.", 'viande', 'fruits', '50', '50')");



// on le refait pour la ville 3


echo "Etape 5 : Production et besoins Ville 3 OK";


// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO ville3 VALUES(".$pseudo_membre.", 'meubles', 'jouets', '50', '50')");


// et encore pour finir avec la ville 4


echo "Etape 6 : Production et besoins Ville 4 OK";


// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO ville4 VALUES(".$pseudo_membre.", 'jouets', 'meubles', '50', '50')");

// message de fin, tout s'est bien passé !

echo "Fini avec Succès, cliquez <a href='zonemembre.php3?id=$id'>ici</a> pour revenir à l'accueil";

// mais si jamais il à déja cliqué...

}
else {
// accès refusé !
echo "Vous avez déjà cliqué sur ce lien !";
}
?>
le tout pitit ptoblème est qu'il m'affiche etape1 :blabla il me met toutes les étapes mais ma base est vide
Voici ce qu'il m'affiche exactement :
Etape 1 : Procédure de démarrage OK
Etape 2 : Compte crédité de 2000 dollars OK
Etape 3 : Production et besoins Ville 1 OK
Etape 4 : Production et besoins Ville 2 OK
Etape 5 : Production et besoins Ville 3 OK
Etape 6 : Production et besoins Ville 4 OK
Fini avec Succès, cliquez ici pour revenir à l'accueil

et ma base est toujours et désespérément vierge :(

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

18 janv. 2006, 20:11

ne fait appel au aux données de connexion qu'une seule fois, donc un seul
require("conf.php3");
en haut de la page.

Ensuite enleve le @ devant "mysql_connect", il y a peut etre une erreur de connexion:
$db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd); 
Mais apparemment tu ne séléctionne pas de base de donnée:
mysql_select_db()

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute