prob de code

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : prob de code

par Truc » 19 janv. 2006, 19:34

Cette ligne retourne-t-elle un résultat ?
$pseudo_membre=mysql_result($requete,0,"pseudo");
D'où sortent ces variables:

$sql_bdd utilisé ici:
mysql_db_query($sql_bdd,"select * from membre where id=\"$id\"",$db_link)
et $pseudo
$pseudo_membre = $pseudo ; 
toutes les variables utilisées doivent à un moment donné être alimentées.

par prophecy » 19 janv. 2006, 17:25

coucou,
pour sélectionner une base de données, j'ai mit
mysql_query($sql_bdd,"INSERT INTO creditercompte VALUES(".$pseudo.", 'oui')");
avec le $sql_bdd, je sais pas si c'est bon

mais sinon ca ne marche toujours pas j'ai suivi tous tes conseils
je sais pas quoi faire :(
<?

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 ;

// 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($sql_bdd,'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($sql_bdd,"INSERT INTO creditercompte VALUES(".$pseudo.", 'oui')");

mysql_close();
?>
<?

// 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($sql_bdd,"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($sql_bdd,"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($sql_bdd,"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($sql_bdd,"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($sql_bdd,"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 !";
}
?>

par Truc » 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()

par prophecy » 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 :(

par Truc » 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:

par prophecy » 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
:?: :?: :?:

par Truc » 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.

par prophecy » 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

par prophecy » 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 ;)

par Truc » 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:

par Tictac » 17 janv. 2006, 20:39

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

EDIT: la page à changé oups !! lol

par prophecy » 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

par Truc » 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.

par DarkBlue » 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 !

par prophecy » 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 :?