Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 18/10/2007, 00h33   #1
Invité de passage
 
Inscription : mai 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 10
Points : 2
Points : 2
Par défaut [Conception] addition un peu dure

bonjour

j'ai besoin de votre aide pour mon site

c'set un site de jeu gratuit
j'explique pour que vous compreniez la question
donc c un jeu sur la grande surface
on a des rayon avec des commandes lorsque la commande et prete on la transfere dans le stock.

puis on relance une nouvelle commande pourqlaquel il faut de l'argent et des bon de commande.
pour imager on va dire que c'est un terrain que on veut faire planter des tomates mais pour le faire il faut des graine ( bon de commande)
donc je dois faire une page qui recolte et qui replante
et a chaque fois je dois prendre la recolte et la mettre dans le stock
et ensuite prendre une graine dans le stock et l planter dans le terrain.

le probleme tout serai ok
mais je n'arrive pas a additionner les recoltes
en fait si j'ai que 1 terrain cela se passe bien
ca me prend bien le stock et la graine.
mais si j'ai 2 recolte ( deux terrain) ca additionne pas.

et ca je sais pas le faire.


j'ai tenter le ++ a la ligne 114 mais cela ne fonctionne pas a chaque fois
et comme je connais pas trop cette fonction
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
 
<?php session_start(); 
include ("inc/acces.php");
include ("inc/f.php");
    //echo'<script>alert(" !");</script>';
    // donc ici on fait un raccourci  pour eviter de chercher ou on doit modifier
    $nomressource= 'Barbecue'; // nom de l'env
    $env=109; // numero de  env
 
 
?>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Aldebaran city le centre commercial .</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="MiseEnPage.css" type="text/css" />
<script type="text/javascript" src="../Fonctions.js"></script>
</head>
 
<body>
<script>
if (screen.width == 640)
    document.write('<table width="640" border="0" align="center">');
else if (screen.width == 800)
    document.write('<table width="750" border="0" align="center">');
else if (screen.width == 1024)
    document.write('<table width="950" border="0" align="center">');
else if (screen.width == 1152)
    document.write('<table width="1102" border="0" align="center">');
else if (screen.width == 1280)
    document.write('<table width="1200" border="0" align="center">');
else if (screen.width == 1600)
    document.write('<table width="1550" border="0" align="center">');
else
    document.write('<table width="950" border="0" align="center">');
</script>
  <tr>
      <!-- haute de page -->
    <td colspan="3" valign="top">
        <div id="haut_page">
            <?php include 'Includes/Haut.inc' ?>
        </div>
 
        <div id="annoce">
            <?php include 'Includes/annonces.inc' ?>
        </div>
    </td>
  </tr>
  <tr>
  <!-- menu gauche -->
    <td width="150px" valign="top">    
        <div id="menu_gauche">
            <?php //Affichage du menu selon si l'on est connecté ou pas
            if (!isset($_SESSION['id']) and !isset($_SESSION['pass'])) // si les variables sont enregistrées dans une session 
                include 'Includes/Menu_Gauche.inc';
            else
                if($_SESSION['modo'] == 1)
                    include 'Includes/Menu_Gauche_Modo.inc';
                else
                    include 'Includes/Menu_Gauche_Connecter.inc';    
            ?>
        </div>    
    </td>
 
    <!-- centre -->
    <td width="500px" valign="top" align="center">    
    <?php
    include ("inc/acces.php");
 
 
echo'texte eplication bla bla bla bla <br> bla bla <br>';
 
 
 
 
 
    if ($login==0)  //je regarde si connecter
        {
            include("inc/erreur.php"); 
        }
        else // si connecter
    {
 
    if(isset($cmdEngager)) //si formulaire valider
        {
            echo'bouton cliquer  ok <br>';
            //donc on attaqqque
            // je recherche les terrains qui son a l'id du joueur et dont l'env et l'env qui y a marque en haut dans raccourci et dont le nb = 0 c a dire que la recolte est prete
            $strReq="select * from terrains where id='$id' and nb=0 and env='$env'";
            $strEnv=mysql_query($strReq);
                        echo'<script>alert(" stok avant = $stocks '.$stocks.'  ");</script>';
            while($tabRes=mysql_fetch_array($strEnv)) //on va se faire tous les terrain  avecc la boucle
 
            if($tabRes['nb']==0) // la c la requette qui regarde le nb dans terrains
            // donc si il  nb est = 0 je continu
 
            {
 
            // maintenant on regarde que la recolte est pleine
            if($tabRes['recolte']!=0)// si la recolte est different de zero donc si  il y a quelque chose  on continu
                {
                    $type=$tabRes['type']; // la je regarde le type
                    $qte=$tabRes['recolte'];// la c la recolte
                    $Replante_id_te=$tabRes['id_te'];// la c la recolte
                    // il faut  recolter et replanter 
                    // pour replanter il faut des bon de commande
                    // donc je dois 1 prendre la recolte et la mettre dans le stock 2regarder si il a la graine et la planter.
                    // si il a pas la graine on replante pas mais on va lui dire si le terrain  est replanter ou pas du moins on va essayer lol
                    // le probleme que je vais rencontedr c que il va  falloir soit garder en memoire  soit trouver une solution pour que chaque recolte se fasse a chaque fois c pas gagner car si je me souviens c le dernier qui est en memeoire
 
                    // bon je tente le coup
                //    echo'<script>alert(" stok avant = $stocks_s '.$stocks_s.'  ");</script>';
                    $qte++;
 
 
                    $tab_s[$type]+=$qte++;
                    $strRes=liste($stocks,$type,$qte);
 
                    // je met la recolte dans le stock
                    mysql_query("UPDATE biens SET stocks='$strRes' WHERE id='$id'") or die('Erreur SQL'.mysql_error());
 
                    // je regarde si il y a la graine
                    $q=mysql_query("SELECT * FROM terrains WHERE id='$id'and id_te='$Replante_id_te'") or die('Erreur SQL !<br>'.mysql_error());
                    $d=mysql_fetch_array($q);
                    $ReplanteType=$d['type'];//donc là j'ai le type de l'espece
                    $Replantesupperficiee=$d['supperficie']; //là j'ai la surface
 
                    // je regarde quel graine il me faut 
                    $qrechercheGraine=mysql_query("SELECT id_pr FROM especes WHERE id='$ReplanteType'") or die('Erreur SQL !<br>'.mysql_error());
                    $drechercheGraine=mysql_fetch_array($qrechercheGraine);
                    $Replanteid_pr=$drechercheGraine['id_pr'];//donc là j'ai le bb qui faut
 
                    // il faut une graine par m²
                    //si  il a assez de graine je continu sinon je dit que le terrain est pas relancer
 
                    // ne pas oublier de prendre l'argent                                      ###############################################
                    if ($tab_s[$Replanteid_pr] >= $Replantesupperficiee)  // si  le nombre de graine est superieur ou egal  a la taille terrain je continue
 
                    {
                    mysql_query("UPDATE terrains SET  nb='$Replantesupperficiee',  av=1, recolte=0, date='$date_m' WHERE id='$id' and id_te='$Replante_id_te'") or die('Erreur SQL'.mysql_error());
                    echo 'terrain numero '.$Replante_id_te.' est mis a jour ';
                    $tab_s[$Replanteid_pr]-=$Replantesupperficiee;
                    $strResCM=liste($stocks,$type,$Replantesupperficiee);
                    //mysql_query("UPDATE biens SET stocks='$strResCM' WHERE id='$id'") or die('Erreur SQL'.mysql_error());
                    }
                    else //sinon  je dit que la relance est pas bonne
                    {
                    mysql_query("UPDATE terrains SET nb=0,av=0, recolte=0  WHERE id='$id' and id_te='$Replante_id_te'") or die('Erreur SQL 140'.mysql_error());
                    echo'le terrain '.$Replante_id_te.' na pas ete replanetr manque de bon de commande';
                    }
 
                }
            }
            else
            echo'y a rien a faire';
 
        }
        else // sinon si  il arrive juste on affiche le formulaire
 
 
        {
            echo'<br><br>Ici vous pouvez relance tous vos terrains  '.$nomressource.' ';
            echo'<form name="frmMission" action="relancer_test.php" method="post"><table><tr><td>Pour relancer tous les terrains  '.$nomressource.' cliques sur le bouton relancer</td><tr>';
            echo'<tr><td align=center><input class="bouton" type="submit" name="cmdEngager" value="Relancer vos terrains"></td></tr></table></form>';                        
 
        }
 
 
 
 
    }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
    ?>
    </td>
 
    <!-- menu droit -->
    <td width="150px" valign="top">
        <form name="frmMenu_Droit">
             <div id="menu_droit">
                <?php //Affichage du menu selon si l'on est connecté ou pas
                if (!isset($_SESSION['id']) and !isset($_SESSION['pass'])) // si les variables sont enregistrées dans une session 
                    include 'Includes/Menu_Droit.inc';
                else
                    include 'Includes/Menu_Droit_connect.inc';    
                ?>              
              </div>
        </form>
    </td>
  </tr>
  <tr>
      <!-- bas de page -->
        <td colspan="3" valign="top" align="center">
        <div id="bas_page">
            <?php include 'Includes/Bas.inc' ?>
        </div>
    </td>
  </tr>
</table>
</body>
</html>
merci pour votre coup de main

fab
blue-fab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2007, 10h24   #2
Membre éclairé
 
Avatar de Linio
 
Inscription : octobre 2005
Messages : 427
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 427
Points : 304
Points : 304
Faut que tu réduises le code qui te pose problème.

J'ai essayé de regarder mais difficile de se plonger sur toute ta page, surtout que tu as du code commenté, etc...

Montre nous exactement où se trouve ton problème, là c'est pas super clair.

Y'a ça moi qui me parait étrange:

Code :
while($tabRes=mysql_fetch_array($strEnv))
Déjà pas de ; (mais c'est un détail ), mais surtout tu écrases les données dans $tableRes à chaque coup, tu es sûr que tu ne veux pas plutôt faire un :

Code :
while($tabRes[]=mysql_fetch_array($strEnv));
Qui te stockera une matrice de tes résultats?
__________________
Linio
Linio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2007, 12h40   #3
Invité de passage
 
Inscription : mai 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 10
Points : 2
Points : 2
bonjour
merci de ta reponse.

donc le probleme est a ce stade

Code :
1
2
3
4
5
6
7
8
 
$qte++;
 
 
$tab_s[$type]+=$qte++;
$strRes=liste($stocks,$type,$qte);
 
mysql_query("UPDATE biens SET stocks='$strRes' WHERE id='$id'") or die('Erreur SQL'.mysql_error());
en fait là

mysql_query("UPDATE biens SET stocks='$strRes' WHERE id='$id'") or die('Erreur SQL'.mysql_error());

il me met bien dans le stock
mais je fait la boucle et il me met pas tout
c'est a dire que si j'ai terrains a recolter il recolte juste un

la table stock est un varchar(255) et dedans c'est stocke comme cela

,100,1000,10,100,25
cela veut dir e que il y a 100 de produit 1 , 1000 du produit 2 ,10 du produit 3 etc.

donc si la mise a jour de la recolte c'est 25 du produit 2

le nouveau stock sera de ,100,1025,10,100,25


et mon probleme
c'est que si je recolte 25 du produit 2 et 36 du produit 4 il me prend juste en compte une mise a jour


du coup j'ai ajouté les ++ ici

$qte++;

$tab_s[$type]+=$qte++;


et la le resultat des fois est bon ,des fois non!



fabien
blue-fab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2007, 13h19   #4
Membre éclairé
 
Avatar de Linio
 
Inscription : octobre 2005
Messages : 427
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 427
Points : 304
Points : 304
Je comprends pas pourquoi tu fais $qte++, tes données sont éronnées si tu fais ça.

Tu dois avoir un soucis dans ta fonction liste si tu veux mon avis.

D'une part tu incrémentes le tableau $tab_s, d'autre part tu ne le réinjecte pas dans ta base, donc c'est forcément faux les résultats que tu obtiens...
__________________
Linio
Linio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2007, 18h08   #5
Invité de passage
 
Inscription : mai 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 10
Points : 2
Points : 2
oui mais c que je sais pas faire cela.
en fait le resulat
$qte
si $qte=55
cela me le met dans la base

par contre si j'ai 2 fois ou 3 fois

$qte=55
puis $qte= 63
puis $qte= 3

je sais pas le faire

car ca me remplis que 1 fois

alors je me suis dit si je mets ++ derriere
ca me changera le nom et peut etre que ca va marcher
lol

je suis apprenti programmeur

si tu peux me dire comment faire pour que ca marche qu'est ce qui manque

merci
fabien
je le recupere mais comme j'ai plusieurs fois
blue-fab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2007, 19h21   #6
Membre éclairé
 
Avatar de Linio
 
Inscription : octobre 2005
Messages : 427
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 427
Points : 304
Points : 304
Ben je sais même pas ce que tu réinjecte dans ta base!
Je veux bien t'aider mais là je peux pas faire grand chose.

Visiblement tu utilises une fonction liste qui recréé la liste que tu voudrais avoir en base, c'est cette fonction qui doit poser problème, montre moi le code.

Un truc que je comprends pas, c'est toi qui a fait le reste du code où tu l'as pompé quelque part?

Parce que si tu as réussi à faire le reste, ça c'est dans la continuité, je vois pas vraiment ce qui te pose problème.

Au delà de ça, du peu que j'en vois, ta conception m'a l'air bancale, une base de donnée sert justement à ne pas avoir à faire des données séparées par des virgules, mais bel et bien de les stocker proprement.

A mon avis certains trucs sont à revoir.
__________________
Linio
Linio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2007, 20h28   #7
Invité de passage
 
Inscription : mai 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 10
Points : 2
Points : 2
le systeme avez etait optimisé pour www.phenix-land.com pour alleger la base un maximum car beaucoup de joueurs (+ 10 000 acharner par jour)et surtout beaucoup de produit.

dans l'exemple aldebarancity il y a dejà plus de 600 especes alors la base on l'aurait tué.
on a été 3 a developper le jeux et cette partie c'est pas moi j'ai pas le niveau.


voici la fonction liste
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
 
 
// Incrémente une variable dans une liste ($liste est la liste, $rang est le rang qu'il faut incrémenter, et $qte la quantité à incrémenter)
function liste($liste,$rang,$qte) {
	$tab=explode(',',$liste);
	$imax=sizeof($tab);
	if ($imax<$rang) { $imax=$rang; } 
	for ($i=1; $i<=$imax; $i++) { 
		if ($i==$rang) { $nb=($tab[$i]+$qte); $var.=",".$nb; }
		elseif ($i<$imax) { $var.=",".abs($tab[$i]); }	
	}
	return $var;
}
 
//************************************************************************************
function liste_ajout($liste,$rang) 
{
	$tab=explode(',',$liste);
	$imax=sizeof($tab);
 
	if($imax<$rang)
		$imax = $rang;
 
	//$imax = 250;
	$var = "";
 
	for ($i=1; $i<=$imax; $i++) 
	{ 
		$var.=",".abs($tab[$i]); 
	}
 
	return $var;	
}
blue-fab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 09h26   #8
Membre éclairé
 
Avatar de Linio
 
Inscription : octobre 2005
Messages : 427
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 427
Points : 304
Points : 304
Si tu n'as pas le niveau pourquoi le faire?

Bon soyons clair, et je dis ça avec toute la gentillesse que je peux: Votre code est totalement foireux.

On ne peut selon moi en aucun cas optimiser une BDD en fusionnant toutes les données sur une seule colonne avec des virgules (suis pas un expert mais bon), d'autre part ta fonction liste pourrait être optimisée pour faire 2 fois moins de traitement, je veux dire pour incrémenter un tableau faut quand même m'expliquer pourquoi vous parcourez tout le tableau alors qu'un simple:

ferait l'affaire en reconstruisant ensuite la liste...

Il faut que tu revois ta fonction liste et que tu inclus ton $tab_s au lieu de le recalculer, c'est programmer bizarremment.

Au delà de ça, et là encore c'est pas méchant, mais les notions utilisées dans les pages/fonctions que tu affiches sont plutôt simples, donc si tu n'as pas le niveau pour ça, au final quel est ton niveau en PHP?
Parce que je veux bien aider, mais parler à un mur bof
__________________
Linio
Linio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2007, 10h29   #9
Invité de passage
 
Inscription : mai 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 10
Points : 2
Points : 2
desole det'avoir fait perdre ton temps.
j'etais juste venu demander de l'aide, je pensais que c'etait le but de ce forum.
blue-fab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2007, 00h07   #10
Membre éclairé
 
Avatar de Linio
 
Inscription : octobre 2005
Messages : 427
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 427
Points : 304
Points : 304
Non mais je veux bien aider, mais bon faire la conception d'un site, j'en ai déjà un au boulot et un second à la maison, donc bon... tu comprendras que...

Faut pas se jeter tête baissée dans un site à grand coup de BDD, faut essayer de poser un peu ses bases, sinon ça devient difficile à débugger (la preuve).

Je pense qu'il faut que tu simplifies ta fonction liste qui reconstruit ta liste.

Comme je t'ai expliqué dans mon précédent post, il est inutile de reparcourir tout ton tableau en vérifiant si ton indice est égal à celui que tu aimerais avoir, il suffit de modifier ton tableau à l'indice voulu, et ensuite de reconstruire ton tableau avec les , en utilisant un while (comme ta méthode mais sans tous les ifs du coup).
__________________
Linio
Linio 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 00h32.


 
 
 
 
Partenaires

Hébergement Web