Ticket à gratter ça cloche !

Bonjour,

Je cherche à mettre en place des tickets à gratter sur mon site. Seul hic mon script cloche. Aucun ticket ne s'affiche.

Script que voici :

$sql= mysql_query("SELECT ticketair FROM tickets WHERE ticketair=$tickerair AND gain='$gain'");

function hasard(){
$rand = mt_rand(0,5);
{
if ($rand=0) {
echo
$gain = '<embed>ticket 0</embed>';
}
if($rand=1) {
echo
$gain = 'ticket 1';
}
if($rand=2) {
echo
$gain = 'ticket 2';
}
if($rand=3) {
echo
$gain = 'ticket 3';
}
if($rand=4) {
echo
$gain = 'ticket 4';
}
return $gain;
}
}
?>

<?php echo $gain; ?>


Pourriez-vous m'éclairer sur le sujet ? Merci à vous, Amicalement, Yann.

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Salut,

    ticketair=$tickerair
    Si $ticketair n'est pas un nombre alors il faut l'entourer d'apostrophes ou de guillemets.

    if ($rand=0) {
    Vaudra toujours vrai. $rand prendra la valeur 0 et renverra 1.

    De même pour $rand= 1 : $rand vaudra 1 et l'opération renverra 1.

    Pour comparer il faut mettre deux signes = ...
    if($rand==0){

    echo
    $gain = 'ticket 1';

    Que veux-tu faire ? Encore une fois l'opération va renvoyer vrai, et caq revient à écrire
    echo true;

    Tu veux que $gain prenne quelle valeur ? Tu veux afficher quoi ?

    Etc etc.
    1. Bonsoir,
      donc, que je mette les conditions avec if($rand=0,5) ne sert strictement à rien. tout du moins pas comme je l'ai mis ?

      Pour ticketair c'est le ticket lui même. Là ou est donc enregistré l'activité du ticket.

      Quant à l'echo, je veux que si rand = 0 et bien le gain soit le ticket 0 et ainsi de suite jusqu'au ticket 4.

      Je suis peut-être parti dans la mauvaise direction pour mon code. Je vais revoir ça.

      Merci, Amicalement, Yann.
      1. Salut,

        Comme tu l'as mis, cela ne sert pas à rien mais ce n'est pas ce que tu souhaites faire. Il faut mettre deux =, comme cela :

        if ($rand==0) {
        
        }

        Et alors cela fonctionnera.

        Pour $ticketair, je ne comprends pas... De quelle type est cette variable ? Nombre ? Texte ? Flux ? Si tu ne sais pas, envoie-nous le bout de code où tu déclares cette variable.

        Tu ne peux pas combiner deux opérations, dumoins pas celles-ci. Tu dois séparer l'affection de la valeur de $gain et l'echo.

        $gain = "ticket 4";
        echo $gain;

        Et ton code fonctionnera.

        Maintenant, il faut avouer que c'est bien long et répétitif : tu peux faire plus simple. Oublie les conditions. Tu as la valeur prise au hasard avec mt_rand :

        $rand = mt_rand(0, 5);
        $gain = "ticket $rand";
        echo $gain;

        C'est déjà plus court, non ?

        Par la suite, attention!, tu te trompes pas mal : ta fonction n'est jamais appelée, $gain n'est pas une superglobale, $gain est utilisé avant sa déclaration.

        Mais tout cela, c'est simplement du PHP lui-même... Où as-tu appris à programmer ?

        function hasard(){
        // Traitement
        return $gain;
        }
        
        $gain = hasard();
        echo $gain;

        Dans ce cas, les deux $gain n'auront pas de lien direct. $gain est dans la fonction hasard(), et y reste. C'est une variable locale, qui appartient à la fonction. Le deuxième $gain est déclaré en dehors de la fonction, et fonctionne comme si le premier n'existait pas.

        J'espère t'avoir aidé. Si tu as des questions, n'hésite pas ;-)