JeuWeb - Crée ton jeu par navigateur
[REGLE] Achat et suppression dans la bdd - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [REGLE] Achat et suppression dans la bdd (/showthread.php?tid=516)

Pages : 1 2 3


RE: Achat et suppression dans la bdd - barst - 11-12-2006

Je viens de comprendre où se situe ton problème.
Pour gérer le nombre d'article tu as mis une liste déroulante à chaque ligne.
Mais cette liste déroulante porte toujours le même nom/id "nbr"

Tu dois donc changer la valuer de cet id pour qu'il soit dynamique et que chaque ligne ait un id différent

Code PHP :
<?php 
// Tu débutes ensuite ta boucle !
$i=0;
while (
$donnees = mysql_fetch_array ($ress))
{
$nom_res = $donnees['objet'];
$prix_res = $donnees['prix'];
$quantite_res = $donnees['quantite'];
$id_denre = $donnees['id_commerce'] ;

// -------tableau affichant toute les entrées -----------
echo '
<tr>
<td width="107">'
.$nom_res.'</td>
<td width="181">'
.$quantite_res.'</td>
<td width="132">'
.$prix_res.'</td>
<td width="10">'
;

$nombre = 0;
echo
'<input type="hidden" name="id_'.$i.'" value="'.$id_denre.'" />';
echo
'<select name="nbr_'.$i.'">';
while (
$nombre <= $quantite_res)
{
echo
'<option value="fr">'.$nombre.'</option>';
$nombre++;
}
echo
'<input type="Submit" value="Ok"></select></td></tr>';
$i++;
}

//-- fin du If--------------

echo '</table><br /><br /><input type="submit" value="Achat">';
echo
'<input type="hidden" name="nbr_total" id="nbr_total" value="'.$i.'" />';

Ensuite pour chercher quoi décompter lors des achats, tu récupères la valeur du nombre total de ligne :
Code PHP :
<?php 
$nbr_total
= $_POST['nbr_total'];
Et tu boucles dessus pour trouver quoi acheter

Code PHP :
<?php 
for($i=0;$i<$nbr_total,$i++)
{
$nbr=$_POST['nbr_'.$i];
$id=$_POST['id_'.$i];
//tu as donc le nombre d'article par ligne
}

Par contre, juste pour info, j'ai vu que tu avais le même problème avec l'id_denrée.
J'ai donc pris la peine de changer cela en "id_<numéro de ligne>" comme avec la quantitée


RE: Achat et suppression dans la bdd - Archange - 11-12-2006

Deja merci de t'etre penché sur mon probleme

DOnc si je comprend bien voila se que je doit avoir

Code PHP :
<?php 
// POST
echo '<form action="marche.php" method="post">';

// Tu affiches ici que l'entête de ta table !
echo '
<table width="580" height="42" border="1">
<tr>
<td>Nom</td>
<td>Quantité</td>
<td>Prix</td>
<td>Choix</td>
</tr>
'
;

// données effacées...
if (isset($_POST['resse']))
{
mysql_query ("DELETE FROM commerce WHERE id_commerce = '".$_POST['nbr_total']."'");

}

$ress = mysql_query ('SELECT * FROM commerce');
// ----------------- boucle pr afficher toute les entrée de la table commerce ---------


// Tu débutes ensuite ta boucle !
$i=0;
while (
$donnees = mysql_fetch_array ($ress))
{
$nom_res = $donnees['objet'];
$prix_res = $donnees['prix'];
$quantite_res = $donnees['quantite'];
$id_denre = $donnees['id_commerce'] ;

// -------tableau affichant toute les entrées -----------
echo '
<tr>
<td width="107">'
.$nom_res.'</td>
<td width="181">'
.$quantite_res.'</td>
<td width="132">'
.$prix_res.'</td>
<td width="10">'
;

$nombre = 0;
echo
'<input type="hidden" name="id_'.$i.'" value="'.$id_denre.'" />';
echo
'<select name="nbr_'.$i.'">';
while (
$nombre <= $quantite_res)
{
echo
'<option value="fr">'.$nombre.'</option>';
$nombre++;
}
echo
'<input type="Submit" value="Ok"></select></td></tr>';
$i++;
}

//-- fin du If--------------

echo '</table><br /><br /><input type="submit" value="Achat">';
echo
'<input type="hidden" name="nbr_total" id="nbr_total" value="'.$i.'" />';

//-- fin du If--------------
$nbr_total = $_POST['nbr_total'];
for(
$i=0;$i<$nbr_total,$i++)
{
$nbr=$_POST['nbr_'.$i];
$id=$_POST['id_'.$i];
//tu as donc le nombre d'article par ligne
}
mysql_close();

?>

Si oui je rencontre une erreur

Code :
Parse error: syntax error, unexpected ')', expecting ';'
au niveau de

Code PHP :
<?php 
for($i=0;$i<$nbr_total,$i++)



RE: Achat et suppression dans la bdd - Maegia - 12-12-2006

Un petit effort Archange, si tu n'es pas capable de répertorier ce genre de petite erreur, tu vas avoir besoin de notre aide plus souvent qu'autrement ! Allez, je te laisse trouver avec un petit indice :

Citation :for($i=0;$i<$nbr_total,$i++)

Et :

Citation :Parse error: syntax error, unexpected ')', expecting ';'



RE: Achat et suppression dans la bdd - barst - 12-12-2006

Maegia t'a bien aiguillé pour trouver la faute de frappe Wink

Sinon tu as bien intégré la boucle dans ton code mais pas la récupération des données.

Tu as placé ce bloc à la fin de ton script
Code PHP :
<?php 
$nbr_total
= $_POST['nbr_total'];
for(
$i=0;$i<$nbr_total,$i++)
{
$nbr=$_POST['nbr_'.$i];
$id=$_POST['id_'.$i];
//tu as donc le nombre d'article par ligne
}

Or il faut le mettre dans le fichier "marche.php" qui reçoit ton formulaire.
Ce bloc va d'abord récupérer le nombre total de ligne dans le tableau du formulaire d'achat.
En parcourant chaque ligne, tu récupères l'id de l'article et la quantitée souhaitée.
Si la quantitée est supèrieure à 0 alors il y a une demande d'achat pour cette article dont tu as l'id et la quantitée voulue.
Donc tu devras décompter le compte de l'acheteur et lui attribuer les objets achetés dans son inventaire.


Juste au passage, je ne sais pas ce que fait cette partie qui me semble bizarre.....
Code PHP :
<?php 
if (isset($_POST['resse']))
{
mysql_query ("DELETE FROM commerce WHERE id_commerce = '".$_POST['nbr_total']."'");

}



RE: Achat et suppression dans la bdd - Archange - 12-12-2006

Maegia a écrit :Un petit effort Archange, si tu n'es pas capable de répertorier ce genre de petite erreur, tu vas avoir besoin de notre aide plus souvent qu'autrement ! Allez, je te laisse trouver avec un petit indice :

@Maegia Merci, oué dsl d'habitude sur les erreurs de ce type j'ai pas de probleme , mais hier j'etais mort .

@Barst Merci aussi, enfaite il n'ya pas d'envoi vers une autre page tous le code se situe sur la meme page donc ici ,marche.php .Donc
Code PHP :
<?php 
if (isset($_POST['resse']))
{
mysql_query ("DELETE FROM commerce WHERE id_commerce = '".$_POST['nbr_total']."'");

}
Sert enfaite, lorsque le forumlaire envoie les données vers marche.php ( donc la meme page, elle ne fait que sa reactulisé ) et SI la variable
$_POST['resse'] existe ( erreur de ma part au passage sa devrai etre $_POST['nbr_total'] je crois) et bien on supprime l'entré ou a été cliquer OK .

C'est sur cette partie que tu as cité ( la suppression ) que je ne suis pas sur enfaite .


RE: Achat et suppression dans la bdd - barst - 12-12-2006

OK je comprends un peu mieux.

Voilà ce qu'il faut mettre en début de ton script mais pas à la fin sinon la réactualisation ne se verra pas lors de l'affichage
Code PHP :
<?php 
if (isset($_POST['nbr_total']))
{
$nbr_total = $_POST['nbr_total'];
for(
$i=0;$i<$nbr_total,$i++)
{
$nbr=$_POST['nbr_'.$i];
$id=$_POST['id_'.$i];
if(
0<$nbr) mysql_query ("update commerce set quantite=quantite-".$nbr." WHERE id_commerce = '".$id."'");
}
}



RE: Achat et suppression dans la bdd - Archange - 12-12-2006

Merci mais bizarement sa ne fonctionne pas,
Voila se que sa donne enfaite
Code PHP :
<?php 
// POST
echo '<form action="marche.php" method="post">';

// Tu affiches ici que l'entête de ta table !
echo '
<table width="580" height="42" border="1">
<tr>
<td>Nom</td>
<td>Quantité</td>
<td>Prix</td>
<td>Choix</td>
</tr>
'
;
if (isset(
$_POST['nbr_total']))
{
$nbr_total = $_POST['nbr_total'];
for(
$i=0;$i<$nbr_tota;$i++)
{
$nbr=$_POST['nbr_'.$i];
$id=$_POST['id_'.$i];
if(
0<$nbr) mysql_query ("update commerce set quantite=quantite-".$nbr." WHERE id_commerce = '".$id."'");
}
}

// données effacées...
$ress = mysql_query ('SELECT * FROM commerce');
// ----------------- boucle pr afficher toute les entrée de la table commerce ---------

// Tu débutes ensuite ta boucle !
$i=0;
while (
$donnees = mysql_fetch_array ($ress))
{
$nom_res = $donnees['objet'];
$prix_res = $donnees['prix'];
$quantite_res = $donnees['quantite'];
$id_denre = $donnees['id_commerce'] ;

// -------tableau affichant toute les entrées -----------
echo '
<tr>
<td width="107">'
.$nom_res.'</td>
<td width="181">'
.$quantite_res.'</td>
<td width="132">'
.$prix_res.'</td>
<td width="10">'
;

$nombre = 0;
echo
'<input type="hidden" name="id_'.$i.'" value="'.$id_denre.'" />';
echo
'<select name="nbr_'.$i.'">';
while (
$nombre <= $quantite_res)
{
echo
'<option value="fr">'.$nombre.'</option>';
$nombre++;
}
echo
'<input type="Submit" value="Ok"></select></td></tr>';
$i++;

}

//-- fin du If--------------

echo '</table><br /><br /><input type="submit" value="Achat">';
echo
'<input type="hidden" name="nbr_total" id="nbr_total" value="'.$i.'" />';
mysql_close();

?>

J'ai essayer de remplacer la requete d'UPDATE par ma requete de DELETE mais tjrs pas non plus, je ne vois trop d'ou sa vient. Jspr pas avoir mal interpreté ce que tu ma expliquer .


RE: Achat et suppression dans la bdd - barst - 12-12-2006

Quel est le problème ?
Les quantités ne sont pas diminués ou autre chose ?

Est-ce que tu as une page de test que l'on pourraot voir ?


RE: Achat et suppression dans la bdd - Archange - 12-12-2006

Oui le probleme est que avec l'une ou l'autre requetes les quantité ne bouge pas ou ne sont pas supprimé

Oué la page est ici
http://space.of.light.free.fr

login: testjeu
pass: testjeu

Puis "Allez au marché"


RE: Achat et suppression dans la bdd - barst - 12-12-2006

Je vois pas....

Rajoute des traces pour voir
Code PHP :
<?php 
echo "ID=$id | NBR=$nbr <br>";
if(
0<$nbr)
{
mysql_query ("update commerce set quantite=quantite-".$nbr." WHERE id_commerce = '".$id."'");
echo
"update commerce set quantite=quantite-".$nbr." WHERE id_commerce = '".$id."' <br>";
}

Si nbr est toujours à 0, tu ne rentreras jamais dans ta requête.
Si tu rentres dans la requête alors elle sera tracée.
Copie-colle la requête et joue-là sous phpmyadmin pour voir ce qu'il sort comme erreur.


Sinon je viens de trouver une faute de frappe en espérant que c'est pas ça....
Citation :for($i=0;$i<$nbr_total;$i++)
{
$nbr=$_POST['nbr_'.$i];
$id=$_POST['id_'.$i];
if(0<$nbr) mysql_query ("update commerce set quantite=quantite-".$nbr." WHERE id_commerce = '".$id."'");
}