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


[REGLE] Achat et suppression dans la bdd - Archange - 06-12-2006

Bonsoir tous le monde,

Je me suis penché sur un script affichant toutes les entrées de la table ici commercer et j'y est ajouter un bouton acheter qui devrait seulement supprimer l'entrée de la ligne ou le bouton est mis mais en cliquant dessus, premierement la page ne se met pas à jours et deuxiemement, sa me supprime non pas une mais toute les entrées, je croi comprendre pourquoi, mais je ne vois pas trop comment,
Je vous met le code qui devré effectuer ceci,

Code PHP :
<?php 
//---- Tableau Nom prix quantité ( entete )
echo ' <table width="442" height="42" border="1">
<tr>
<td>Nom</td>
<td>Quantit&eacute; </td>
<td>Prix</td>
</tr>
</table>'
;
// fin entete tableau //

// ----------------- boucle pr afficher toute les entrée de la table commerce ---------
$ress = mysql_query ("SELECT * FROM commerce");
while (
$donnees = mysql_fetch_array ($ress) )
{
$nom_res = $donnees['objet'];
$prix_res = $donnees['prix'];
$quantite_res = $donnees['quantite'];
// -------tableau affichant toute les entrées -----------
echo '
<table width="580" height="42" border="1">
<tr>
<td width="107">'
.$nom_res.'</td>
<td width="181">'
.$quantite_res.'</td>
<td width="132">'
.$prix_res.'</td>
<td width="132"><input name="achat" type="submit" value="Acheter" /></td>
</tr>
</table>
'
;
//-------- fin tableau -----------
//------------- permet SI la on clique sur acheter de supprimer l'entrée de la table commerce -----------------
if ( $_POST['commerce'] = true )
{
mysql_query ("DELETE FROM commerce WHERE objet='$nom_res'");
}
}
//-- fin du If et boucle --------------

mysql_close();
?>

Je n'est pas mis tout le code car le reste sert à effectuer la vente de ses ressources

Merci si vous voyer d'ou sa pourait venir


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

C'est sûr que ça va effacer toutes tes entrées, tu lui dis : Efface toutes les lignes où le nom de la ressource = le nom de la ressource. Tu dois plutôt avoir un id associé à chacune des entrées, non ? Procède à ton delete en fonction de cet id, unique à chaque ligne. Donc, dans va valeur $_POST['commerce'], récupère le id plutôt que de simplement vérifier si elle est TRUE, et tu ne devrais pas avoir d'erreur. Ton bouton achat, modifies-le comme suit :

Code PHP :
<?php 
<input name="'.$donnees['id'].'" type="submit" value="Acheter" />

Et ta requête, comme suit :

Code PHP :
<?php 
mysql_query
('DELETE FROM commerce WHERE id = "'.$_POST['commerce'].'"');

Le nom du bouton devient donc fonction de l'id de ton objet. Cela dit, tu pourrais aussi simplement opter pour un petit radio button à chacune de tes lignes, puis un bouton Achat au bas de ta page, ce qui te permetterai de n'avoir qu'une seule valeur post à tester. Enfin, j'ignore si je suis clair ou non... Si t'as des questions, vas-y ! :-)


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

Merci pour ton aide, je vien de voir une erreur aussi dans mon code,

La valeur $_POST['commerce'] n'est envoyer par rien enfaite c'est la variable $_POST['achat'] qui est renvoyer par
Code PHP :
<?php 
<input name="achat" type="submit" value="Acheter" />

je suis entrain de faire les modifs, juste pour savoir $donnees['id'] est l'id de ma table commerce donc enfaite id_commerce ( ce nome comme ceci dans ma table ) ?

Edit

Voila a ce que j'en suis arrivé

[php]
// ----------------- boucle pr afficher toute les entrée


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

Bon donc apres quelque correction par ci par la, je suis enfin arrivé ce que je voulais, mais le gros bémol mnt et que la suppression ne se fait pas apres que
Code PHP :
<?php 
<form action="marche.php" method="post"><input name="'.$donnees['id_commerce'].'" type="submit" value="Acheter" /></form>
est etait effectuer, la page se réactualise grace a <form action="marche.php" method="post"> mais la suppression n'est alors pas afficher ( pourtant effectuer dans la bdd j'ai verifier, il faut donc que je reactualise une nouvellle fois soit manuellement soit en recliquant sur acheter pr voir la modification effectuer,

voici le bout du code

Code PHP :
<?php 
// ----------------- boucle pr afficher toute les entrée de la table commerce ---------
$ress = mysql_query ("SELECT * FROM commerce");
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 '
<table width="580" height="42" border="1">
<tr>
<td width="107">'
.$nom_res.'</td>
<td width="181">'
.$quantite_res.'</td>
<td width="132">'
.$prix_res.'</td>
<td width="132"><form action="marche.php" method="post"><input name="'
.$donnees['id_commerce'].'" type="submit" value="Acheter" /></form>
</td>
</tr>
</table>
'
;

//-------- fin tableau -----------
//------------- permet SI la on clique sur acheter de supprimer l'entrée de la table commerce -----------------
if (isset($_POST[$donnees['id_commerce']]))
{
mysql_query ('DELETE FROM commerce WHERE id_commerce = "'.$id_denre.'"');
}

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

mysql_close();
?>

Merci


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

Simplement que tu effaces ta ligne après l'affichage... Pour éviter d'avoir à réactualiser, tu n'as qu'à effectuer ta requête DELETE avant d'aller chercher tes données dans la table. Et dans ton exemple, tu recommence un nouveau champ POST à chaque boucle effectuée dans ton while. Ne suffierait-il pas de le déclarer qu'une seule fois, à l'extérieur de ta boucle ? Mettre des radio button règlerait la majeure partie du problème...

Ton code, en bref, deviendrait donc :

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

// Tu affiches ici que l'entête de ta table !
echo '
    <table>
        <tr>
            <td></td>
            <td>Nom</td>
            <td>Quantité</td>
            <td>Prix</td>
        </tr>
    '
;

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

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

// Tu débutes ensuite ta boucle !
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="1"><input type="radio" name="ress" value="'
.$donnees['id_commerce'].'"></td>
                <td width="107">'
.$nom_res.'</td>
                <td width="181">'
.$quantite_res.'</td>
                <td width="132">'
.$prix_res.'</td>
            </tr>
    '
;
}
//-- fin du If--------------

echo '</table><br /><br /><input type="submit" value="Achat">';

mysql_close();

Maintenant, si tu tiens à garder un bouton pour chaque achat, c'est toujours faisable bien sûr, tu n'as alors qu'à vérifier AVANT d'afficher si la donnée que tu t'apprêtais à afficher si elle doit être effacée ou non et, si elle doit être effacer, ne pas l'afficher, simplement. Quoi que beaucoup plus lourd...


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

Merci Maegia pour ton aide je vais changer par ta correction, sinon pour l'idée des boutons radio, j'y est reflechi le pb est que cela permettrais à des joueurs riche d'acheter toutes les ressources pas cher rapidement et de ne pas laissez le temps au autre et vice versa , sinon merci pour l'idée de ces bouton j"y avais pas pensé jvé surment l'utilisé pour autre chose merci


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

Je ne parle pas de checkbox, mais bien de radio button. En quoi est-ce qu'il serait plus rapide d'acheter à l'aide de radio button qu'à l'aide d'un bouton par champ, sachant que tout joueur ne peut, pour un même radio button, ne sélectionner qu'une option ?

Sinon, he bien, ça fait plaisir ! Wink


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

J'ai confondu les deux :pleure2: sinon je vais voir comment sa rend avec ou sans ces radio boutons
merci


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

Bon j'ai essayer les bouton radio merci , mais enfaite le pb est que je dois choisir un chiffre avant d'acheter donc aps trop evident sinon je rencontre un autre probleme, lorsque je souhaite acheter et bien sa n'achete pas la valeur voulu mai une autre en particulier la derniere de la liste, et je ne comprend vraiment pas pourquoi je trouve sa bizar,

Je vous met le code pour que vous voyez de vous meme

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['resse'].'"');
}

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


// Tu débutes ensuite ta boucle !
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
'<select name="nbr">';
while (
$nombre <= $quantite_res)
{
echo
'<option value="fr">'.$nombre.'</option>';
$nombre++;
}
echo
'<INPUT TYPE="hidden" name="resse" VALUE="'.$id_denre.'"><input type="Submit" value="Ok"></select></td></tr>';

}

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

echo '</table><br /><br /><input type="submit" value="Achat">';

mysql_close();

?>

Il ya du code encore au dessus mais ce n'est pas pr effectuer la suppression si ya besoin au cas ou dit le moi

Merci


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

Personne n'a d'idée ?