message aléatoire ajotant une somme a un nombre

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : message aléatoire ajotant une somme a un nombre

Re: message aléatoire ajotant une somme a un nombre

par bly » 24 août 2010, 19:57

c'est bon j'ai réussi

Code : Tout sélectionner

<?php try{ $bdd = new PDO('mysql:host=localhost;dbname=jeux', '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( 1 => 'message 1', 2 => 'message 2', 3 => 'message 3', 4 => 'message 4' ); $cle = array_rand($quotes); $stmt = $bdd->prepare("UPDATE jeux_perso SET nbrclick = nbrclick + :nbr WHERE nomButton = 'Envoyer'"); $stmt->bindValue('nbr', $cle, PDO::PARAM_INT); $stmt->execute(); $msg = '<p>'.$quotes[$cle].'</p>'; } $reponse = $bdd->query('SELECT nomButton, nbrclick , nbrpoint FROM jeux_perso'); while($data = $reponse->fetch(PDO::FETCH_ASSOC)) { echo ' nombre de clics : ' . $data['nbrclick'] . '<br />'; echo ' nombre de point : ' . $data['nbrpoint'] . '<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; $bdd->exec("UPDATE jeux_perso SET nbrpoint = nbrpoint + 1 WHERE nbrclick >= 10"); ?>

Re: message aléatoire ajotant une somme a un nombre

par dunbar » 23 août 2010, 23:38

Salut,

Pour le message aléatoire moi je ferais comme ceci
$quotes = array('message 1' => '1',
                   'message 2' => '2',
                   'message 3' => '3',
                   'message 4' => '4',
                   'message 5' => '5');



   $randomquote = array_rand($quotes, 1);

   echo '<p>' . $randomquote . '</p>';

Re: message aléatoire ajotant une somme a un nombre

par bly » 21 août 2010, 18:31

je doit pas le placer après
echo '<p>experience:</p>';
$_SESSION['experience'] = 00;

echo $_SESSION['experience'];

Re: message aléatoire ajotant une somme a un nombre

par xTG » 21 août 2010, 16:46

Alors là franchement j'abandonne...
A la vue de ta question tu serais bien incapable d'expliquer à quoi sert le code que je t'ai passé alors que je l'explique moi même dans mon message !

Re: message aléatoire ajotant une somme a un nombre

par bly » 21 août 2010, 16:40

ou dois-je le placer ?? car je j'ai essayer de le mettre dans plusieur endroits mais cela ne marche pas

Re: message aléatoire ajotant une somme a un nombre

par xTG » 21 août 2010, 16:28

C'est normal, quand tu recharges la page tu réassignes 00 dans la variable. Mets un affichage au moment où il ajoute 10 et tu verras que l'affichage se fait bien.
L'initialisation ne doit se faire qu'une seule fois, quand la variable n'existe pas.

On opère ainsi :
if( !isSet($_SESSION['ma_var']) )// La variable n'existe pas
  $_SESSION['ma_var'] = "valeur d'initialisation"; // On l'initialise
Comme les variables de session se gardent d'une page à une autre du moment que la session n'est pas terminée cette initialisation ne se lance qu'une seule fois.

Re: message aléatoire ajotant une somme a un nombre

par bly » 21 août 2010, 15:54

a oui ok par contre la sa change pas le nombre de l'experience quand " message 1" s'affiche , l'experience reste a 0

Re: message aléatoire ajotant une somme a un nombre

par xTG » 21 août 2010, 15:38

if (!empty($_POST['envoyer']))
{
   $quotes[] = "message 1";
   $quotes[] = "message 2";
   $quotes[] = "message 3";
   $quotes[] = " message 4";
   srand ((double) microtime() * 1000000);
   $randomquote = rand(0,count($quotes)-1);  

   echo "<p>" . $quotes[$randomquote] . "</p>";
   if( $quotes[$randomquote] == "message 1" )
    $_SESSION['experience'] += 10;
  if( $_SESSION['experience'] == 60 )
  {
 
  }
 
}

Re: message aléatoire ajotant une somme a un nombre

par bly » 21 août 2010, 15:21

a ok mais je fais comment alors car la je vois pas

Re: message aléatoire ajotant une somme a un nombre

par xTG » 21 août 2010, 15:07

Tu n'as semble-t-il pas compris.
Tu n'as modification de ces attributs que si le formulaire a été posté.
Donc pourquoi toujours vérifier alors qu'il serait mieux de le mettre en même temps que la vérification du formulaire.

Re: message aléatoire ajotant une somme a un nombre

par bly » 21 août 2010, 14:26

ba enfaite j'ai fais comme sa pour qu'en appuyant sur le bouton envoyer un message aléatoire s'affiche sinon je vois pas comment faire .

Re: message aléatoire ajotant une somme a un nombre

par xTG » 21 août 2010, 13:45

Si $_POST['envoyer'] n'existe pas, tes variables ne sont pas crées donc le message d'erreur apparaît.
Quel est l'intérêt de faire le calcul si le formulaire n'est pas posté ?

PS : tu as oublié le session_start()

Re: message aléatoire ajotant une somme a un nombre

par bly » 21 août 2010, 13:31

j'ai modifié en mettant des session ce qui me donne cela:
<?php
 echo '<p>vie:</p>';
$_SESSION['vie'] = 25;
echo $_SESSION['vie'];
echo '<p>experience:</p>';
$_SESSION['experience'] = 00;
echo $_SESSION['experience'];
echo '<p>attaque:</p>';
echo '<p>min:</p>';
$_SESSION['min'] = 5;
echo $_SESSION['min'];
echo '<p>max:</p>';
$_SESSION['max'] = 7;
echo $_SESSION['max'];
?>



<form action="index.php" method="post">
        <p>
        <input type="submit" name="envoyer" value="Envoyer" />
        </p>
</form>

 
<?php  
if (!empty($_POST['envoyer']))
{
   $quotes[] = "message 1"; 
   $quotes[] = "message 2"; 
   $quotes[] = "message 3"; 
   $quotes[] = " message 4";
   srand ((double) microtime() * 1000000); 
   $randomquote = rand(0,count($quotes)-1);  

   echo "<p>" . $quotes[$randomquote] . "</p>";
   
 
}

if( $quotes[$randomquote] == "message 1" )
  $_SESSION['experience'] += 10;
if( $_SESSION['experience'] == 60 )
{
  
}



?>
par contre il me marque 2 erreurs:
Notice: Undefined variable: randomquote in C:\wamp\www\index.php on line 41

Notice: Undefined variable: quotes in C:\wamp\www\index.php on line 41

Re: message aléatoire ajotant une somme a un nombre

par xTG » 21 août 2010, 12:42

Tu as "Message 1" au lieu de "message 1".

Ensuite si tu souhaites garder les informations d'une page à une autre tu devrais passer par les sessions :
http://phpdebutant.org/article69.php

Re: message aléatoire ajotant une somme a un nombre

par bly » 21 août 2010, 12:21

j'ai modifier mon code ce qui me donne sa :
<?php
$a1 = array('vie' => 25);
   
                
foreach($a1 as $cle => $element)
{
    echo $cle;

    if( !is_array( $element ))
    {
        echo '  :  '. $element . '<br />'; 
    }
    
}

$a2 = array('experience' => 00);
   
                
foreach($a2 as $cle => $element)
{
    echo $cle;

    if( !is_array( $element ))
    {
        echo '  :  '. $element . '<br />'; 
    }
    
}
$a3 = array('attaque'=>array('min'=>5,'max'=>7));

 foreach($a3 as $cle => $element)
{
    echo $cle;

    if( !is_array( $element ))
    {
        echo ' : ' . $element . '<br />';  
    }
    else
    {
        foreach( $element as $a => $b )
        {
            echo '<br />'.$a . ' : ' . $b . '<br />';
        }
    }
}


?>


<form action="index.php" method="post">
        <p>
        <input type="submit" name="envoyer" value="Envoyer" />
	</p>
</form>

 
<?php  
if (!empty($_POST['envoyer']))
{
   $quotes[] = "message 1"; 
   $quotes[] = "message 2"; 
   $quotes[] = "message 3"; 
   $quotes[] = " message 4";
   srand ((double) microtime() * 1000000); 
   $randomquote = rand(0,count($quotes)-1);  

   echo "<p>" . $quotes[$randomquote] . "</p>";
   
 
}

if( $quotes[$randomquote] == "Message 1" )
  $a2['experience'] += 10;
if( $a2['experience'] == 60 )
{
  
}



?>
j'ai plus de message d'erreur par contre quand j'appuie sur envoyer et que le message aléatoire "message 1" apparait , cela ne rajoute pas +10 au au nombre 00 de l'experience