PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 26-08-2010 17:09:36

bly
Membre
Inscription : 21-08-2010
Messages : 15

enregistrer des donnée

bonjours j'ai fait ce code qui ajoute des point par rapoort au message aléatoire
j'ai créer donc une nouvelle ligne au tableau avec point et donc chaque membre a ces point par contre le code ne fonctionne pas cela ne rajoute aucune valeur , la valeur de point reste a 0

<?php
try{
  $bdd = new PDO('mysql:host=localhost;dbname=site', 'root', '');
}
catch (Exception $e){
  die('Erreur : ' . $e->getMessage());
}

if(isset($_POST['Envoyer'])){
  // ici les clés sont le nombre de points a incrémenter (1 point pour le message 1, 3 points pour le message 2...)
  $quotes = array(
      0 => 'dommage tu as rien gagner',
    1 => 'bravo tu as gagner 1 point',
    3 => 'bravo tu as gagner 2 point',
    4 => 'bravo tu as gagner 3 point',
    6 => 'bravo tu as gagner 6 point'
  );
  $cle = array_rand($quotes);
  $stmt = $bdd->prepare("UPDATE membres SET point = point + :nbr WHERE nomButton = 'Envoyer'");
  $stmt->bindValue('nbr', $cle, PDO::PARAM_INT);
  $stmt->execute();
  $msg = '<p>'.$quotes[$cle].'</p>';
}

$reponse = $bdd->query('SELECT nomButton, point FROM membres');

while($data = $reponse->fetch(PDO::FETCH_ASSOC)) {
  echo 'Nom du bouton : ' . $data['nomButton'] . ' - nombre de points : ' . $data['point'] . '<br />';
}
 
echo '<form method="post" action="">
<fieldset><legend>Bouton envoyer</legend>
<input type="submit" name="Envoyer" value="Envoyer" />
</form></fieldset></form>'
;

if(isset($msg))
  echo $msg;


?>

Hors ligne

#2 26-08-2010 17:18:58

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : enregistrer des donnée

Déjà pourquoi utiliser une requête préparée ?

Ensuite n'as-tu qu'un seul membre ? Car avec la condition du WHERE tu modifies tous les enregistrements selon comment ta table est faite.
Pourquoi ne pas faire une condition sur l'id du membre ?

Dernière modification par xTG (26-08-2010 17:22:03)

Hors ligne

#3 26-08-2010 17:21:44

bly
Membre
Inscription : 21-08-2010
Messages : 15

Re : enregistrer des donnée

ba elle fonctionne très bien quand je fait un tableau avec point et nombutton mais quand je veux que cela se fasse par membre sa marche pas mais bon je pense qu'il y a pas grand chose a modifier pour que cela fonctionne

Hors ligne

#4 26-08-2010 17:23:48

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : enregistrer des donnée

Le fait qu'elle fonctionne ne démontre rien...
Tout simplement qu'une requête préparée n'est pas faite pour ce genre d'action !

N'as-tu qu'un seul membre dans ta table ?

Hors ligne

#5 26-08-2010 17:27:41

bly
Membre
Inscription : 21-08-2010
Messages : 15

Re : enregistrer des donnée

nan c'est une table teste j'en n'ai fais justement plusieurs

Hors ligne

#6 26-08-2010 17:33:53

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : enregistrer des donnée

Si tu as justement plusieurs membres ta requête SELECT va récupérer les informations du premier, puis lors de l'envoi tu vas modifier les points de tous tes membres.

Utilises une requête non préparée déjà :

$bdd->query("UPDATE membres SET point = 'point + ".$cle."' WHERE nomButton = 'Envoyer'");

Quelle est la forme de ta table membres ?

Hors ligne

#7 26-08-2010 17:42:00

bly
Membre
Inscription : 21-08-2010
Messages : 15

Re : enregistrer des donnée

ba chaque membre a son id , son speudo , son email et ses points

Hors ligne

#8 26-08-2010 20:00:19

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : enregistrer des donnée

Et nomButton il vient faire quoi dans l'affaire ? Car c'est un champ de ta table membres.

(Je ne suivrai pas la suite de ce topic, plus d'internet pour un temps indéterminé)

Dernière modification par xTG (26-08-2010 20:00:45)

Hors ligne

#9 26-08-2010 20:21:39

bly
Membre
Inscription : 21-08-2010
Messages : 15

Re : enregistrer des donnée

c'est pour que se bouton se rapporte au message aélatoire

Hors ligne

Pied de page des forums