Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/08/2007, 19h10   #1
Invité de passage
 
Inscription : août 2007
Messages : 36
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 36
Points : 2
Points : 2
Par défaut [PHP-JS] Refuser un achat si membre dans les -

Bonjour,
J'ai un script pour construire un hôtel dans mon jeu, hors, quand le membre construit un hôtel et qu'il n'as pas assez, son argent est dans les moins. Je voudrais donc savoir quoi placer et ou pour que si le membre n'as pas assez d'argent, le script lui dise, voici mon script:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<head><style type="text/css">
<!--
.Normal-form
{
font-family:"Times New Roman", serif; font-weight:700; font-size:16.0px; line-height:1.25em; color:#8e741c; 
}
-->
</style></head>
<?php
{
$nom_hotel = htmlentities($_POST['nom_hotel']); //On recupère les infos
$ville = htmlentities($_POST['ville']);
$classification = htmlentities($_POST['classification']);
$nom_chaine = htmlentities($_POST['nom_chaine']);
$pseudo = htmlentities($_POST['pseudo']);
$argent = htmlentities($_POST['argent']);
$type= htmlentities($_POST['type']);
 
 
$verification = mysql_query("SELECT COUNT(*) FROM pdf_hotel WHERE nom_hotel='$nom_hotel'") or die (mysql_error());
$donnees = mysql_fetch_array($verification)or die (mysql_error());
 
if($donnees['COUNT(*)'] >= 1) //On verifie que le nom de l'hôtel n'existe pas déjà
                                                                                		{ 
$reponse = 'Un hôtel porte déjà ce nom là, merci d\'en choisir un nouveau. <a href="javascript:history.back(1)">Retour au formulaire</a>';
                                                                                		}
elseif( empty($nom_hotel)) //On verifie que les variables précédentes ne soient pas vide
{
$reponse = 'Veuillez indiquer un nom pour votre hôtel, <a href="javascript:history.back(1)">Retour au formulaire</a>';
}
else //Si tout est bon on entre les données dans la BDD et on envoye le mail
{
mysql_query("INSERT INTO pdf_hotel VALUES ('','$pseudo', '$nom_chaine', '$nom_hotel', '$type', '$classification', '$ville')");
mysql_query ("UPDATE pdf_membre SET `argent`='$argent' WHERE pseudo='$pseudo'");
$reponse = 'Vous venez de construire un nouvel hôtel.<br>Le maire vous souhaite la bienvenue et de bonnes affaires ! <br><a href="chaine.php">Retour</a>';
}
}
 
 
 
 
?>
 
<html>
<body>
<center><span class="Normal-form"><? echo "$reponse"; ?></span></center> <!-- On affiche la reponse de tout le code du dessus -->
</body>
</html>
Merci pour vos réponses
benjam89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2007, 19h29   #2
Membre actif
 
Inscription : janvier 2006
Messages : 149
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : janvier 2006
Messages : 149
Points : 186
Points : 186
Bonjour,

Il faut comparer l'argent disponible avec l'argent nécessaire pour la construction.

Tu peux donc rajouter un else if contenant quelque chose du genre :
Code :
1
2
3
4
5
6
 
if ($_SESSION['solde'] < $prix ) {
 
 $reponse = 'Z\'êtes trop pauvre !';
 
}
En admettant que $prix soit le résultat d'une requête donnant toutes les informations sur l'hotel en question.

Après, j'ai choisi de prendre une variable de session car tu pourrais très bien te renseigner sur le solde une seule fois par affichage de page, mais tu peux remplacer ceci par un résultat de requête faite au préalable.
Vell est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2007, 22h57   #3
Invité de passage
 
Inscription : août 2007
Messages : 36
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 36
Points : 2
Points : 2
Merci beaucoup pour ta réponse, mais ton code, je le met où ? en dessous de udpate ?

Merci
benjam89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 01h13   #4
Membre actif
 
Inscription : janvier 2006
Messages : 149
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : janvier 2006
Messages : 149
Points : 186
Points : 186
Bon, je devrais pas, mais je te fais un code tout mâché, mais normalement ça devrait ressembler à ça :

(ah oui, je l'ai modifié pour rendre ton code plus clair ...)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
 
function VerifHotel($NomHotel) {
 
	$Requete 	= "SELECT COUNT(*) as nb FROM pdf_hotel WHERE nom_hotel='".$nom_hotel."'";
 
	$verification 	= mysql_query($Requete) or die (mysql_error());
	$donnees 	= mysql_fetch_array($verification)or die (mysql_error());
 
	return $donnees['nb'];
}
 
function VerifFric($Pseudo) {
 
/** C'est là que tu dois modifier à ta sauce, par rapport à tes données **/
 
	$Requete 	= "SELECT argent FROM membres WHERE pseudo ='".$Pseudo."'";
 
	$verification 	= mysql_query($Requete) or die (mysql_error());
	$donnees 	= mysql_fetch_array($verification)or die (mysql_error());
 
	return $donnees['argent'];
 
}
 
 
/** mysql_real_escape_string() permet de protéger des injections **/
/** Si tu n'en as pas l'utilité, tu peux enlever htmlentities() **/
 
$nom_hotel 	= mysql_real_escape_string(htmlentities($_POST['nom_hotel'])); 
$ville 		= mysql_real_escape_string(htmlentities($_POST['ville']));
$classification = mysql_real_escape_string(htmlentities($_POST['classification']));
$nom_chaine 	= mysql_real_escape_string(htmlentities($_POST['nom_chaine']));
$pseudo 	= mysql_real_escape_string(htmlentities($_POST['pseudo']));
$argent 	= mysql_real_escape_string(htmlentities($_POST['argent']));
$type		= mysql_real_escape_string(htmlentities($_POST['type']));
$WeCanContinueItsMagnific = true;
 
 
 
 
if(VerifHotel($nom_hotel) >= 1) { 
 
	/** L'hotel existe déja ? **/                                                                                	
	reponse = 'Un hôtel porte déjà ce nom là, merci d\'en choisir un nouveau. <a href="javascript:history.back(1)">Retour au formulaire</a>';
	$WeCanContinueItsMagnific = false;
 
} elseif( empty($nom_hotel)) { 
 
	/** Le nom de l'hotel est renseigné ? **/
	reponse = 'Veuillez indiquer un nom pour votre hôtel, <a href="javascript:history.back(1)">Retour au formulaire</a>';
	$WeCanContinueItsMagnific = false;
 
} else if ( VerifFric($pseudo) < $argent ) {
 
	/** Le membre est-il assez friqué ? **/
	reponse = 'Il va falloir penser &agrave; vous enrichir avant d\'y penser ! <a href="javascript:history.back(1)">Retour au formulaire</a>';
	$WeCanContinueItsMagnific = false;
 
} 
 
if ($WeCanContinueItsMagnific == true) { 
 
	//Si tout est bon on entre les données dans la BDD et on envoye le mail
	mysql_query("INSERT INTO pdf_hotel VALUES ('','$pseudo', '$nom_chaine', '$nom_hotel', '$type', '$classification', '$ville')");
	mysql_query ("UPDATE pdf_membre SET `argent`='$argent' WHERE pseudo='$pseudo'");
	$reponse = 'Vous venez de construire un nouvel hôtel.<br>Le maire vous souhaite la bienvenue et de bonnes affaires ! <br><a href="chaine.php">Retour</a>';
 
}
 
?>
Vell est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 01h27   #5
Invité de passage
 
Inscription : août 2007
Messages : 36
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 36
Points : 2
Points : 2
Merci, c'est gentil, mais j'ai une erreur qui s'affiche Parse error: parse error, unexpected '='
benjam89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 19h04   #6
Membre actif
 
Inscription : janvier 2006
Messages : 149
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : janvier 2006
Messages : 149
Points : 186
Points : 186
Bonjour,

J'ai tout tapé assez rapidement, il doit y'avoir des problèmes de syntaxe, il te suffit de suivre les ligne, comme ça tu en profiteras pour comprendre le fonctionnement des dites lignes

C'est un peu rébarbatif au début, puis après on s'y fait ...

Allez, un indice, il s'agit d'un mauvais copier / collé, il manque trois signes dollars "$" devant des variables


($reponse au lieu de reponse dans les trois if / else if !)
Vell est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 23h02   #7
Invité de passage
 
Inscription : août 2007
Messages : 36
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 36
Points : 2
Points : 2
Merci, mais sa ne fonctionne pas, j'ai modifié, il n'y à donc pas de message d'erreur, mais le membre peut toujours construire un hotel, même sans argent
benjam89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 00h30   #8
Membre actif
 
Inscription : janvier 2006
Messages : 149
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : janvier 2006
Messages : 149
Points : 186
Points : 186
Ralala,

Il faut que tu modifies la requête par rapport à ta base de données pour récupérer l'argent disponible sur le compte du membre.

Après ça, il y'a l'étape du test (si prix hotel > solde compte), et ensuite on dit que c'est ok.

Donnes moi la structure de ta base de données membres sinon ...
Vell est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 11h34   #9
Invité de passage
 
Inscription : août 2007
Messages : 36
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 36
Points : 2
Points : 2
Et ben en faite, l'argent est déjà récupéré dans la bbd, car comme j'utilise des sessions, j'ai un script au débu de ma page qui les récupère...
benjam89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2007, 01h11   #10
Membre actif
 
Inscription : janvier 2006
Messages : 149
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : janvier 2006
Messages : 149
Points : 186
Points : 186
Alors à toi d'adapter à ta sauce !

Un simple if comparant l'argent du membre avec le prix de l'hotel ....
Vell est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2007, 05h35   #11
Membre régulier
 
Avatar de B.Moncef
 
Étudiant
Inscription : août 2007
Messages : 75
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2007
Messages : 75
Points : 83
Points : 83
Si j'ai bien compris ton problème, tu dois remplacer
Code :
} else if ( VerifFric($pseudo) < $argent ) {
dans le code que t'as donne Vell, par
Code :
} else if ( $argentDuMembre - $argent < 0 ) {
ou $argentDuMembre correspond a l'argent dont dispose déjà le membre.
B.Moncef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 01h18   #12
Membre actif
 
Inscription : janvier 2006
Messages : 149
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : janvier 2006
Messages : 149
Points : 186
Points : 186
En fait ça revient au même

Admettons :

$PrixHotel = 10;
$ArgentMembre = 20;

Ca nous donne le même résultat dans les deux cas car $PrixHotel est inférieur à $ArgentMembre, et $ArgentMembre - $PrixHotel est supérieur à 0.
Vell est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 07h07   #13
Membre régulier
 
Avatar de B.Moncef
 
Étudiant
Inscription : août 2007
Messages : 75
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2007
Messages : 75
Points : 83
Points : 83
Exact

Donc la seule petite chose qu'il reste a régler est la variable $argentDuMembre, a toi de jouer benjam
B.Moncef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 22h22   #14
Invité de passage
 
Inscription : août 2007
Messages : 36
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 36
Points : 2
Points : 2
D'accord, merci.
Donc que dois-je modifié dans ce script ? pour que sa fonctionne en sachant que la colone pour l'argent dont dispose le membre s'appel "argent" (tout simplement et que le prix de l'hotel est de 280000.

Merci encore pour aide
benjam89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 22h32   #15
Membre régulier
 
Avatar de B.Moncef
 
Étudiant
Inscription : août 2007
Messages : 75
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2007
Messages : 75
Points : 83
Points : 83
Si la colonne s'appelle argent, le code que t'as donné Vell au début devrait marcher. Si tu as toujours une erreur de syntaxe recopie toute la ligne d'erreur.
B.Moncef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 22h35   #16
Invité de passage
 
Inscription : août 2007
Messages : 36
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 36
Points : 2
Points : 2
Oui, ben il fonctionnais, le seul problème, c'est que même quand le membre n'avais pas assez d'argent, son compte était dans les -..... et son hotel était acheté, et se que je voudrais, c'est un bout de code qui vérifi que le membre à plus d'argent que le prix de l'hotel.
benjam89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h46.


 
 
 
 
Partenaires

Hébergement Web